【问题标题】:RealityKit placing object without rotationRealityKit 放置对象而不旋转
【发布时间】:2023-09-29 13:53:01
【问题描述】:

我试图在场景中放置一个对象/锚点,但每次我这样做时都会旋转。我找不到旋转设置的位置,因为打印我们的矩阵给了我 0,0,0 的旋转,所以我有点迷茫:

        let point = CGPoint(x: frame.midX, y: frame.midY);
        if let result = raycast(from: point, allowing: .estimatedPlane, alignment: .any).first {
            mLastObject = name
            var transform = simd_float4x4()
            transform.columns.0.x = 1.0
            transform.columns.1.y = 1.0
            transform.columns.2.z = 1.0
            transform.columns.3 = result.worldTransform.columns.3
            let resultAnchor = AnchorEntity(world: transform) // world ping
            let shadow = AnchorEntity(plane: AnchoringComponent.Target.Alignment.horizontal) // shadow ping
            resultAnchor.addChild(shadow)
            scene.anchors.append(resultAnchor)
            print("result : \(resultAnchor.transform)")
            print("result2 : \(resultAnchor.orientation)")
            
            print("shadow : \(shadow.transform)")
            print("shadow2 : \(shadow.orientation)")

知道如何访问该旋转/删除它以使其与 3d 世界而不是 ipad 旋转对齐吗? TIA

【问题讨论】:

    标签: arkit realitykit


    【解决方案1】:

    不清楚哪个物体旋转错了,shadow还是resultAnchor?

    打印时,如果旋转错误,打印出shadow.orientation(relativeTo: nil),您将看到真实世界的变化。 如果你想将它设置为零旋转,那么一旦它被锚定在场景中,调用如下代码:

    shadow.setOrientation(
      simd_quatf(angle: 0, axis: [0, 1, 0]),
      relativeTo: nil
    )
    

    【讨论】:

    • 是的,阴影是“破碎”的,但这不起作用。打印它的方向给我 0 旋转。像上面那样设置方向也不起作用。好像它在放置/功能结束后被更改:-(我正在将几何对象添加到阴影。如果我将它添加到 resultAnchor,它可以 100% 工作,但阴影锚已损坏。也许我需要将它添加为异步函数或类似的东西?或者我怎样才能完全移除阴影锚并在 resultAnchor 中有一个阴影平面?我迷路了,我不知道如何手动制作阴影平面,放置它并且锚的东西似乎不起作用
    • 打印相对于 nil/resultAnchor 的阴影方向/旋转/变换/etc/etc 总是返回 0/空数据。好像它都设置为 0。那么这是一个错误吗?