首页 > 解决方案 > 如何移动从 Blender 导入的节点

问题描述

我正在尝试在 Scene Kit 中移动动画 3D 模型(来自 Blender)。

我可以使用以下代码旋转我的模型:

let ship = scene.rootNode.childNode(withName: "ship", recursively: true)! ship.skinner!.skeleton!.runAction(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))

但是这段代码并没有移动它:

ship.skinner!.skeleton!.runAction(SCNAction.repeatForever(moveForward))

此外,我无法在 .scn 文件中拖动我的模型(与我的其他无动画模型不同)。我的动画模型似乎有额外的属性: 截图。 如何在空间中移动我的动画模型?

标签: scenekitblender

解决方案


只要您的模型正确加载到节点中,只需移动节点(或像您一样旋转它),它的行为就像其他节点一样。

moveForward 的 runAction.repeat 将重复相同的动作 - 比如说 SCNVector3(5, 0, 0) - 但每次都是一样的,所以一旦它到达那里,它就不会再移动了。一些选项是循环它并调用 runAction moveTo 并每次增加你的 moveForward 向量,或者使用物理引擎并添加速度等。


推荐阅读