camera.transform和pointOfView有什么区别

时间:2018-03-22 15:40:54

标签: ios camera transform scenekit arkit

为了将物体放在相机前面,我发现有两种方法:使用camera.transformpointOfView

camera.transform 来自SCNViewscnView.session.currentFrame.camera.transform https://developer.apple.com/documentation/arkit/arcamera

  

相机在世界坐标空间中的位置和方向。

以下是如何使用它

var translation = matrix_identity_float4x4
translation.columns.3.z = -2
node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)

pointOfView 来自SCNViewscnView.pointOfView https://developer.apple.com/documentation/scenekit/scnscenerenderer/1523982-pointofview

  

查看场景内容以进行渲染的节点

以下是如何使用它,使用convertPosition转换为世界坐标

let camera = scnView.pointOfView!
let position = SCNVector3(x: 0, y: 0, z: -2)
node.position = camera.convertPosition(position, to: nil)

这两个有什么区别?两者似乎都指的是相机

1 个答案:

答案 0 :(得分:3)

session属性由ARSCNView公开,而不是由SCNView公开。 ARKit使用其会话的相机变换来驱动SceneKit场景的视点,因此在这种情况下它们匹配。但并非每个SceneKit应用程序都使用ARKit,在这种情况下,定位观点是开发人员的责任。