【发布时间】:2019-09-12 19:13:24
【问题描述】:
如果一个场景包含多个摄像机,projectPoint 方法使用哪个摄像机将点从 3D 投影到屏幕空间?如果这是由pointOfView 属性定义的,那么当我更新pointOfView 的位置时,为什么给定的3D 点仍然投影到同一个2D 点?
【问题讨论】:
如果一个场景包含多个摄像机,projectPoint 方法使用哪个摄像机将点从 3D 投影到屏幕空间?如果这是由pointOfView 属性定义的,那么当我更新pointOfView 的位置时,为什么给定的3D 点仍然投影到同一个2D 点?
【问题讨论】:
由于 SCNCamera 属于 SCNView,只需通过 View 的“pointOfView”实例属性将PoV 设置为所需的相机节点即可。
let cameraNode001 = SCNNode()
cameraNode001.camera = SCNCamera()
scene.rootNode.addChildNode(cameraNode001)
cameraNode001.position = SCNVector3(x: 0, y: 0, z: 15)
let cameraNode002 = SCNNode()
cameraNode002.camera = SCNCamera()
scene.rootNode.addChildNode(cameraNode002)
cameraNode002.position = SCNVector3(x: 10, y: 10, z: 30)
let sceneView = self.view as! SCNView
sceneView.scene = scene
sceneView.pointOfView = cameraNode001
然后你可以改变 PoV:
sceneView.pointOfView = cameraNode002
【讨论】: