初步了解VTK装配体

2024-09-08 07:28
文章标签 初步 了解 装配 vtk

本文主要是介绍初步了解VTK装配体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VTK还不太了解,根据资料,

vtk.vtkAssembly 是 VTK库中的一个重要类,允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。

import vtk
import math
from vtk.util.colors import *filenames = ["cylinder.stl","sphere.stl","torus.stl"]
dt = 1.0
renWin = vtk.vtkRenderWindow()
actor  = list()
joint1 = vtk.vtkAssembly()  
joint2 = vtk.vtkAssembly()
joint3 = vtk.vtkAssembly()class MyInteractor(vtk.vtkInteractorStyleTrackballCamera):def __init__(self,parent=None):self.AddObserver("CharEvent",self.OnCharEvent)self.AddObserver("KeyPressEvent",self.OnKeyPressEvent)def OnCharEvent(self,obj,event):passdef OnKeyPressEvent(self,obj,event):global anglekey = self.GetInteractor().GetKeySym()if(key == "Left"):joint1.RotateY(-dt)      if(key == "Right"):joint1.RotateY(dt)if(key == "Up"):joint2.RotateY(-dt)           if(key == "Down"):joint2.RotateY(dt)if(key == "a"):joint3.RotateY(-dt)           if(key == "d"):joint3.RotateY(dt)renWin.Render()returndef LoadSTL(filename):reader = vtk.vtkSTLReader()reader.SetFileName(filename)mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(reader.GetOutputPort())actor = vtk.vtkLODActor() actor.SetMapper(mapper)return actor  def CreateScene():ren = vtk.vtkRenderer()renWin.AddRenderer(ren)iren = vtk.vtkRenderWindowInteractor()iren.SetRenderWindow(renWin)style = MyInteractor()style.SetDefaultRenderer(ren)iren.SetInteractorStyle(style)for id, file in enumerate(filenames):actor.append(LoadSTL(file))r = vtk.vtkMath.Random(.4, 1.0)g = vtk.vtkMath.Random(.4, 1.0)b = vtk.vtkMath.Random(.4, 1.0)actor[id].GetProperty().SetDiffuseColor(r, g, b)actor[id].GetProperty().SetDiffuse(.8)actor[id].GetProperty().SetSpecular(.5)actor[id].GetProperty().SetSpecularColor(1.0,1.0,1.0)actor[id].GetProperty().SetSpecularPower(30.0)joint1.AddPart(actor[0])joint1.AddPart(joint2)joint2.AddPart(actor[1])joint2.AddPart(joint3)joint3.AddPart(actor[2])joint2.SetOrigin(100, 0, 0)  # initial elbow joint positionjoint3.SetOrigin(200, 0, 0)  # initial wrist joint positionren.AddActor(joint1)ren.GradientBackgroundOn()ren.SetBackground(.1, .1, .1)ren.SetBackground2(0.8,0.8,0.8)renWin.SetSize(600, 600)iren.Initialize()iren.Start()if __name__ == "__main__":CreateScene()

这是网上的代码,它可以对多个STL文件进行装配;我随便找的stl文件,先看一下初步效果;如果有正确的多个文件,就能装配自己的复杂模型,和模型动画;

开始它定义了3个变量,

joint1 = vtk.vtkAssembly()  
joint2 = vtk.vtkAssembly()
joint3 = vtk.vtkAssembly()

joint是关节的意思,定义了3个关节;

一开始出来是这样的,

打左右键三个会一起动,打上下键其中一个不动,另2个动,就变成如下;

 打a键其中一个动,另两个不动,就变为如下;

 

先了解一下装配体的概念; 

这篇关于初步了解VTK装配体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147488

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

PHP: 深入了解一致性哈希

前言 随着memcache、redis以及其它一些内存K/V数据库的流行,一致性哈希也越来越被开发者所了解。因为这些内存K/V数据库大多不提供分布式支持(本文以redis为例),所以如果要提供多台redis server来提供服务的话,就需要解决如何将数据分散到redis server,并且在增减redis server时如何最大化的不令数据重新分布,这将是本文讨论的范畴。 取模算法 取模运

初步学习Android的感想

之前在学习java语言的时候就经常听说过Android这门语言,那时候感觉Android有些神秘感,再加上Android是用来开发移动设备的一门语言,所以一直对Android抱有一种兴奋的心情。 在我开始接触 Android之后,感觉超好玩,因为可以在自己的手机设备上开发一些我喜欢的小应用,再想想之前说学习Android应该会很难,但是如果你真的接触了,而且有JAVA的功底,我想学习Androi

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

Java了解相对较多!

我是对Java了解相对较多,而对C#则是因工作需要才去看了一下,C#跟Java在语法上非常相似,而最初让我比较困惑的就是委托、事件部分,相信大多数初学者也有类似的困惑。经过跟Java的对比学习,发现这其实跟Java的监听、事件是等同的,只是表述上不同罢了。   委托+事件是观察者模式的一个典型例子,所谓的委托其实就是观察者,它会关心某种事件,一旦这种事件被触发,这个观察者就会行动。   下

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

读Spring实战(第四版)概括—装配Bean

很久很久以前读过Spring实战(第三版),因为第三版和第四部差异还是特别明显的,在整体思想上有了比较重大的改变,比如用注解和JavaConfig替换Xml以及现在非常火热的Springboot在书的最后也有提到。OK,开始看书,书本的第一章讲了一下Spring存在的目的(简化Java开发)和Spring的功能,以及Spring3->Spring4增加了哪些功能,那我就从第二章开始概括本书,以给我

【Spring Boot】 SpringBoot自动装配-Condition

目录 一、前言二、 定义2.1 @Conditional2.2 Condition2.2.1 ConditionContext 三、 使用说明3.1 创建项目3.1.1 导入依赖3.1.2 添加配置信息3.1.3 创建User类3.1.4 创建条件实现类3.1.5 修改启动类 3.2 测试3.2.1 当user.enable=false3.2.2 当user.enable=true 3.3

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置(误~🙏🙏)三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口@SpringBootApplication3、@SpringBootConfiguration的@Configuration4、@EnableAutoConfiguration的@AutoConfigurationPackage和@Import5、Auto