Я собираюсь обнаружить горизонтальную и вертикальную плоскость в ARKit.После определения, является ли это горизонтальной или вертикальной поверхностью, соответственно добавьте плоскость серого цвета на обнаруженную поверхность. При нажатии на обнаруженную плоскость я собираюсь добавить 3D-объект из файла .scn.
Мой код работает нормально для размещения3D-объект (файл .scn) в горизонтальной плоскости, но не работает правильно с вертикальной плоскостью.
3D-объект (файл .scn) для вертикальной плоскости, такой как фоторамка, направлен вправо в редакторе SceneKit.Поэтому я изменил его EularAngleY на -0, и теперь он обращен к фронту в редакторе SceneKit.Когда я нажимаю на обнаруженную вертикальную плоскость, которая обращена вперед, то и фоторамка направлена вправо, и если я перемещаю устройство вправо и размещаю фоторамку, это правильно.
Я хочу разместить 3D-объект .scn-файл, который должен быть параллелен плоскости (если вертикальная плоскость направлена вперед, то она должна быть лицевой стороной даже в .scn-файле и в любом направлении).не параллельно обнаруженной плоскости.
Нужно ли мне менять угол поворота также относительно угла наклона обнаруженной плоскости или нужно вносить какие-либо изменения в файл .scn в редакторе SceneKit?Как мне этого добиться?
Пожалуйста, проверьте нижеприведенный код на попадание в обнаруженную вертикальную плоскость.Что-то не так?
@objc func addObjectToSceneView1(withGestureRecognizer recognizer: UIGestureRecognizer){
let tapLocation = recognizer.location(in: sceneView)
let hitTestResults = sceneView.hitTest(tapLocation, types: .existingPlaneUsingExtent)
guard let hitTestResult = hitTestResults.first, let anchor = hitTestResult.anchor as? ARPlaneAnchor else { return }
let translation = hitTestResult.worldTransform.columns.3
let x = translation.x
let y = translation.y
let z = translation.z
guard let shipScene = SCNScene(named: "art.scnassets/frame/frame.scn"),
let shipNode = shipScene.rootNode.childNode(withName: "frame", recursively: true)
else { return }
shipNode.position = SCNVector3(x,y,z)
sceneView.scene.rootNode.addChildNode(shipNode)
}
.scn файл, как показано ниже.Этот файл .scn правильный?Или х должен быть с глубиной кадра?Каждый раз, когда я нажимаю на самолет, он показывает только это изображение.