1

这是看起来很好的模型属性。

在此处输入图像描述

这是有问题的模型的属性,并且在相机视图上方显得更大:

在此处输入图像描述

这是我插入模型的代码:

func updateUIView(_ uiView: ARView, context: Context) {
    // My Custom Class
    guard let model = modelConfirmedForPlacement else { return } 

    if let modelEntity = model.modelEntity {
        print("Adding model to scene: \(model.modelName)")
        let anchorEntity = AnchorEntity(plane: .any)
        let readyModelEntity = modelEntity.clone(recursive: true)
        //Add Gestures Support for Model
        readyModelEntity.generateCollisionShapes(recursive: true)
        anchorEntity.addChild(readyModelEntity)
        uiView.scene.addAnchor(anchorEntity)
        // Install Gestures
        uiView.installGestures([.all], for: readyModelEntity)
    } else {
        print("Unable to load modelEntity for: \(model.modelName)")
    }

    DispatchQueue.main.async {
        modelConfirmedForPlacement = nil
    }
}
4

1 回答 1

1

RealityKit 和 SceneKit 的工作单位是meters,但一些 3D 应用程序的默认工作单位是centimeters。您的指标显示了一个巨大的 RealityKit 模型边界框的大小:

SIMD<Float>(x: 54.915, y: 45.507, z: 28.351)

要为锚实体或模型实体(小 100...200 倍)分配新比例,请使用以下命令:

let anchorEntity = AnchorEntity()
anchorEntity.scale = [1, 1, 1] * 0.01

要控制模型的位置,您必须考虑模型枢轴点的位置。通常,您可以在 3D 创作应用程序(如 Maya 或 Blender)中执行此操作——轴心点的位置应位于模型的底部。如果您无法在 3D 创作应用程序中更改枢轴的位置,只需移动模型的相应锚点:

anchorEntity.position.y = -0.5

...或者,如果您想移动模型实体,请使用子级的深层层次结构:

print(modelEntity)

modelEntity.children[0]..........children[0].position.y = -0.5
于 2021-02-15T19:07:16.570 回答