Когда вы устанавливаете позицию своего SCNNode
, вы инициализируете SCNVector3
, который описывает положение узла.
Вы должны определить положение центральной точки узла относительно позиции родителя ( центральная точка не обязательно находится в центре вашего пользовательского узла, ноесли у вас есть базовые узлы с геометрией, такие как SCNBox
или SCNSphere
, центральная точка находится в центре)
Простым примером может быть добавление узла с геометрией SCNBox
к rootNode
из sceneView
scene
, которые вы получаете при создании в Xcode нового приложения дополненной реальности .
let cube = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
let material = SCNMaterial()
material.diffuse.contents = UIColor.red
cube.materials = [material]
let node = SCNNode()
node.position = SCNVector3(x: 0, y: 0, z: -0.5)
node.geometry = cube
sceneView.scene.rootNode.addChildNode(node)
Как видите, для инициализации SCNVector3
необходимо определить x, y и z позиции центральной точки узла .Обратите внимание, что единицы измерения указаны в метрах.
Я создал (очень приятно) изображение с x, y и z , которые должны помочь вам понять, как расположить вашу SCNNode
:
... origin - источник системы координат родителя узла при добавлении узла.Происхождение изображения AR world упрощено как положение центра ARSCNView