我使用.dae模型创建SCNNode。
let node = SCNNode()
let scene = SCNScene(named: "scene.scnassets/scene.dae")!
for child in scene.rootNode.childNodes
{
node.addChildNode(child)
}
然后添加simbTransform并将节点添加到ar场景
var translation = matrix_identity_float4x4
translation.columns.3.z = -1
node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)
self.sceneView.scene.rootNode.addChildNode(node)
当我移动相机节点时,它连接到它。所以我无法走动节点或走近一点。
但是当我做那样的事情时,它就像我预期的那样工作。
let node = SCNNode(geometry: SCNBox(width: 0.5, height: 0.5, length: 0.5, chamferRadius: 0))
var translation = matrix_identity_float4x4
translation.columns.3.z = -1
node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)
self.sceneView.scene.rootNode.addChildNode(node)
那么如何用.dae模型附加节点来指定位置而不是相机。
答案 0 :(得分:0)
您使用哪种方法执行此代码?
var translation = matrix_identity_float4x4
translation.columns.3.z = -1
node.simdTransform = matrix_multiply(currentFrame.camera.transform, translation)
self.sceneView.scene.rootNode.addChildNode(node)
如果在AR会话的更新方法中执行此操作,则它是合乎逻辑的,因为每次相机移动时都会更改对象的变换。 确保在场景设置期间只调用一次。