Ios 为什么添加到场景视图的三维对象会随着摄影机移动?

Ios 为什么添加到场景视图的三维对象会随着摄影机移动?,ios,swift4,augmented-reality,arkit,xcode10.2,Ios,Swift4,Augmented Reality,Arkit,Xcode10.2,我已将3d对象添加到场景视图场景中,该场景为dae格式。但它是随着摄像机移动的。如何将其固定到特定位置。相同的代码适用于其他3d对象,但问题仅限于此特定对象。以下是使用的代码: let scene = SCNScene(named: "Volvo_FE_Crane_2013.dae")! craneNode = SCNNode() let truckNode = scene.rootNode.childNode(withName: "Volvo_FE_Crane_2013", recurs

我已将3d对象添加到场景视图场景中,该场景为dae格式。但它是随着摄像机移动的。如何将其固定到特定位置。相同的代码适用于其他3d对象,但问题仅限于此特定对象。以下是使用的代码:

 let scene = SCNScene(named: "Volvo_FE_Crane_2013.dae")!
 craneNode = SCNNode()
 let truckNode = scene.rootNode.childNode(withName: "Volvo_FE_Crane_2013", recursively: true)!
 craneNode.addChildNode(truckNode.clone())
 craneNode.position = SCNVector3Make(hitResult.worldTransform.columns.3.x, hitResult.worldTransform.columns.3.y, hitResult.worldTransform.columns.3.z)
 craneNode.light?.intensity = 1000
 craneNode.scale = SCNVector3Make(0.08, 0.08, 0.08)
 sceneView?.scene.rootNode.addChildNode(craneNode)
看起来你的模型只是在最初的跟踪阶段“滑动”。然后它就静止不动了。这是因为一个场景还没有被跟踪。如果这不是真的(我所说的)–问题在于
hitResult
。我不知道你是怎么得到的

而节点的顺序和层次关系

let scene = SCNScene(named: "Volvo_FE_Crane_2013.dae")!

craneNode = SCNNode()
let truckNode = scene.rootNode.childNode(withName: "Volvo_FE_Crane_2013", 
                                         recursively: true)!

truckNode.position = SCNVector3Make(hitResult.worldTransform.columns.3.x, 
                                    hitResult.worldTransform.columns.3.y, 
                                    hitResult.worldTransform.columns.3.z)

// truckNode.light?.intensity = 1000                  // IT"S NOT A LIGHT

truckNode.scale = SCNVector3Make(0.08, 0.08, 0.08)

craneNode.addChildNode(truckNode.clone())
sceneView?.scene.rootNode.addChildNode(craneNode)
此外,可能是模型大小(多边形数)的问题。

您的模型似乎仅在初始跟踪阶段“滑动”。然后它就静止不动了。这是因为一个场景还没有被跟踪。如果这不是真的(我所说的)–问题在于
hitResult
。我不知道你是怎么得到的

而节点的顺序和层次关系

let scene = SCNScene(named: "Volvo_FE_Crane_2013.dae")!

craneNode = SCNNode()
let truckNode = scene.rootNode.childNode(withName: "Volvo_FE_Crane_2013", 
                                         recursively: true)!

truckNode.position = SCNVector3Make(hitResult.worldTransform.columns.3.x, 
                                    hitResult.worldTransform.columns.3.y, 
                                    hitResult.worldTransform.columns.3.z)

// truckNode.light?.intensity = 1000                  // IT"S NOT A LIGHT

truckNode.scale = SCNVector3Make(0.08, 0.08, 0.08)

craneNode.addChildNode(truckNode.clone())
sceneView?.scene.rootNode.addChildNode(craneNode)

另外,可能是模型大小(多边形数)的问题。

谢谢您的回复。我曾尝试使用其他3d模型,同样的代码也很好。我面临的问题只是一个新添加的3d对象你的手机是什么型号?你的模型有多少个多边形?谢谢你的回复。我曾尝试使用其他3d模型,同样的代码也很好。我面临的问题只是一个新添加的3d对象你的手机是什么型号?你的模型有多少个多边形?