三、说明
接下来将对示例中的每行分别讲解其含义,以及部分数据的获取。
1.
声明一根helper骨
<helper> (此helper骨名称) (它的参考骨名称) (它的父级骨名称) (它的控制骨骼名称)
参考骨:接下来的所有数据将用以参考骨为参考对象所成空间的数据!!详见后文。
控制骨:引擎会实时监测控制骨的角度状态,当其达到某些触发标准,helper骨将会自动开始运动。
骨名称:所有名称都省略ValveBiped.前缀,没有此前缀的骨骼将无法被识别。
例:<helper> Bip01_L_Knee Bip01_L_Thigh Bip01_L_Thigh Bip01_L_Calf
2.
声明初始位置
<basepos> (X) (Y) (Z)
X Y Z为helper骨在参考骨空间下的坐标位置(空间直角坐标系)。这里的数据是你模型在默认状态下,helper骨所处的位置。
一般来说,我们都选取此helper骨所在的父级骨作为参考骨。这时,这些数据可以通过3dsmax方便地查看————在"视图"中选择"父对象",选择相应helper骨,右键相应平移/旋转控制器按钮进行查看。
例:<basepos> 16.508204 -0.097861 -0.034778
3.
声明始态关键帧
<trigger> (R) (C_XR) (C_YR) (C_ZR) (H_XR) (H_YR) (H_ZR) (H_X) (H_Y) (H_Z)
C代表控制骨,C_XR,C_YR,C_ZR代表初始默认状态下C骨的角度取向(当然也是在参考骨的空间中)。数值是欧拉旋转角,单位为度。欧拉角表述顺序不唯一,但vrd里的XR YR ZR数值与3dsmax里默认欧拉旋转控制器的X Y Z值相对应,下同。
H代表helper骨,H_XR,H_YR,H_ZR代表初始默认状态下H骨的角度取向。H_X,H_Y,H_Z为初始默认状态下H骨相对<basepos>位置的偏移值,一般为0。
第一个括号中R代表观测范围,单位为度,数值详见后文。
例:<trigger> 90 0 -0 3.514 0 0 -1.153 0 0 0
4.
声明末态关键帧
<trigger> (R) (C_XR) (C_YR) (C_ZR) (H_XR) (H_YR) (H_ZR) (H_X) (H_Y) (H_Z)
C_XR,C_YR,C_ZR代表你所预设的末状态下C骨的角度取向,称之为C末方向
H_XR,H_YR,H_ZR代表你所预设的末状态下H骨的角度取向,称之为H末方向。H_X,H_Y,H_Z为你所预设的末状态下H骨相对<basepos>位置的偏移值,称为H末位置。
(R)代表观测范围。在骨骼执行任何动画的过程中,引擎实时监测C骨当前的角度方向与C末方向之间的差值是否小于R(观测范围,可视为锥角)。若小于,则引擎将自动把H骨朝着H末方向和H末位移移动。C骨越接近C末方向,H骨就越接近H末方向和H末位置。
你可以利用3dsmax对C骨进行旋转,把它转向可能的末方向,再调整H骨至合适的方向及位置,记录下此时的数据。此时,这些数据就可以用于这一末态关键帧了。请根据骨骼活动范围上限等因素添加合适的R值。
例:<trigger> 90 0 0 90 0 0 45 0 0 0