Дополненная реальность (или AR от Augmented Reality) позволяет вам создавать захватывающий и увлекательный опыт, который легко сочетает виртуальные объекты с реальным миром. Используя камеру устройства, ваше приложение накладывает трехмерные виртуальные объекты, создавая иллюзию того, что эти объекты действительно существуют и находятся в реальном мире. В зависимости от возможностей вашего приложения, пользователи могут двигать устройство под разными углами, чтобы изучать объекты, взаимодействовать с объектами с помощью жестов и движений и даже присоединяться к другим пользователям в многопользовательской среде AR.
Предлагайте функции AR только на устройствах с поддержкой. Если основной целью вашего приложения является AR, сделайте его доступным только для устройств, поддерживающих технологию ARKit. Если ваше приложение имеет функции, требующие только конкретных возможностей AR, или если функции AR являются необязательными в вашем приложении, не показывайте людям ошибку, если они пытаются использовать эти функции на устройстве, которое их не поддерживает; вместо этого просто не показывайте эту функцию на неподдерживаемом устройстве.
Позвольте людям использовать весь экран. Оставляйте как можно больше места в камере для реального мира и виртуальных объектов вашего приложения. Избегайте загромождения экрана элементами управления и информацией, которые уменьшают эффект погружения.
Стремитесь к убедительным иллюзиям при размещении реалистичных объектов. Создавайте детальные 3D-объекты с реалистичными текстурами, чтобы они органично вписывались в объекты в реальной среде, в которой вы и будете размещать виртуальные. Используя информацию от ARKit, вы можете правильно масштабировать объекты и размещать их на распознанных поверхностях реального мира, отражать условия освещения окружающей среды и имитировать зернистость камеры, отбрасывать рассеянные тени объектов на поверхности реального мира и обновлять все эти параметры при изменении положения камеры. Чтобы избежать разрушения создаваемой вами иллюзии, убедитесь, что ваше приложение обновляет сцену 60 раз в секунду (60fps), чтобы объекты не прыгали и не мерцали.
Учитывайте то, как виртуальные с отражениями объекты отображают окружающую среду. Отражения в ARKit приблизительны и базируются на окружающей среде, снятой камерой. Чтобы поддержать иллюзию того, что опыт AR реален, ориентируйтесь на небольшие или грубые отражающие поверхности, которые уменьшают эффект этих допущений и поддерживают реальность происходящего в дополненной реальности.
Используйте звук и тактильность (haptics) для улучшения погружения. Звуковые эффекты или тактильные ощущения - отличный способ передать, что виртуальный объект вступил в контакт с физической поверхностью или другим виртуальным объектом. Фоновая музыка также может помочь погрузить людей в виртуальный мир.
Сведите к минимуму текст. Отображайте только ту информацию, которая нужна людям для работы с вашим приложением.
Если необходима дополнительная информация или какие-либо контролы, рассмотрите возможность их отображения непосредственно на экране. Контент на экране может быть зафиксирован в определенном месте либо в виртуальном мире, либо, что реже, на экране самого устройства. Обычно же людям легко находить и изучать контент в пространстве экрана, потому что он (контент) остается неподвижным, в то время как среда AR перемещается вместе с устройством.
Рассмотрите возможность использования непрямых (косвенных) контролов, когда вам необходимо показать элементы, которые всегда должны быть видны на экране. Непрямые контроллы не являются частью виртуальной среды — вместо этого они отображаются как 2D-элементы, отображаемые непосредственно на экране. Если людям нужен доступ к каким-либо элементам всегда в вашем приложении, то рассмотрите возможность размещения контролов таким образом, чтобы людям не приходилось менять положение устройства, чтобы дотянуться до них. Кроме того, рассмотрите возможность использования прозрачности в подобного рода элементах, чтобы избежать визуальной блокировки самой сцены. Например, приложение Measure хорошо использует экранное пространство, чтобы показать как сочетаются полупрозрачные и непрозрачные элементы, которые люди используют для измерения объектов в реальном мире.
Ожидайте, что люди будут использовать ваше приложение в самых разных средах. Люди могут открыть ваше приложение в месте, где не так много пространства для перемещения или нет больших плоских поверхностей. Четко сообщайте людям о том, что ваше приложение ожидает от них, чтобы помочь им понять, как их реальное окружение может повлиять на их опыт работы с AR. Вы также можете рассмотреть возможность добавления различных наборов функций для использования в разных средах.
Помните о комфорте людей. Длительное удержание устройства на определенном расстоянии или под определенным углом может быть утомительным. Чтобы избежать усталости, подумайте о размещении объектов на каком-то расстоянии, которое уменьшит необходимость в перемещении устройства ближе к объекту; в играх например рекомендуется проектировать короткие уровни и чередовать их с небольшим периодом, когда игроку не требуется активно взаимодействовать с устройством.
Если ваше приложение заставит так или иначе людей двигаться в пространстве, то подумайте как этот опыт сделать плавным и постепенным. Например, вы, возможно, не захотите, чтобы люди начали сразу уклоняться от виртуального снаряда, как только они войдут в вашу AR игру. Дайте людям время адаптироваться к опыту AR в вашем приложении, а затем постепенно и плаво внедряйте элементы с движением.
Помните о безопасности людей. Когда люди погружены в опыт AR, они не обязательно осознают свое физическое пространство, поэтому быстрые, размашистые движения могут быть опасными. Подумайте о том, как сделать ваше приложение безопасным для работы; например, игра может предупреждать о размашистых или резких движениях.
Прежде чем люди смогут наслаждаться AR-интерфейсом в вашем приложении, им необходимо расположить свое устройство таким образом, чтобы ARKit мог оценить окружающую обстановку и обнаружить поверхности. В iOS 13 и более поздних версиях вы можете использовать встроенное вью для обучения юзеров, чтобы показать людям, что нужно делать, и дать обратную связь во время процесса инициализации работы с AR. Вы также можете использовать это вью, чтобы помочь людям заново запустить AR процесс позиционирования, после того, как работа с AR прервется, например, если юзер уйдет ненадолго в другое приложение.
Спрячьте ненужный интерфейс, пока люди используют вью обучения с AR. По умолчанию вью отображается автоматически при запуске инициализации или перемещения, поэтому вы должны быть готовы скрыть интерфейс, чтобы помочь людям сосредоточиться на инструкциях во вьюшке.
При необходимости предлагайте кастомный опыт обучения. Хотя вы можете сконфигурировать системное вью обучения, чтобы помочь людям дать какую-то конкретную информацию, такую как определение горизонтальной или вертикальной плоскости, вам может потребоваться дополнительная информация или вы захотите использовать другой визуальный стиль. Если вы хотите создать собственный опыт для обучения юзера с работой AR, используйте для референса все равно системное вью.