Kanzi 3.6.8 迁移指南

使用此迁移指南将 Kanzi 应用程序从 Kanzi 3.6.7 更新到 3.6.8。

在状态间进行动画迁移

在 State Manager 中,当您使用没有动画的过渡时,在 Kanzi 3.6.8 中,State Manager 发送 Transition Started 和 Transition Finished 消息。如果您的应用程序依赖于不接收这些消息,当您将应用程序升级到 Kanzi 3.6.8 时,请修改您的应用程序以考虑到功能的这一变化。

蒙皮网格的更改内容

如果在您的 Kanzi 应用程序中使用蒙皮网格,当将应用程序迁移到 Kanzi 3.6.8 时,更新网格数据和骨架节点的变换。

要仅更新 Library 中所需的项目并保留现有属性的值,请合并来自 fbx 或 dae 文件的蒙皮网格:

  1. 在 Library > Resource Files > 3D Assets 中,右键单击蒙皮网格并选择 Merge 3D Asset File。请参阅 合并 3D 资产。

  2. 在 Merge 工具中:

    1. 选中蒙皮网格旁边的复选框。这样您就可以更新网格数据。

    2. 选择变换不同于现有 Kanzi Studio 项目的骨架节点。

    3. 在 Merge 工具中,点击 Resolve to source,然后点击 Merge。

    合并后,确保您对节点所做的更改,例如,在导入的 Scene 节点中添加的属性和修改的值,保持不变。

  3. 在您合并的用于蒙皮网格的材质顶点着色器中,将该着色器中计算蒙皮的部分替换为在 Kanzi 3.6.8 中有效的代码,并在 Shader Source Editor 中点击 Save。

    例如,将

    localToSkinMatrix = kzWorldMatrix * localToSkinMatrix;
    
    vec4 positionWorld = localToSkinMatrix * vec4(kzPosition.xyz, 1.0);
    vViewDirection = positionWorld.xyz - kzCameraPosition;
    vec4 Norm = mat4(localToSkinMatrix[0],
                     localToSkinMatrix[1],
                     localToSkinMatrix[2],
                     vec4(0.0, 0.0, 0.0, 1.0)) * vec4(kzNormal.xyz, 0.0);
    vN = normalize(Norm.xyz);
    gl_Position = kzProjectionCameraWorldMatrix * vec4(positionWorld.xyz, 1.0);
    

    通过

    mat4 localToWorldMatrix = kzWorldMatrix * localToSkinMatrix;
    
    vec4 positionWorld = localToWorldMatrix * vec4(kzPosition.xyz, 1.0);
    vViewDirection = positionWorld.xyz - kzCameraPosition;
    vec3 V = normalize(vViewDirection);
    vec4 Norm = mat4(localToWorldMatrix[0],
                     localToWorldMatrix[1],
                     localToWorldMatrix[2],
                     vec4(0.0, 0.0, 0.0, 1.0)) * vec4(kzNormal.xyz, 0.0);
    vN = normalize(Norm.xyz);
    gl_Position = kzProjectionCameraWorldMatrix * localToSkinMatrix * vec4(kzPosition.xyz, 1.0);
    

另请参阅

Kanzi 3.6.8 发行说明

已知问题