ARKit如何停止闪烁或如何将节点朝向摄像机定位,

时间:2018-10-29 06:44:40

标签: ios scenekit arkit

我用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)

       }
 }  

红色飞机不断滑动(出现-消失)

enter image description here

我尝试了node.position.z -= 0.2,但是由于node.eulerAngles

,它无法正常工作并且节点位置完全改变了

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我知道了。

通过设置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()
        }
    }
}

希望某些问题可以使用