我目前正在为LWJGL开发Colladae(.dae)加载器,该加载器在一类中加载完整的场景信息。我发现很难解码的元素之一是动画。
所以基本上我希望动画师支持任何类型的动画。现在,它支持矩阵插值,即我从矩阵中提取平移,旋转,比例值并对其进行插值。
我不知道如何实现的一个动画是切线动画。例如 采样器之一具有以下结构
<sampler id="Cube_location_X-sampler">
<input semantic="INPUT" source="#Cube_location_X-input"/>
<input semantic="OUTPUT" source="#Cube_location_X-output"/>
<input semantic="INTERPOLATION" source="#Cube_location_X-interpolation"/>
<input semantic="IN_TANGENT" source="#Cube_location_X-intangent"/>
<input semantic="OUT_TANGENT" source="#Cube_location_X-outtangent"/>
</sampler>
<channel source="#Cube_location_X-sampler" target="Cube/location.X"/>
所以 “ INPUT”不过是我的动画时间(0到1) “输出”不过是我在每个关键帧处的位置 对我来说“插值”始终是线性的,所以我不会读取该数据
“ IN_TANGENT”和“ OUT_TANGENT”是我不知道如何处理它们的
查看数据时
这是“ IN_TANGENT”数据的样子
<source id="Cube_location_X-intangent">
<float_array id="Cube_location_X-intangent-array" count="2">0 -1.061734</float_array>
<technique_common>
<accessor source="#Cube_location_X-intangent-array" count="1" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
这就是“ OUT_TANGENT”数据的样子
<source id="Cube_location_X-outtangent">
<float_array id="Cube_location_X-outtangent-array" count="2">0.08333331 -1.061734</float_array>
<technique_common>
<accessor source="#Cube_location_X-outtangent-array" count="1" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
现在我的两个Tangent数据都是2D的,因为我只是在混合器中将立方体移动到一个平面中,但是我想它也可以是3D的(或者可能不是?)
我觉得我可以将这些数据用于更流畅的动画,但是我不知道数学或算法可以与我的Animator中的数据配合使用
切线也可以旋转,但同样我不知道该怎么处理
例如:
<sampler id="Cube_rotation_euler_Z-sampler">
<input semantic="INPUT" source="#Cube_rotation_euler_Z-input"/>
<input semantic="OUTPUT" source="#Cube_rotation_euler_Z-output"/>
<input semantic="INTERPOLATION" source="#Cube_rotation_euler_Z-interpolation"/>
<input semantic="IN_TANGENT" source="#Cube_rotation_euler_Z-intangent"/>
<input semantic="OUT_TANGENT" source="#Cube_rotation_euler_Z-outtangent"/>
</sampler>
如果不这样做,对这些值的处理方式进行一些数学或构想的编码将非常有用。 谢谢你