IOS ArKit Tracking – вся сцена уходит вдаль ⇐ IOS
IOS ArKit Tracking – вся сцена уходит вдаль
Я использую ArKit с Metal в своем приложении для iOS без других фреймворков, таких как ARSCN. Иногда вся сцена ускользает, потом как бы возвращается, но уже далеко от исходного места. Я не вижу этого эффекта в других средствах просмотра моделей - на основе Unity или WebAR. Наверняка они используют ArKit под капотом (не все, но большинство из них). Интересно, какую дополнительную работу они проделывают, чтобы стабилизировать сцену на месте.
Вот фрагмент моего кода:
func getCameraViewMat(...) -> simd_float4x4 { //... вернуть session.currentFrame.camera.viewMatrix(для: .portrait) } func createAnchor(...) -> Int { // ... якоря[id] = ARAnchor(transform: mat) session.add(якорь: якоря[id]!) возвращаемый идентификатор } func getAnchorTransform(...) -> simd_float4x4 { //... вернуть якоря[id]!.transform } функция onUpdate(...) { // рисуем session.currentFrame.rawFeaturePoints!.points // рисуем все ARPlaneAnchor } сеанс func (_ сеанс: ARSession, cameraDidChangeTrackingState камера: ARCamera) { Logger.info("СОСТОЯНИЕ ОТСЛЕЖИВАНИЯ ИЗМЕНЕНО: \(camera.trackingState)") } Я вижу, что проблема не только в якорях — все движется, включая облако точек. Состояние отслеживания является нормальным и меняется на ограниченное только после того, как произошло смещение, что уже слишком поздно.
Что я могу сделать, чтобы предотвратить смещение?
Я использую ArKit с Metal в своем приложении для iOS без других фреймворков, таких как ARSCN. Иногда вся сцена ускользает, потом как бы возвращается, но уже далеко от исходного места. Я не вижу этого эффекта в других средствах просмотра моделей - на основе Unity или WebAR. Наверняка они используют ArKit под капотом (не все, но большинство из них). Интересно, какую дополнительную работу они проделывают, чтобы стабилизировать сцену на месте.
Вот фрагмент моего кода:
func getCameraViewMat(...) -> simd_float4x4 { //... вернуть session.currentFrame.camera.viewMatrix(для: .portrait) } func createAnchor(...) -> Int { // ... якоря[id] = ARAnchor(transform: mat) session.add(якорь: якоря[id]!) возвращаемый идентификатор } func getAnchorTransform(...) -> simd_float4x4 { //... вернуть якоря[id]!.transform } функция onUpdate(...) { // рисуем session.currentFrame.rawFeaturePoints!.points // рисуем все ARPlaneAnchor } сеанс func (_ сеанс: ARSession, cameraDidChangeTrackingState камера: ARCamera) { Logger.info("СОСТОЯНИЕ ОТСЛЕЖИВАНИЯ ИЗМЕНЕНО: \(camera.trackingState)") } Я вижу, что проблема не только в якорях — все движется, включая облако точек. Состояние отслеживания является нормальным и меняется на ограниченное только после того, как произошло смещение, что уже слишком поздно.
Что я могу сделать, чтобы предотвратить смещение?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение