Почему 3D-объект, добавленный в сцену, движется вместе с камерой? - PullRequest
1 голос
/ 24 апреля 2019

Я добавил 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)

1 Ответ

0 голосов
/ 24 апреля 2019

Кажется, ваша модель "скользит" только на начальной стадии отслеживания.Тогда он стоит на месте.Это происходит потому, что сцена еще не отслежена.Если это не правда (о чем я говорю) - проблема в 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)

Кроме того, это может быть связано с размером модели (количество полигонов) .

...