【问题标题】:Need starting and ending position of MeshResource/Box in RealityKit需要 RealityKit 中 MeshResource/Box 的开始和结束位置
【发布时间】:2021-08-09 13:24:13
【问题描述】:
let material = SimpleMaterial.init(color: .red,roughness: 1,isMetallic: false)
let doorBox = MeshResource.generateBox(width: 0.02,height: 1, depth: 0.5)
let doorEntity = ModelEntity(mesh: doorBox, materials: [material])
let anchor = ARAnchorEntity()
anchor.addChild(doorEntity)

在 RealityKit 中,我有一个 MeshResource 的盒子,盒子看起来像一条线。我在 ARView 中添加了这个框,并设置了实时相机位置。在一种情况下,我想知道 Box/Line 的开始和结束位置。

假设带有实体的盒子有中间/当前位置 (0.1,0.23,-1.3) 那么盒子的左右位置是什么?带框的锚点会随着相机的移动不断改变它的位置。

提前致谢。

Check explanation with the image

【问题讨论】:

    标签: ios swift augmented-reality arkit realitykit


    【解决方案1】:

    你可以使用这个扩展。

    extension Entity {
        
        func getDistancedPosition(x: Float, y: Float, z: Float) -> SIMD3<Float> {
            
            let referenceNodeTransform = transform.matrix
            var translationMatrix = matrix_identity_float4x4
            translationMatrix.columns.3.x = x
            translationMatrix.columns.3.y = y
            translationMatrix.columns.3.z = z
            let updatedTransform = matrix_multiply(referenceNodeTransform,
                                                   translationMatrix)
            
            return .init(updatedTransform.columns.3.x,
                         updatedTransform.columns.3.y,
                         updatedTransform.columns.3.z)
            
        }
        
    }
    

    要左右为您的盒子,请使用以下代码:

    let side1Position = door.getDistancedPosition(x: 0, y: 0, z: self.viewModel.doorDepth/2)
    let side2Position = door.getDistancedPosition(x: 0, y: 0, z: -(self.viewModel.doorDepth/2))
    

    要使框看起来像线条,您必须使用深度。如果没有,那么您可以相应地更改参数。例如door.getDistancedPosition(x: -0.1, y: 0, z: 0)

    您也可以参考这个问题及其接受的答案:

    Position a SceneKit object in front of SCNCamera's current orientation

    【讨论】:

    • 感谢@indrajit 的详细解释。您提出的解决方案对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多