Tcl 在VTK中制作旋转和变换对象
我试图制作一个旋转立方体,它改变它的比例(在每个轴上)直到180度,然后慢慢地缩小 到目前为止,我得到了这个:Tcl 在VTK中制作旋转和变换对象,tcl,transform,scale,vtk,Tcl,Transform,Scale,Vtk,我试图制作一个旋转立方体,它改变它的比例(在每个轴上)直到180度,然后慢慢地缩小 到目前为止,我得到了这个: package require vtk package require vtkinteraction set xLength 2 set yLength 2 set zLength 2 vtkCubeSource cube cube SetXLength $xLength cube SetYLength $yLength cube SetZLength $z
package require vtk
package require vtkinteraction
set xLength 2
set yLength 2
set zLength 2
vtkCubeSource cube
cube SetXLength $xLength
cube SetYLength $yLength
cube SetZLength $zLength
cube SetCenter 2 2 2
vtkPolyDataMapper cubeMapper
cubeMapper SetInput [cube GetOutput]
vtkActor cubeActor
cubeActor SetMapper cubeMapper
[cubeActor GetProperty] SetColor 1 0.45 0
[cubeActor GetProperty] SetDiffuse 0.9
[cubeActor GetProperty] SetSpecular 0.45
[cubeActor GetProperty] SetSpecularPower 20
vtkRenderer ren
vtkRenderWindow renWin
renWin AddRenderer ren
vtkRenderWindowInteractor iren
iren SetRenderWindow renWin
iren AddObserver UserEvent {wm deiconify .vtkInteract}
iren Initialize
wm withdraw .
ren AddActor cubeActor
ren SetBackground 0.7 0.7 0.7
renWin SetSize 900 900
for {set i 0} {$i < 360} {incr i} {
if {[expr $i % 2] == 0} {
set xLength 3
set yLength 3
set zLength 3
} else {
set xLength 1
set yLength 1
set zLength 1
}
renWin Render
[ren GetActiveCamera] Azimuth 1
}
vtkCommand DeleteAllObjects
软件包需要vtk
包需要vtkinteraction
设置X长度2
设置长度为2
设置长度2
vtkCubeSource多维数据集
立方体设置x长度$x长度
多维数据集长度$yLength
立方体设置长度$zLength
立方体集中心2
vtkPolyDataMapper立方映射器
cubeMapper SetInput[多维数据集GetOutput]
电压互感器立方电容器
cubeActor集合映射器cubeMapper
[cubeActor GetProperty]SetColor 1 0.45 0
[cubeActor GetProperty]设置漫反射0.9
[cubeActor GetProperty]设置特殊值0.45
[cubeActor GetProperty]设置特殊功率20
任克伦
伦温
伦温·阿德伦
VTKrender窗口交互器iren
艾琳·塞特伦德温多·伦温
iren AddObserver用户事件{wm deiconify.vtkInteract}
iren初始化
我退出。
加法器立方电容器
任正非退步0.70.70.7
renWin设置尺寸900
对于{set i 0}{$i<360}{incr i}{
如果{[expr$i%2]==0}{
设置X长度为3
设置长度为3
设置长度为3
}否则{
设置X长度为1
设置长度为1
设置长度为1
}
伦文渲染
[ren GetActiveCamera]方位角1
}
vtkCommand DeleteAllObjects
我真的不知道如何正确地使它沿着比例平滑过渡,并在每个循环迭代中渲染这些变化。有什么想法吗?谢谢您最可能遇到的问题是代码太快。当你画出一帧的时候,你已经在推进下一帧了。慢点(如果使用纯Tk设置2D图形的动画,这将是一个同样大的问题。) 您希望在每个步骤之间运行一点事件循环。可能是这样的(您可能需要调整
2
,而的“yes”
只是一些无关紧要的任意值;重要的是您正在设置GoOn
变量,导致vwait
停止为事件循环提供服务):
把它放在这几行后面:
renWin Render
[ren GetActiveCamera] Azimuth 1
现在,您已经为用户实际感知动画留出了一点时间,您应该有更容易看到的平滑动画。你不需要一秒钟处理那么多帧,大脑就能判断动作是否平稳:电影是24帧,电视是30帧(美国)还是25帧(欧洲)
renWin Render
[ren GetActiveCamera] Azimuth 1