ARkit-SceneKit:在检测到的平面上动态放置3D模型

时间:2019-04-02 11:31:19

标签: ios swift scenekit arkit

我正在研究ARKit项目,并尝试将一些对象放置在检测到的平面上。但是一旦我移动设备放置另一个对象,它就无法正常工作,第一个对象没有站在他的位置。我希望每个渲染对象都停留在第一位置,直到用户开始与之交互。

我已经看到了:

ARKIT : place object on a plane doesn't work properly

但是还没有解决方案。

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

        guard let planeAnchor = anchor as? ARPlaneAnchor else { return }

        self.planeAnchor = planeAnchor
        self.floorNode = node

        DispatchQueue.main.async {
            self.messageLabel.text = "Surface Detectée - Taper + pour choisir des objets"
            self.addModelButton.isEnabled = true
            self.addModelButton.alpha = 1
        }

    }


 func addFurniture(selectedNode:SCNNode) {

        selectedNode.simdPosition = float3(planeAnchor.center.x, planeAnchor.center.y, planeAnchor.center.z)
        floorNode.addChildNode(selectedNode)
        messageLabel.text = "Model chargé - Vous pouvez le positionner, le faire tourner ou ajouter d'autres. "
    }

一旦检测到平面,用户便从collectionView中选择一个模型,然后在调用addFurniture(selectedNode:SCNNode)后将模型放置在检测到的平面中。

我做错了什么或我没有做什么?请问有人可以帮我吗?

0 个答案:

没有答案