将 CustomEntity 添加到 RealityKit 中的平面锚点
Adding CustomEntity to the Plane Anchor in RealityKit
我实现了一个简单的自定义实体,如下所示:
class Box: Entity, HasModel, HasAnchoring {
required init(color: UIColor) {
super.init()
self.components[ModelComponent.self] = ModelComponent(mesh: MeshResource.generateBox(size: 0.3),
materials: [SimpleMaterial(color: color, isMetallic: true)])
}
convenience init(color: UIColor, position: SIMD3<Float>) {
self.init(color: color)
self.position = position
}
required init() {
fatalError("init() has not been implemented")
}
}
ContentView.swift
我尝试将 Box 实体添加到由水平面定义的锚点。
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
let anchorEntity = AnchorEntity(plane: .horizontal)
let box = Box(color: .red)
anchorEntity.addChild(box)
arView.scene.anchors.append(anchorEntity)
return arView
}
但是,Box 实体似乎从未停留在水平面上。它似乎总是漂浮在顶部。这是为什么?
要防止世界锚定在 [0, 0, 0],您不需要遵守 HasAnchoring
协议:
class Box: Entity, HasModel {
// content...
}
因此,您的 AnchorEntity(plane: .horizontal)
现在处于活动状态。
我实现了一个简单的自定义实体,如下所示:
class Box: Entity, HasModel, HasAnchoring {
required init(color: UIColor) {
super.init()
self.components[ModelComponent.self] = ModelComponent(mesh: MeshResource.generateBox(size: 0.3),
materials: [SimpleMaterial(color: color, isMetallic: true)])
}
convenience init(color: UIColor, position: SIMD3<Float>) {
self.init(color: color)
self.position = position
}
required init() {
fatalError("init() has not been implemented")
}
}
ContentView.swift
我尝试将 Box 实体添加到由水平面定义的锚点。
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
let anchorEntity = AnchorEntity(plane: .horizontal)
let box = Box(color: .red)
anchorEntity.addChild(box)
arView.scene.anchors.append(anchorEntity)
return arView
}
但是,Box 实体似乎从未停留在水平面上。它似乎总是漂浮在顶部。这是为什么?
要防止世界锚定在 [0, 0, 0],您不需要遵守 HasAnchoring
协议:
class Box: Entity, HasModel {
// content...
}
因此,您的 AnchorEntity(plane: .horizontal)
现在处于活动状态。