swift3 – 将SceneKit对象放在SCNCamera当前方向的前面
发布时间:2020-12-14 05:46:19 所属栏目:百科 来源:网络整理
导读:我想在用户点击屏幕时创建一个新的SceneKit节点,并让它以预定距离直接出现在摄像机前面.对于测试,这将是一个SCNText读
我想在用户点击屏幕时创建一个新的SceneKit节点,并让它以预定距离直接出现在摄像机前面.对于测试,这将是一个SCNText读取“你在这里点击”的读数.它也应该与视线成直角 – 也就是说,“面向相机”.
所以,鉴于self.camera.orientation SCNVector4(或类似),我怎么能: >生成SCNVector3,将节点置于摄像机的“前方”给定距离? 我怀疑(2)的答案是它与`self.camera.orientation相同?但是(1)让我有点失落. 我看到了许多类似的问题,比如this one,但没有答案.
(斯威夫特4)
嘿,如果要将对象放在相对于另一个节点(例如摄像机节点)的某个位置,并且与参考节点的方向相同,则可以使用这个更简单的函数: func updatePositionAndOrientationOf(_ node: SCNNode,withPosition position: SCNVector3,relativeTo referenceNode: SCNNode) { let referenceNodeTransform = matrix_float4x4(referenceNode.transform) // Setup a translation matrix with the desired position var translationMatrix = matrix_identity_float4x4 translationMatrix.columns.3.x = position.x translationMatrix.columns.3.y = position.y translationMatrix.columns.3.z = position.z // Combine the configured translation matrix with the referenceNode's transform to get the desired position AND orientation let updatedTransform = matrix_multiply(referenceNodeTransform,translationMatrix) node.transform = SCNMatrix4(updatedTransform) } 如果您想将’node’2m放在某个’cameraNode’前面,你可以这样称呼: let position = SCNVector3(x: 0,y: 0,z: -2) updatePositionAndOrientationOf(node,withPosition: position,relativeTo: cameraNode) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |