ARKit Как остановить мерцание или Как расположить узел к камере, - PullRequest
0 голосов
/ 29 октября 2018

Я создал Стену с SCNPlane. на этой плоскости я добавляю другую плоскость, где пользователь указывает устройство

Но из-за того, что обе плоскости имеют одинаковое положение, вновь добавленная плоскость мигает.

Итак, как мне сохранить расстояние от узла стены и узла плоскости

как мне добавить плоскость узла.

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)

       }
 }  

Плоскость красного цвета постоянно мигает (появляется - исчезает)

enter image description here

Я пробовал node.position.z -= 0.2, но он не работает и позиция узла полностью меняется из-за node.eulerAngles

Любая помощь будет оценена

1 Ответ

0 голосов
/ 29 октября 2018

Я должен это понять.

, установив 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()
        }
    }
}

Надеюсь, что некоторые могут использовать его, если тот же вопрос

...