Virtools 进阶教程—Click To Rotate And Scale点击缩放 - Virtools
Click To Rotate And Scale
Instruction:
本范例利用Mouse点选物体,再用拖曳的方式使物体旋转或缩放尺寸;物体的旋转会随着拖曳方向的不同而异,而尺寸变化的情形也相同。
Building Blocks:
(a) Mouse Waiter-Controllers/Mouse/Mouse Waiter
(b) Get Mouse Position-Controllers/Mouse/Get Mouse Position
(c) 2D Picking-Interface/Screen/2D Picking
(d) Switch On Parameter-Logics/Streaming/Switch On Parameter
(e) Binary Memory-Logics/Streaming/Binary Memory
(f) While-Logics/Loops/While
(g) Identity-Logics/Calculator/Identity
(h) Send Message-Logics/Message/Send Message
(i) Has Attribute-Logics/Attribute/Has Attribute
(j) Key Waiter-Controllers/Keyboard/Key Waiter
(k) Parameter Selector-Logics/Streaming/Parameter Selector
(l) Text Display-Interface/Text/Text Display
(m) Set Attribute-Logics/Attribute/Set Attribute
(n) Scale-3D Transformations/Basic/Scale
(o) Wait Message-Logics/Message/Wait Message
(p) Get Message Data-Logics/Message/Get Message Data
(q) Rotate-3D Transformations/Basic/Rotate
(r) Set As Active Camera-Cameras/Montage/Set As Active Camera
(s) Camera Orbit-Cameras/Movement/Camera Orbit
制作构想:
将Mouse所点选的坐标位置输入Building Blocks-2D Picking,可以得到所选择的物体(Rock或Box),再利用Building Blocks-Key Waiter选择物体旋转或是尺寸缩放。
在物体的旋转方面,利用Mouse移动时的相对坐标(X, Y),再经由算法分别取得物体在X轴与Y轴的旋转角度值;尺寸缩放方面,利用Mouse移动时X方向的变化量再经由算法取得尺寸的缩放值。
其中,物体旋转的方向和尺寸的缩放均会随着拖曳方向而有所不同,充分表现了Mouse操控与物体变化间的互动性。
制作步骤:
(a) Mouse
Mouse Waiter:等待讯息的传入,在Edit Setting中只需勾选 Left Button Down 与 Left Button Up ,如图标。
Get Mouse Position:当 Left Button Down 讯息传入后,即得到Mouse Cursor的坐标位置Position(X, Y),其中X值作为一个快捷方式X0且与坐标位置Position由pOut输出。
2D Picking:由pIn输入Mouse Cursor 2D的坐标位置Position而得到一物体,并于pOut输出该物体;Window Relative-False。
Switch On Parameter:由pIn输入快捷方式Action(rotate或scale),如果Action为参数1-rotate,则由Out-1输出至Behavior Graph-Rotate Object;如果Action为参数2-scale,则由Out-2输出至Behavior Graph-Scale Object。
Rotate Object:当 Left Button Up 讯息传出后,则由Input1输入Behavior Graph-Rotate Object。
Binary Memory:判断讯息,如果由In1输入,则由pOut输出State
Memory-True;如果由In2输入,则由pOut输出State Memory-False。
While:判断讯息,如果由pIn输入Condition-True,则执行Loop。