W3D引擎游戏开发----从入门到精通【19】

12VirtualColB=1.0

12VirtualColA=0.5

...

在使用场景物体表示透明物体时,还需要了解两个重要配置项:

  1. VirtualCol: 用于指定是否使用指定的透明参数,默认为0,即不使用,此时将使用引擎默认的透明参数(这种设置很少用)。当为1时,使用VirtualColR、VirtualColG、VirtualColB和VirtualColA设置此物体的透明参数。
  2. 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物体导出。对于这两个按钮物体,导出方式应注意以下问题:

  1. 如果将按钮物体居中到世界原点导出,那么需要在对应封面物体的偏移x、y和z填写3dsmax中此物体的位置,如果直接在3dsmax中导出,无需再设置其偏移位置(因为x、y和z默认为0)。
  2. 可以将两个按钮分别导出为两个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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值