我找不到SCNCamera
的含义及其用途的很好解释。这是Apple's definition:
一组摄像机属性,可以附加到节点以提供显示场景的角度。
此定义不清楚,因为我设置了场景并添加了SCNNode
而不附加SCNCamera
。从设备相机的角度来看,SCNNode
毫无问题地显示在我所处的位置,并且场景显示良好。
设备的相机和SCNCamera
有什么区别?
将SCNCamera
附加到SCNNode
与不使用它有什么好处?
如果我有多个SCNNodes
(彼此之间没有任何层次结构分离,每个节点是否需要它自己的SCNCamera
?
如果我在SCNNodes
中有多个hierarchy
(具有子节点的父节点),每个节点都需要它自己的SCNCamera
还是仅仅是父节点?
lazy var sceneView: ARSCNView = {
let sceneView = ARSCNView()
sceneView.translatesAutoresizingMaskIntoConstraints = false
sceneView.delegate = self
return sceneView
}()
let configuration = ARWorldTrackingConfiguration()
override func viewDidLoad() {
super.viewDidLoad()
// pin sceneView to the view
let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "earth")
let plane = SCNPlane(width: 0.33, height: 0.33)
plane.materials = [material]
plane.firstMaterial?.isDoubleSided = true
let myNode = SCNNode(geometry: plane)
myNode.name = "earth"
myNode.position = SCNVector3(0.0, 0.6, -0.9)
sceneView.scene.rootNode.addChildNode(myNode)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
sceneView.session.run(configuration, options: [])
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillAppear(animated)
sceneView.session.pause()
sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
}
在SceneKit中,SCNCamera
表示用户从中看到场景的视点。 Ray Wenderlich提供了很好的解释:
我从此SCNCamera
中得到了我问题的答案。基本上在使用SCNCamera - SceneKit的ARKit中,相机的贫困来自answer,但在SceneKit中,您需要创建一个相机以获取相机的POV(下面的代码)。