切线插值

时间:2018-11-07 12:50:40

标签: lwjgl

我目前正在为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>

如果不这样做,对这些值的处理方式进行一些数学或构想的编码将非常有用。 谢谢你

0 个答案:

没有答案