ARKit 如何停止闪烁或如何将节点定位到相机,

ARKit How to stop flickering or How to position node towards camera,

我用 SCNPlane 创建了 Wall。在那架飞机上,我正在添加另一个用户指向设备的飞机

但由于两个平面位置相同,新添加的平面闪烁。

那么如何保持与墙节点和平面节点的距离

如何添加平面节点

let hitTestScene = self.sceneView.hitTest(self.sceneView.center, options:[SCNHitTestOption.categoryBitMask : 16])
 if let first = hitTestScene.first  {
    if first.node.name == NodeNames.wallNode {
       let value = MathHelper().getMeasurementBetween(vector1: lastNodePosition, and: first.worldCoordinates)
          let node = SCNNode(geometry: SCNPlane(width: CGFloat( value) , height:  CGFloat(value)))
           node.geometry?.firstMaterial?.isDoubleSided = true
           node.name = "Plane1"
           node.geometry?.firstMaterial?.diffuse.contents = UIColor.red.withAlphaComponent(1)
           node.eulerAngles = first.node.eulerAngles
           node.position = lastNodePosition

           self.sceneView.scene.rootNode.addChildNode(node)

       }
 }  

红色平面不断闪烁(出现-消失)

我试过 node.position.z -= 0.2 但它不工作并且节点位置完全改变因为 node.eulerAngles

任何帮助将不胜感激

我想出来了

通过设置 rendringOrder 和 readsFromDepthBuffer 我能够停止这种轻弹效果

extension SCNNode {
    func renderOnTop() {
        self.renderingOrder = 2
        if let geom = self.geometry {
            for material in geom.materials {
                material.readsFromDepthBuffer = false
            }
        }
        for child in self.childNodes {
            child.renderOnTop()
        }
    }
}

如果遇到同样的问题,希望有人可以使用它