ARKit - Вы можете изменить planeDetection во время сеанса? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть контроллер popoverview, чтобы переключать обнаружение горизонтальной или вертикальной плоскости. Я знаю, что он передается правильно с использованием протокола и делегата, но по какой-то причине он не меняет конфигурацию. Я изменяю конфигурацию в функции протокола.

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Вы можете изменить конфигурацию текущего сеанса, снова вызвав run(_:options:) с новой конфигурацией.

Если вы оставите параметр options пустым (или пропустите его) и передадите конфигурацию того же типа, что и текущий сеанс, все в вашем сеансе (существующие привязки и т. Д.) Останется прежним, за исключением все изменения, которые вы внесли в конфигурацию.

// before
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = .horizontal
session.run(configuration)

// after
let newConfiguration = ARWorldTrackingConfiguration()
newConfiguration.planeDetection = .vertical
session.run(newConfiguration)

В таком случае, если вы измените настройки обнаружения плоскости, но не удалите существующие привязки при повторном запуске сеанса, существующие привязки горизонтальной плоскости останутся в сеансе, но больше не будут обновляться.


Похоже, проблема, с которой вы сталкиваетесь, заключается в том, что вы изменяете свойства конфигурации, которую вы уже передали сеансу, и не передаете ее снова сеансу - это акт вызова run с вашим Конфигурация, в которой изменения вступают в силу.

Думайте об этом так: ARConfiguration - это форма заказа, которую вы можете использовать в магазине сэндвичей. Вы устанавливаете флажки, в которых говорится, что хотите лук и майонез, а затем передаете форму кассиру. Форма написана на копировальной бумаге, поэтому они отрывают копию со спины и отдают ее на кухню, а затем возвращают оригинал обратно, чтобы вы могли показать его на стойке пикапа, чтобы потребовать вашу еду. Если вы набросаете «майонез» и вместо этого проверите гуакамоле, то это не изменит того, что делает кухня, если вы снова не поговорите с кассиром.

...