camera.transform 和 pointOfView 有啥区别

Posted

技术标签:

【中文标题】camera.transform 和 pointOfView 有啥区别【英文标题】:What is the difference between camera.transform and pointOfViewcamera.transform 和 pointOfView 有什么区别 【发布时间】:2018-09-01 03:16:15 【问题描述】:

对于将物体放在相机前面,我看到有两种方法:使用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】:

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

【讨论】:

以上是关于camera.transform 和 pointOfView 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

优秀代码收集计划

从点列表中成对欧几里德距离

最大空凸包模板

simd_float4x4 列

判断线段与圆是否相交

如何为其模型中文本的不同代码点自定义Java 9+ JTextField的视图?