Тунг Нгуен,
Надеюсь, у тебя был хороший день: -)
Я собираюсь попытаться помочь (просто не уверен, что именно вы ищете) ... но я думаю, у меня есть некоторые подсказки ;-)
Я собираюсь дать вам подсказки и посмотреть, смогу ли я помочь:
Вопрос:
«Как получить реальную координату центра мира сцены в арките?»
1) если вы спрашиваете о центре системы координат реального мира:
Вот как вы это видите:
https://developer.apple.com/documentation/scenekit/scndebugoptions/2882039-showworldorigin
Как использовать в коде:
В функции viewDidLoad
sceneView.debugOptions = [ARSCNDebugOptions.showWorldOrigin]
Как получить позицию мирового происхождения?
Если я понимаю, о чем вы просите, реальный центр ARKit - это положение и ориентация устройства на момент первого запуска конфигурации сеанса. Координаты будут (0,0,0).
[Если для вас это не имеет смысла, дайте мне знать (я знаю, что часто пропускаю, но при наборе текста на iPad).]
Вот как расположить что-то в центре реального мира (мы знаем, что центр мира находится в координатах (0,0,0))
Как использовать в коде;
func addBox() {
// create a SceneKit box shape
let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)
// create a SceneKit node
let boxNode = SCNNode()
// attach the shape to the node
boxNode.geometry = box
// give node a position ( this will be the real world center!
boxNode.position = SCNVector3(0, 0, 0)
// SCNVector3 you can think of for now as SCNVector3(x,y,z)
//https://developer.apple.com/documentation/scenekit/scnvector3
// create a SceneKit scene
let scene = SCNScene()
// add the node as a child of the rootNode
// the root node defines the origin of the world coordinate systems for SceneKit.
//Apple Documentation states:"The world coordinate system of the view's
//SceneKit scene directly responds to the AR world coordinate system
//established by the session configuration."
// so ARKit and SceneKit world coordinate systems match :-)
scene.rootNode.addChildNode(boxNode)
//add the SceneKit scene to sceneView
sceneView.scene = scene
}
Итак, мой первый ответ вам - сохранить позиционирование переменной.
Как использовать в коде:
let ARWorldOrigin = SCNVector3(0, 0, 0)
Используйте это, чтобы сделать все ваши измерения
1) Вы имели в виду центр физического экрана?
2) Вы имели в виду центр поля зрения просмотра камеры?
(Попробуйте эту страницу стека потока для подсказок:
Получить все ARAnchors сфокусированной камеры в ARKIT
3) Перейдите по всем ссылкам из этого вопроса stackoverflow:
Какая единица измерения используется в положении SCNVector3 для x, y и z в ARKit
Я надеюсь, что смог каким-то образом помочь и понять ваш вопрос:
Хорошего дня!
И надеюсь, что программирование ARkit
Мы все учимся, убедившись в том, что знаем.
Smartdog