使用dae文件播放动画时,SCNNode比例会发生变化

时间:2017-04-21 15:22:34

标签: ios swift animation scenekit collada

尝试在scenekit中使用dae文件作为我的模型以及我的动画。当我尝试缩放模型时,它会正确缩放。动画开始播放后,它将重置为原始比例。这就是我现在要做的事情:

let playerNode = gameScene.rootNode.childNode(withName: "Player", recursively: true)

let animation = CAAnimation.animationWithSceneNamed(name: "GameAssets.scnassets/Objects/WalkAnimation.dae")

playerNode.addAnimation(animation, forKey: "WalkAnimation")

1 个答案:

答案 0 :(得分:1)

由于我们无法访问您的Collada文件,因此请以SceneKitAnimations sample code中的walk.dae为例。

在该文件中,您将找到以下内容:

  <library_animations>
    <animation id="WalkID">
      ...
      <source id="node-Bip01_matrix-output">
        ...
        <technique_common>
          <accessor source="#node-Bip01_matrix-output-array" count="29" stride="16">
            <param name="TRANSFORM" type="float4x4"/>
          </accessor>
        </technique_common>

您可以看到动画文件没有单独的位置和旋转动画,但它有一个动画,可以定位整个变换(cf TRANSFORMfloat4x4)。

这意味着评估动画将覆盖节点的scale。如果您不想要position属性,则必须为rotationtransform属性设置不同的动画,而不是scale属性的动画。被覆盖的。