12VirtualColB=1.0
12VirtualColA=0.5
...
在使用场景物体表示透明物体时,还需要了解两个重要配置项:
- VirtualCol: 用于指定是否使用指定的透明参数,默认为0,即不使用,此时将使用引擎默认的透明参数(这种设置很少用)。当为1时,使用VirtualColR、VirtualColG、VirtualColB和VirtualColA设置此物体的透明参数。
- VirtualDrawMode: 用于指定此物体的透明方式,默认为1即黑色透明模式。引擎支持三种透明模式:0号模式-普通透明模式、1号模式-黑色透明模式和2号模式-灰度透明模式,这三种模式的含义与DTModMode完全相同。
最后,为场景物体表示的这个按钮添加配置项:
...
12CullFaceMode=1
12VirtualDrawMode=0
12VirtualCol=1
...
(4)创建地面上的两个闪光标
可以在地面上创建两个方形物体,用场景物体或PT物体表示这两个物体均可,再通过程序不断设置此物体的基础颜色,即可实现闪烁。代码具体见本节示例代码,这里不再赘述。
(5)屏幕上出现两个按钮
我们还是用地面上的两个按钮作为DT基物体,只不过这次按钮要在屏幕上显示。我们首先这屏幕上摆放好这两个按钮,如下图所示:
图4.26 按钮封面物体的放置位置
图中,我们将两个按钮放在屏幕四边形稍微靠后一点(Z=-0.113),这样可以确保按钮不会被渲染近平面(RenderNearPlane=0.1见2.4节)裁剪掉(因为abs(Z)<RenderNearPlane)。然后我们可以开始将两个按钮的DT物体导出。对于这两个按钮物体,导出方式应注意以下问题:
- 如果将按钮物体居中到世界原点导出,那么需要在对应封面物体的偏移x、y和z填写3dsmax中此物体的位置,如果直接在3dsmax中导出,无需再设置其偏移位置(因为x、y和z默认为0)。
- 可以将两个按钮分别导出为两个DT物体(原位置导出或原点对齐导出),再对这两个DT物体分别配置对应的封面物体项。如果这两个按钮的模型外观和贴图完全一样,也可以只导出一个按钮DT物体,再由这个DT物体派生出两个封面物体。
因为两个按钮的贴图不一样,所以我们将两个按钮在3dsmax原始位置上直接导出为DT物体并配置,然后为这两个DT物体配置封面物体,配置项如下。
...
2DisableLight=1
2type=10
2RealOnGV=0
2DTModMode=0
2DTModVirtualColR=1.0
2DTModVirtualColG=1.0
2DTModVirtualColB=1.0
2DTModVirtualColA=0.9
2CullFaceMode=1
3DisableLight=1
3type=11
3RealOnGV=0
3DTModMode=0
3DTModVirtualColR=1.0
3DTModVirtualColG=1.0
3DTModVirtualColB=1.0
3DTModVirtualColA=0.9
3CullFaceMode=1
...
两个封面物体的DT基物体分别为10号和11号,这两个封面物体都使用了背面剔除,其中DTModMode、DTModVirtualColR、DTModVirtualColG、DTModVirtualColB和DTModVirtualColA的含义与PT物体中的用法完全一致,同样也可以使用DTModSpeed设置此封面物体切换贴图的速度,使用DTModVirtualCol设置是否使用自定义的透明参数。
4.19 物体旋转方式设置
雕塑上方火燃起后,空中出现一根蜡烛,点击地面上的按钮可以绕不同轴旋转此蜡烛,直到让雕塑上的火点燃蜡烛。最后在屏幕上出现一把钥匙,点击屏幕上的按钮可以让此钥匙绕不同轴旋转。在实现这些场景要求之前,有必要了解一下不同物体的旋转配置方法。
- 场景物体的旋转
场景物体的旋转配置使用配置项ra、rx、ry和rz表示:
rx:此物体的旋转轴x分量,默认为0.0
ry:此物体的旋转轴y分量,默认为0.0
rz:此物体的旋转轴z分量,默认为0.0
ra:此物体的旋转角度,默认为0.0
它表示让此物体绕旋转轴旋转指定的旋转角度。
图4.27 不同导出位置时的旋转效果
这里需要注意的是,旋转轴中心点是此模型导出时的世界原点,因此这也就是为什么当一个物体需要自旋时,需要将此模型的中心点与世界原点对齐后再导出,如图4.27(a)。如果不对齐到世界原点导出,那么此物体将不是绕自身的中心点自旋,而是绕中心点在世界原点的旋转轴自旋,如图4.27(b)。