在 SceneKit 中,是不是可以将除对象当前位置之外的导入动画作为原点?
Posted
技术标签:
【中文标题】在 SceneKit 中,是不是可以将除对象当前位置之外的导入动画作为原点?【英文标题】:In SceneKit, is it possible to make imported animation excepting object current position as origin?在 SceneKit 中,是否可以将除对象当前位置之外的导入动画作为原点? 【发布时间】:2020-06-28 09:26:17 【问题描述】:我们将 Blender 中的动画导入 SceneKit。 动画包括在 xy 平面上的非常简单的移动,因为我们现在只是在测试它。 我们用以下代码加载它;
let importedDae = SCNScene(named: "animated.scn")!
let node = importedDae.rootNode.childNode(
withName: "Cube", recursively: true)!.clone()
self.headAnimationPlayer = headNode.animationPlayer(forKey: "Cube_CubeAction_transform")!
let animation = headAnimationPlayer.animation
然后我们将它添加到我们的对象中
ourObject.addAnimation(self.anime, forKey: "Cube_CubeAction_transform")
正如预期的那样,动画立即开始。 但是动画移动对象出现了问题 到位置 (0,0,0) 然后制作动画。
我们在 Blender 中围绕位置 (0,0,0) 创建了动画,这是合乎逻辑的。 但我们的对象是动态的,添加动画后可以在任何地方。
我们希望动画使用我们对象的当前位置作为原点并制作动画 周围。这可能吗?
【问题讨论】:
如果我们在对象上使用两个节点,并且如果我们在第二个节点添加几何图形,则效果很好。我们使用第一个来移动,第二个用于动画,但这会使事情变得复杂。 【参考方案1】:正如您在评论中所说,使用中间节点将对象放置在场景中是解决此问题的一种方法。
您还可以查看CAPropertyAnimation
的additive
属性(作为CAKeyframeAnimation
的超类),但要使用它,您可能必须分解动画。
【讨论】:
以上是关于在 SceneKit 中,是不是可以将除对象当前位置之外的导入动画作为原点?的主要内容,如果未能解决你的问题,请参考以下文章