如何在 swift 中以编程方式更改场景的物理 y 位置

How to change the physics y position of a scene programmatically in swift

好吧,所以我从服务器下载了一个对象并将其转换为场景,但是当我真实地显示它时 space 似乎它的 y 位置偏离了。它应该是 0,0,0(x,y,z)。(见图)

有点难看,但那是牛腿,应该在 table 上。当我下载对象,将其导入我的项目并使用 Xcode 将其转换为场景时,我注意到 y 的物理 属性 为 -9,x 和 z 均为 0。我将如何更改你以编程方式?我已经把图中的y改成0了,之前是-9。 请参见下图。

查看模型,看起来实际上是导致问题的枢轴。

您可以使用 SCNNode 的枢轴 属性 来更改奶牛的枢轴。

您可以使用 SCNMatrix4MakeTranslation 更改此设置,例如:

cow.pivot = SCNMatrix4MakeTranslation(0,0,0)

这可能会解决问题:

//1. Get The Bounding Box Of The Node
let minimum = float3(nodeToAdd.boundingBox.min)
let maximum = float3(nodeToAdd.boundingBox.max)

//2. Set The Translation To Be Half Way Between The Vector
let translation = (maximum - minimum) * 0.5

//3. Set The Pivot
nodeToAdd.pivot = SCNMatrix4MakeTranslation(translation.x, translation.y, translation.z)