Swift - 如何更改 SCNNode 对象的枢轴

标签 swift pivot scenekit

我已经使用 SCNNode 对象玩了一段时间了,但我对 Pivot 迷路了。如何更改 SCNNode(SCNBox 作为条)的枢轴并将枢轴放在条的边缘之一?

最佳答案

一个节点的pivot是一个变换矩阵,在其 transform 属性生效之前将其逆应用于节点。例如,看看 Xcode 中默认 SceneKit 游戏模板中的这一点:

let boxNode = SCNNode()
boxNode.geometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.02)

如果设置 boxNodeposition,该点对应于立方体的中心,如果您旋转它(就像动画中的模板一样) , 它绕着它的中心旋转。

要更改 anchor ,请将pivot 设置为平移变换:

boxNode.pivot = SCNMatrix4MakeTranslation(0.5, 0.5, 0.5)

现在,当您设置位置时,该点对应于立方体的右上角,当您旋转立方体时,它会围绕该角旋转。

更一般地说,一个枢轴转换节点的内容相对于节点自身的转换。假设您想对 precession 建模地球的自转轴。您可以通过创建两个动画来做到这一点:一个动画 pivot 以围绕其自身的 Y 轴旋转节点,另一个动画 rotation 以相对于空间移动该轴包含节点。

关于Swift - 如何更改 SCNNode 对象的枢轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24734200/

相关文章:

ios - iOS 有暂停 UIImageView 动画的功能吗?

sql - 我需要在 T-SQL 数据透视查询中更改哪些内容才能实现此特定输出?

swift - 处理 Swift 时出现奇怪的运行时 SceneKit 错误(C3DRendererContextBindMeshElement)

swift - 长按时向前 move SCNNode

arrays - 使用数组中的内容按下按钮时更改标签文本

ios - 仅使顶部 ViewController 旋转

ios - 在谷歌地图上难以获得 X 和 Y 中标记的位置?

SQL Server 2008 - 从另一个表动态创建一个表

sql - 将表中的多行合并为 1 个结果集行

ios - 如何在 ModelIO MDLMesh 和 SceneKit SCNGeometry 之间来回转换?