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

图4.21 为火焰制作的实体及位置设置

将此多面物体中心点对齐世界原点并导出,配置此多面物体的DT物体信息如下:

...

//火焰DT物体

[DTMod8]

texnum = 11

mtl=model\LearnW3D\Chapter1\DT\huo\mod.mtl

mod=model\LearnW3D\Chapter1\DT\huo\mod.obj

tex1=model\LearnW3D\Chapter1\DT\huo\1.bmp

tex2=model\LearnW3D\Chapter1\DT\huo\2.bmp

tex3=model\LearnW3D\Chapter1\DT\huo\3.bmp

tex4=model\LearnW3D\Chapter1\DT\huo\4.bmp

tex5=model\LearnW3D\Chapter1\DT\huo\5.bmp

tex6=model\LearnW3D\Chapter1\DT\huo\6.bmp

tex7=model\LearnW3D\Chapter1\DT\huo\7.bmp

tex8=model\LearnW3D\Chapter1\DT\huo\8.bmp

tex9=model\LearnW3D\Chapter1\DT\huo\9.bmp

tex10=model\LearnW3D\Chapter1\DT\huo\10.bmp

tex11=model\LearnW3D\Chapter1\DT\huo\11.bmp

...

再配置火焰DT物体对应的PT物体,配置信息如下:

...

//火焰PT物体

7x=129.911

7y=682.781

7z=-748.033

7ShowTip=0

7type=8

7SelMode=0   

7ShowOnGV=0

...

此配置信息中,x、y和z为3dsmax中的火焰位置。这里没有设置AbsPos配置项(此项默认为0),即位置不是绝对位置,而是加上场景偏移后的位置。注意:一般情况下除动态物理物体控制物体,其他PT物体的位置都不应该是绝对位置,因此有可能场景偏移存在。如果场景偏移不存在,是否指定都没有影响。type指定此PT物体对应的DT物体编号,火焰DT物体为8号。

这样火焰就模型可以在场景中渲染出来了,但是在4.16节中,我们已经知道在默认情况下RealOnGV为1即默认是不透明渲染,所以我们应显式地指定RealOnGV=0,这样就可以以透明方式进行渲染。随后通过4.16节中提到的透明物体基础颜色设置我们想要的透明颜色缩放和透明度,添加设置项如下,这里设置透明颜色的缩放为1.0,即不缩放保持原始颜色,设置透明度为0.95,即5%的透明度,这样火焰将呈现轻微的透明。

...

7DTModVirtualColR=1.0

7DTModVirtualColG=1.0

7DTModVirtualColB=1.0

7DTModVirtualColA=0.95

...

在设置完透明参数后,我们还需要了解三个重要配置项:

  1. DTModVirtualCol:用于指定是否使用指定的透明参数,默认为1,即使用。当为1时,使用DTModVirtualColR、DTModVirtualColG、DTModVirtualColB和DTModVirtualColA设置此物体的透明参数。当为0时,只使用引擎系统默认的透明参数(为0的情况很少使用)。
  2. DTModMode:用于指定此物体的透明方式,默认为1即黑色透明模式。引擎支持三种透明模式:

0号模式-普通透明模式。在这种方式下此透明物体将通过自身的透明度和后面物体的透明度进行混合,DTModVirtualColA用于控制总体透明度。

1号模式-黑色透明模式。在这种方式下,此透明物体的颜色直接与后面物体的颜色相加进行混合,那么此物体颜色越黑的区域透明度越高,DTModVirtualColA用于控制总体透明度。

2号模式-灰度透明模式。在这种方式下,此透明物体贴图的每个像素的灰度值将作为此像素的透明度,并通过此透明度和后面物体的透明度进行混合,DTModVirtualColA用于控制总体透明度。

引擎还支持使用PBR材质中的透明贴图。透明贴图是一种专门用于控制像素透明度的贴图,用于进行表面精细化的透明处理。我们将在高级篇进行PBR材质的介绍。

  1. DTModSpeed:用于指定此物体的多贴图切换速度(或间隔时间),以毫秒ms为单位,默认间隔为50ms。若texnum字段指定了多个贴图时,引擎会为此DT物体自动切换贴图,使用此配置项控制切换速度(间隔)。在本例中,此项设置越大,火苗变化越慢,反之越快,这里我们使用默认的50ms切换速度,因为无需显性指定此配置项。

图4.22 三种不同透明模式的透明表现

图4.22从左到右的竖列依次展示了普通透明、黑色透明和灰度透明的对比效果,上排是DTModVirtualColA为1.0的效果,下排是DTModVirtualColA为0.5的效果。通过运用不同的透明模式,可以满足灵活度更高的透明需求。通过图上三种透明形式的展示,我们就会知道若要将图4.21中火焰旁的黑色区域完全透明掉,首先需要黑色区域”足够黑”,可以简单通过PS实现,第二黑色区域的灰度也是最低的,因为火焰的透明形式可以选黑色透明或灰度透明,而黑色透明会将后面物体的颜色也加上,因此火焰会显得更亮一些,最终我们选择黑色透明方式(读者也可以改变为灰度透明模式以对比效果差异),刚好也是DTModVirtualCol的默认方式,因此无需额外显式声明DTModVirtualCol。运行程序后的雕塑和火焰效果如下所示:

图4.23 雕塑和火焰变化效果

本节演示视频

通过网盘分享的文件:W3D引擎游戏开发学习资料
链接: https://pan.baidu.com/s/1mm5f9nDzkT3KlFYQscJBoQ?pwd=1234 提取码: 1234

公众号:W3D引擎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值