【问题标题】:Making a rotating and transforming object in VTK在 VTK 中制作旋转和变换对象
【发布时间】:2014-10-12 16:30:35
【问题描述】:

我正在尝试制作一个旋转立方体,它会改变它的比例(在每个轴上)直到 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 $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

我真的不知道如何正确地沿比例进行平滑过渡并在每次循环迭代时渲染该变化。有任何想法吗?谢谢

【问题讨论】:

    标签: tcl transform scale vtk


    【解决方案1】:

    您最有可能遇到的问题是您的代码太快了。当你画完一帧时,你已经在推进下一帧了。慢一点! (如果您使用普通 Tk 制作 2D 图形动画,这将是一个大问题。)

    您希望在每个步骤之间运行一段时间的事件循环。也许像这样(您可能需要调整2,而"yes" 只是一些无关紧要的任意值;重要的是您正在设置GoOn 变量导致vwait 停止服务事件循环):

    after 2 set GoOn "yes"
    vwait GoOn
    

    把它放在这些行之后:

    renWin Render
    [ren GetActiveCamera] Azimuth 1
    

    既然您已经为动画真正被用户感知提供了一点时间,那么您应该有一些更容易被视为平滑的东西。您不必每秒处理那么多帧,大脑就可以判断动作是否流畅:电影使用 24 帧,电视使用 30 帧(在美国)或 25 帧(在欧洲) …

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-29
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 2015-02-05
      相关资源
      最近更新 更多