2017-04-21 110 views
1

试图在scenekit中为我的模型以及我的动画使用dae文件。当我尝试缩放模型时,它会正确缩放。动画开始播放后,它会重置为原始比例。下面是我想此刻做的事:使用dae文件播放动画时,SCNNode缩放比例发生变化

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

由于我们没有访问您的Collada文件,让我们从SceneKitAnimations sample codewalk.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> 

你可以看到动画文件不具有位置和旋转,单独的动画,而是它有针对整个变换一个动画(参见TRANSFORMfloat4x4)。

这意味着评估动画将覆盖节点的scale。如果您不希望重写scale,则必须为positionrotation属性使用不同的动画,而不要使用transform属性的动画。