如果想要在3D场景中创建类似透视和光影这样的炫目效果,那么就不能忽略物体间的“添加混合”特性。许多顶级游戏经常利用这一特性来增强相应范围内图形的表现方式,例如武器的发射和爆炸。虽然许多Texture的附加选项都能够模拟各种材质的混合,但是Shockwave 3D的当前版本对此并不支持。
幸运的是,我们可以通过另一种方法来“实现”这一特性。由于得到了大多数渲染引擎的支持,本文所描述的这项技巧已经被许多商业程序所使用,而你也只需对样本影片中的“additive blending”行为进行少许改动,就能够将其使用在自己的Shockwave 3D世界中。
观看演示
使用方法
首先,把“additive blending”行为复制到自己的影片中,然后将其拖拽到相应的3D角色上。
如果现在播放影片,将不会有任何事情发生,因为并没有标记相应的Shader。我们应该给需要使用的Shader重命名,注意其名称必须包含“Additive”字样,这样才能够被行为识别并转换成为“additive blending”。
现在播放影片,检测其能否正常工作。如果不行的话,先检查一下样本影片能否正常工作。如果还不行的话,非常不幸,你的机器可能不支持这项技巧。
工作原理
虽然Shockwave 3D的当前版本并不支持物体间的“添加混合”,但却支持Shader Texture层之间的“添加混合”。因此为了能够实现物体间的“添加混合”,我们可以使用一个包含alpha通道的Texture,同时保持包含需要混合的Texture的那一层下为空。
由于许多3D图形卡都支持多通道Textrue,为了实现上述功能,应该使用空白Texture,以利于低层Shader的显示;其效果取决于3D图形卡能够同时处理的Texture的数目,并可以根据渲染模式进行调整。
下面的Lingo代码用于检测3D图形卡能够处理的Texture的数量,此命令的含义请参考程序里的相关注释。
getrendererServices (). gethardwareinfo ()[ # textureUnits]
补充说明
1. 这项技巧在某些图形卡上无法正常工作(例如DirectX 7模式下的Radeon 9700)。在这些图形卡上将会看到红色Texture的效果非常不好。为了避免这一点,应该确保alpha通道为“fallback”状态,并给图形卡提供一个能够使用的alpha通道(至少能够提供类似的效果)。注意,这项技巧支持非正式的“nextShader”命令。
2. 由于使用的是“Texture Reference”而非“Shader Reference”,因此这项技巧无法与粒子系统一起使用。
3. 因为需要3D图形卡在屏幕上进行额外的绘制,所以影片本身的速度会受到一些影响。
4. 由于Shockwave 3D本身对半透明物体的处理问题,这项技巧需要渲染一些额外覆盖物。如果Shockwave的下一次更新能够对半透明物体提供更好的支持,这项技巧将能够实现更为复杂的可视化效果。