将SCNNode固定在没有ARPlaneAnchor的位置



我目前正试图在使用ARImageTrackingConfiguration时将SCNNode固定到位,这不是平面检测,但似乎无法正常工作,因为相机移动时SCNNode正在移动

以下是代码:

/// show cylinder line
func showCylinderLine(point a: SCNVector3, point b: SCNVector3, object: VirtualObject) {
let length = Vector3Helper.distanceBetweenPoints(a: a, b: b)
let cyclinderLine = GeometryHelper.drawCyclinderBetweenPoints(a: a, b: b, length: length, radius: 0.001, radialSegments: 10)
cyclinderLine.name = "line"
cyclinderLine.geometry?.firstMaterial?.diffuse.contents = UIColor.red
self.sceneView.scene.rootNode.addChildNode(cyclinderLine)
cyclinderLine.look(at: b, up: self.sceneView.scene.rootNode.worldUp, localFront: cyclinderLine.worldUp)
}

是否可以在没有ARPlaneAnchor的情况下将柱面线路SCNNode固定到位?

(注意:我曾在nodeForAnchor代理方法上尝试过ARAnchor,但随着相机的移动,它仍在移动(

你能展示你的nodeForAnchors方法吗?这就是节点被"固定"到图像的地方,所以我猜某个地方有错误。以下是该代表的一个示例应用程序:

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let _ = anchor as? ARImageAnchor {
if let objectScene = SCNScene(named: "ARassets.scnassets/object.scn") {
//creates a new node that is connected to the image. This is what makes your object "fixed"
let objectNode = objectScene.rootNode.childNodes.first!
objectNode.position = SCNVector3Zero
objectNode.position.y = 0.15
node.addChildNode(planeNode)
}
}

如果这有帮助,请告诉我;(

最新更新