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 文件的蒙皮网格:
在 Library > Resource Files > 3D Assets 中,右键单击蒙皮网格并选择 Merge 3D Asset File。请参阅 合并 3D 资产。
在 Merge 工具中:
选中蒙皮网格旁边的复选框。这样您就可以更新网格数据。
选择变换不同于现有 Kanzi Studio 项目的骨架节点。
在 Merge 工具中,点击 Resolve to source,然后点击 Merge。
合并后,确保您对节点所做的更改,例如,在导入的 Scene 节点中添加的属性和修改的值,保持不变。
在您合并的用于蒙皮网格的材质顶点着色器中,将该着色器中计算蒙皮的部分替换为在 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);