scenekit - 如何移动从 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 文件中拖动我的模型(与我的其他无动画模型不同)。我的动画模型似乎有额外的属性: 截图。 如何在空间中移动我的动画模型?
解决方案
只要您的模型正确加载到节点中,只需移动节点(或像您一样旋转它),它的行为就像其他节点一样。
moveForward 的 runAction.repeat 将重复相同的动作 - 比如说 SCNVector3(5, 0, 0) - 但每次都是一样的,所以一旦它到达那里,它就不会再移动了。一些选项是循环它并调用 runAction moveTo 并每次增加你的 moveForward 向量,或者使用物理引擎并添加速度等。
推荐阅读
- android-jetpack-compose - Jetpack Compose animateScrollTo 到绝对坐标或直接到元素
- javascript - 无法使用 document.getElementById 获取元素
- amazon-web-services - 我可以使用注入 AWS AppMesh 的 envoy 自定义访问日志吗?
- java - JSch SFTP 连接卡住
- java - 如何使用 java 将日期格式化为 01-JAN-2021
- amcharts - Amcharts:列系列图表中的多类别轴网格对齐问题
- amazon-web-services - 通过 CloudFormation 向现有 VPC Endpoint 添加安全组
- python - 从列表中找到三个加起来等于特定数字的数字
- python-3.x - 有没有办法在 scipy.optimize 中访问 curve_fit 的内部状态?
- sql - 如何从最后一个父级的行中获取数据