如何使用Python中的Mayavi在tvtk渲染场景中旋转演员?
我玩了一点如何使用Python中的Mayavi在tvtk渲染场景中旋转演员?,python,vtk,mayavi,mayavi.mlab,Python,Vtk,Mayavi,Mayavi.mlab,我玩了一点Mayavi,尤其是tvtk,但我很难找到一些示例,其中glyph放置在场景中的方向与默认方向不同 在此基础上,我准备了两个赛林德,一个红色,一个蓝色 将mayavi.mlab导入为mlab 从tvtk.api导入tvtk 从tvtk.common导入配置输入数据 v=mlab.图() #创建两个圆柱体 cyl1=tvtk.CylinderSource(中心=(0,0,0),半径=1.0,高度=0.5,封顶=True,分辨率=24) cyl2=tvtk.CylinderSource(中
Mayavi
,尤其是tvtk
,但我很难找到一些示例,其中glyph放置在场景中的方向与默认方向不同
在此基础上,我准备了两个赛林德,一个红色,一个蓝色
将mayavi.mlab导入为mlab
从tvtk.api导入tvtk
从tvtk.common导入配置输入数据
v=mlab.图()
#创建两个圆柱体
cyl1=tvtk.CylinderSource(中心=(0,0,0),半径=1.0,高度=0.5,封顶=True,分辨率=24)
cyl2=tvtk.CylinderSource(中心=(3,0,0),半径=1.0,高度=0.5,封顶=真,分辨率=24)
#映射器将它们转换为三维位置
圆柱体_映射器1=tvtk.PolyDataMapper()
配置输入数据(气缸映射器1,气缸1.输出)
cyl1.update()
圆柱体映射器2=tvtk.PolyDataMapper()
配置输入数据(气缸映射器2,气缸2.输出)
cyl2.update()
#给他们分配不同的颜色
p1=tvtk.Property(不透明度=1.0,颜色=(1,0,0))
p2=tvtk.Property(不透明度=1.0,颜色=(0,0,1))
#演员实际上是场景中的对象。
cyl1\u actor=tvtk.actor(映射器=cylinder\u映射器1,属性=p1)
v、 场景。添加演员(cyl1演员)
cyl2\u actor=tvtk.actor(映射器=cylinder\u映射器2,属性=p2)
v、 场景。添加演员(cyl2演员)
#选择视图角度,然后显示地物
视图(90,45,7.5[1.5,0,0])
mlab.savefig(filename='classicles.png')
我想在这里实现的是改变其中一个的方向。无论是通过提供旋转矩阵,还是通过调用方法,只要我能够以某种方式独立地旋转轮廓(而不仅仅是旋转整个场景),这都无关紧要
上面的示例显示
关于之前提出的其他问题,它似乎很有用,但它并没有旋转演员,而是围绕Y轴旋转整个场景。在中也有一个示例,但同样-仅使用默认方向
这个例子并不多,几乎很难相信没有一个例子涉及到交替方向。文档仅说明类和方法遵循它们的C++对应的一些约定。
vtkProp3D
似乎允许在场景中使用与对象方向相关的方法和属性,但我不清楚如何设置它们。<代码> TVTK< /COD>库只是C++的一个包装器,它使得不可能只是<代码>检查< /C>什么属性被接受。
我认为,为了互联网的缘故,也许我们应该准备一个合适的例子,用Mayavi
和tvtk
渲染一个场景,该场景同时允许演员的位置和方向。大多数示例忽略方向并使用球体,因此方向似乎不相关
让我们总结一下
tvtk
渲染场景的适当示例,该示例涉及多个具有不同位置和方向的图示符,我将接受这样的答案CylinderSource
的示例中所看到的,我明确指定了中心位置。这是令人困惑的,因为它应该是确定场景中轮廓位置的演员中心非常感谢 好的,原来
Actor
接受orientation
以度(而不是弧度)为单位的参数。此外,必须在创建角色时指定角色的位置,而不是在创建glyph时指定角色的位置
cyl1\u actor=tvtk.actor(位置=(0,0,0),映射器=cyl\u映射器1,属性=p1,方向=(0,0,90))
呈现
我通过反复试验找到了它。。。Mayavi包中的tvtk
代码非常复杂,因此,通过研究GitHub存储库来找出哪些属性是可以接受的是毫无意义的。此外,您可能会混淆没有方向属性的tvtk
的Actor
。哦,实际上有一个属性名为“property”,所以尝试搜索它,并获得数千个结果,因为单词property
在任何地方都被广泛使用
编辑:
我注意到我已经在字形中心指定了演员的位置