#swift #augmented-reality #arkit #realitykit #arquicklook
Вопрос:
Я использую QLPreviewController
для показа контента AR. В новых iPhone с ЛИДАРОМ, похоже, по умолчанию включена окклюзия объектов.
Есть ли какой-либо способ отключить блокировку объектов в QLVideoController без необходимости создавать пользовательский контроллер представления ARKit? Поскольку мои модели довольно большие (здания в натуральную величину), они, кажется, исчезают или обрезаются в конце.
Ответ №1:
ARQuickLook
это библиотека, созданная для быстрой и высококачественной визуализации AR. Он использует движок RealityKit, поэтому все поддерживаемые здесь функции, такие как окклюзия, якоря, тени с трассировкой лучей, физика, DoF, размытие движения, HDR и т.д., Выглядят так же, как и в RealityKit.
Однако вы не можете включить on
/ off
эти функции в API QuickLook. Они on
установлены по умолчанию, если поддерживаются на вашем iPhone. В случае, если вы хотите включить on
/Закрыть off
людей, вам придется использовать фреймворки ARKit/RealityKit, а не QuickLook.
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
let box = try! Experience.loadBox()
arView.scene.anchors.append(box)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.switchOcclusion()
}
fileprivate func switchOcclusion() {
guard let config = arView.session.configuration as?
ARWorldTrackingConfiguration
else { return }
guard ARWorldTrackingConfiguration.supportsFrameSemantics(
.personSegmentationWithDepth)
else { return }
switch config.frameSemantics {
case [.personSegmentationWithDepth]:
config.frameSemantics.remove(.personSegmentationWithDepth)
default:
config.frameSemantics.insert(.personSegmentationWithDepth)
}
arView.session.run(config)
}
}
Обратите особое внимание на то, что People Occlusion
поддерживается на чипсетах A12 и более поздних версий. И это работает, если вы используете iOS 12 и выше.
P.S.
Единственным настраиваемым объектом QuickLook является объект из класса ARQuickLookPreviewItem.
Используйте класс ARQuickLookPreviewItem, когда вы хотите управлять фоном, указать, к какому содержимому относится общий лист, или отключить масштабирование, если нецелесообразно разрешать пользователю масштабировать определенную модель.
Комментарии:
1. Спасибо за подробную информацию, я боялся, что это так. На самом деле у меня та же проблема с Android.