打开主菜单

Ballance Wiki β

更改

影子坐标

添加457字节2020年9月13日 (日) 13:57
增加原理
== 影子的实质 ==
影子坐标的实质就是一个VX_MOVEABLE_FLAGS中被遗弃的标识。在Virtools 影子坐标的实质就是一个VX_MOVEABLE_FLAGS中被遗弃的标识(VX_MOVEABLE_RENDERCHANNELS)。在Virtools 2.1中起作用,而在Virtools 3.5中完全不可见。5中完全不可见。更准确的来说,此标识在Virtools 2.5到Virtools 3.0的升级中被新功能替换。
这种实现方式也注定了不可能通过Virtools 被遗弃的标识,VX_MOVEABLE_RENDERCHANNELS,在文档中做了如下描述:<code>(User) If not set, additional material channels on the mesh used by this entity won't be rendered</code>。即其控制了是否渲染额外的Material Channels。Ballance中的影子是通过自定义Building Block:TT Shadow进行实现。而通过观察TT Shadow的反汇编代码,其与Virtools SDK附带的示例代码中的SimpleShadow极为相似,而通过阅读SimpleShadow的代码可以得知,阴影的实现是通过在对应物体的Mesh上添加Material Channel来进行实现的。因此,如果不启用VX_MOVEABLE_RENDERCHANNELS,影子所属的Material Channel将不会被渲染,呈现影子消失的状态。 属性被丢弃也注定了不可能通过Virtools 3.5的原生操作来实现自主添加影子,只能被动地借用原版具有影子坐标的物体(CK3dEntity)来实现影子。但是可以通过{{zh|VSL}}和Virtools SDK编写的脚本与插件来实现。
使用Virtools SDK编写插件为物体加上影子的代码可以参见下文(C++):
else { f = f+8;}
ent.SetMoveableFlags(f);</pre>
 
此方法可稳定使物体具有影子坐标。虽然这种通过添加标识的方法没有任何理论基础(没有Virtools 2.1文档,无法得知此数值的含义,以及没有通过翻阅代码获得有关此数值的用途),但是因为在实践中可稳定复现,并且较之前替换原版关卡的Mesh而言更加具有科学性。因此此假设当成为经验公式。
1,136
个编辑