RealityKit – 锚点忽略父锚点变换

RealityKit – Anchor is ignoring parent anchor transform

假设我有这个:

var a = getSphere(0.05, .white)
var b = getSphere(0.04, UIColor.brown)
var c = getSphere(0.03, UIColor.cyan)
    
var aa = AnchorEntity()
var bb = AnchorEntity()
var cc = AnchorEntity()
aa.transform.translation.y = -0.5
aa.addChild(bb)
bb.addChild(cc)
aa.addChild(a)
bb.addChild(b)
cc.addChild(c)
scene.anchors.append(aa)

aa 锚点及其对象将正确位于 y -0.5,但 bb 和 cc anchors/objects 仍将位于 0,0,0....

这感觉非常有问题。比如...为什么子对象会忽略其父对象转换?

any1 能否说明如何“解决”这个问题?

你不需要那么多嵌套的AnchorEntities。 RealityKit 的场景可以包含嵌套模型实体(也称为父子对)的任何层次结构。尽管如此,为了自动跟踪此结构中每个 3D 元素的位置和方向 - 只需要 ONE 锚点(这是在任何 AR 框架中使用锚点的常规方式)。

let container = Entity()
let modelA = ModelEntity()
let modelB = ModelEntity()

container.addChild(modelA)
modelB.setParent(modelA)

container.position.x = -1.2
modelA.position.x = 0.5          // adjust transform independently
modelB.position.y = 1

let anchor = AnchorEntity()      // object being tracked
anchor.addChild(container)
arView.scene.addAnchor(anchor)