Tuesday, February 06, 2007

The Making of Blend Dsqs

Author: 蛋蛋

 三、简单的Blend动作制作实例

制作一个Blend Sequence:look用于与Cycle Sequence:root或Cycle Sequence:forward的合成。

制作Blend动作前的准备

在制作Blend动作之前首先需要完成动作主体的静态MAX模型,并确认能够正确导出为DTS格式。该MAX模型的0号帧就是我们Blend动作中的参考帧。其次,完成Cycle Sequence:root的制作,并确认能够正确导出为DSQ文件格式。

制作Blend动作的具体步骤

1.打开 人物原型.max 文件,这是一个不包括任何动作的静态模型;

2.载入bip骨骼动画“举枪待机.bip”;这时人物模型已经加载了0~50帧的Cycle Sequence待机动画。我们的Blend Sequence:look动作都是以0号帧来变化出来的;

3.导出静态模型DTS和待机动作root.dsq;

4.将Max的0号帧的所有骨骼的状态,复制到某两个空白帧上,这里把0号帧复制到了60号帧,70号帧;

5.将60号帧的双手和头部的节点向上平移和转动使人物呈抬头向上举枪状;
注意:在此过程中保持其他的节点与0号帧的静止。

6.将70号帧的双手和头部的节点向下平移和转动使人物呈低头向下举枪状。
注意:在此过程中保持其他的节点与0号帧的静止。

7.建立动作虚拟体,钩上Blend Sequence属性,去掉非Cycle Sequence。

8.选择导出范围(60~70号帧)

9.以look.dsq名导出。 

四、用Torque ShowTool查看动作合成结果

作完Blend动作之后,可以在ShowTool中间查看合成的结果,方法是:首先载入dts和两个需要进行混合的dsq。

1.打开左侧的Thread Control面板;
2.增加一个线程;
3.Thread0和Thread1分别对应两个不同的动作,如果是循环动作就点击播放;
就可以在主窗口看到合成后的结果。


ShowTool中的显示,和程序中的调用在游戏中显示结果是一致的。

五、脚本中Blend动作的使用

装载武器时,武器的一个属性customLookAnim 会自动被程序调用与root,run,side,back等运动状态进行混合。 customLookAnim为空时,look动作会被使用。拿剑时,customLookAnim = "h1root"; 拿十字弓则是默认的"look"

1function WeaponImage::onMount(%this,%obj,%slot) 2{ 3 PlayerBody.renderFirstPerson = false; 4 // Images assume a false ammo state on load. We need to 5 // set the state according to the current inventory. 6 if (%obj.getInventory(%this.ammo)) 7 %obj.setImageAmmo(%slot,true); 8 9 if (%this.customLookAnim !$= "") 10 { 11 %obj.setArmThread(%this.customLookAnim); 12 } 13 else 14 { 15 %obj.setArmThread("look"); 16 } 17} 18

这些动作序列的命名都是在脚本datablock TSShapeConstructor(XXXXXDts)中声明好的。

关于近战武器剑的使用,以后有机会我将会再添加。

The end.  Thank you for your patience!  Hehe.

 

Thursday, February 01, 2007

The Making of Blend DSQs

Author: 蛋蛋

一、 术语解释

DTS和DIF
DTS是Torque引擎中的一种模型文件格式。它和另一种Torque引擎DIF格式的区别在别:
1.DIF是通过map2dif工具,从文本文件map中编译而来;DTS是在一些3D建模软件如3ds max和milkshape等,建立并导出。
2.DIF可以进入物体的内部,碰撞检测时使用的是其外部轮廓;DTS碰撞检测使用的是脚本程序中设定的bounding box。
3.DIF和Terrain一样,只能用作Client object。Client Object在载入场景时,就生成好了,以后任何的事件都无法改变它的任何属性。
DTS即可作为Server Object也可以作为Client object。Server object可以用于动态的生成,改变属性或消灭对象。

DSQ
DSQ是Torque引擎中用于记录模型动作的文件。DSQ通常是一个独立于DTS的动作序列文件,但也可以一个DTS中包括多个动作序列。鉴于
脚本调用动作的方便,每个DSQ只能记录一个动作序列。
DSQ按属性:可以分为,Cycle Sequence(循环动作序列),Blend Sequence(可混合的动作序列)。

Blend DSQs
Blend用于与其他Sequence进行合成,在程序中进行混合,显示出新的动作。Blend属性具有相对性。Blends只记录在动作作用的过程中节点与参照帧之间发生的相对位置变化,而不是绝对的坐标。这部分将是本教程的重点。

二、带有Blend属性的DSQ制作和导出

参照帧的设置
参照帧是blend动作序列对照的基础,在3ds Max中制作出的同一个动作,如果参照帧不同,导出的Blend Sequence是不同的。Max文件中的第一帧,即0号帧,是默认的参照帧。
注意:因为当前Max2Dts插件设置其他帧作为blend的参照帧导出时,会有严重错误,所以目前还无法设置其他参照帧,只能使用默认参照帧0号帧作为Blend动作序列的参照帧。

导出设置
如果要导出一个Blend动作,在建立动作虚拟体的时候有个Blend Sequence的复选框要钩上,一般Blend动作都是非循环动作,所以循环选项要去掉。如图BlendOption所示: