Я создаю 3D-сканирование материального порта в помещении моего дома, я помещаю 3d (мой дом) в Arkit - мир,
Теперь я хотел бы получить положение точки поворота положения 3D-объектов относительно положения камеры arkit, когда я перемещаюсь с моим телефоном - вы можете сказать, что я перемещаюсь внутри своей 3d модели дома.
Я добавил узел камеры на карту scnnode - - это узел, который используется только сохранить положение карты относительно текущего положения камеры - но положение камеры неправильное? Есть ли у вас какие-либо идеи, что это будет абсолютной фантазией c, поскольку я не могу решить это.
func Add3DMatterPort (augImage : AugmentedImage, QRNode : SCNNode)
{
updateQueue.async {
let scene = SCNScene(named: "art.scnassets/1a/1a.scn");
self.map = scene?.rootNode.childNode(withName: "1a", recursively: false);
let position = SCNVector3(CGFloat((augImage.position.x as NSString).floatValue), CGFloat((augImage.position.y as NSString).floatValue), CGFloat((augImage.position.z as NSString).floatValue));
let rx = ((augImage.rotation.rx as NSString).integerValue.degreesToRadians);
let ry = ((augImage.rotation.ry as NSString).integerValue.degreesToRadians);
let rz = ((augImage.rotation.rz as NSString).integerValue.degreesToRadians);
let rotation = SCNVector3(Float(rx), Float(ry), Float(rz));
self.map?.position = position;
// Rotation around an axis = eulerAngles
self.map?.eulerAngles = rotation;
QRNode.addChildNode(self.map!);
}
}
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
updateQueue.async {
/* HERE IS THE PROBLEM - I DON'T GET RIGHT VALUE - ITS map node which I want position of relative to the camera as i move around in the 3d model */
guard let pointOfView = self.scnView.pointOfView else { return}
let PointOfViewTransform = pointOfView.transform;
let orientation = SCNVector3(-PointOfViewTransform.m31, -PointOfViewTransform.m32, -PointOfViewTransform.m33);
let location = SCNVector3(PointOfViewTransform.m41, PointOfViewTransform.m42, PointOfViewTransform.m43);
let currentPositionOfCamera = orientation + location;
self.camera.position = currentPositionOfCamera
DispatchQueue.main.async {
self.poxX.text = String(self.camera.position.x);
self.posY.text = String(self.camera.position.y);
self.posZ.text = String(self.camera.position.z);
self.rotX.text = String(self.camera.rotation.x);
self.rotY.text = String(self.camera.rotation.y);
self.rotZ.text = String(self.camera.rotation.z);
self.rotW.text = String(self.camera.rotation.w);
}
}