【问题标题】:How to change the physics y position of a scene programmatically in swift如何以编程方式快速更改场景的物理 y 位置
【发布时间】:2018-08-06 11:19:11
【问题描述】:

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

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

【问题讨论】:

    标签: ios swift scenekit arkit


    【解决方案1】:

    查看模型,看起来它实际上是导致问题的关键。

    您可以使用 SCNNode 的 pivot 属性更改奶牛的轴心。

    您可以使用 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)
    

    【讨论】:

    • 是的!哦,伙计,非常感谢你!!!!我已经把头撞在桌子上好几个小时了......可以在你的答案中解释第二个吗?
    • 第二个是获取(最大和最小向量)的值,然后将它们乘以 0.5 得到中点 :)
    • 您也可以通过创建一个空节点并将牛居中来“作弊”:)
    • 我该怎么做呢?另外,如果我想扩展我的节点,这是最好的方法吗? self.node?.scale = SCNVector3Make(0.3, 0.3, 0.3)
    • 是的,您可以像这样缩放:cow.scale = SCNVector3(0.001, 0.001, 0.001)。要创建一个空节点,您可以手动或在 ScenKit 编辑器中创建一个:)
    猜你喜欢
    • 1970-01-01
    • 2021-04-24
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多