Дополненная реальность
Дополненная реальность (или AR) позволяет делать работу приложения захватывающей и увлекательной, незаметно смешивая виртуальные объекты с реальным миром. Используя камеру устройства для демонстрации физического мира на экране в реальном времени, ваше приложение накладывает трехмерные виртуальные объекты, создавая иллюзию того, что эти объекты действительно существуют. В зависимости от специфики вашего приложения, люди могут переориентировать устройство, чтобы исследовать объекты под разными углами, взаимодействовать с объектами с помощью жестов и движений и даже присоединяться к другим людям в многопользовательском режиме AR. Для руководства разработчика см. ARKit.

Предлагайте функции AR только на поддерживаемых устройствах. Если основной целью вашего приложения является AR, сделайте его доступным только для устройств, которые поддерживают ARKit. Если ваше приложение включает функции, которые требуют определенных возможностей AR, или если функции AR являются необязательными в вашем приложении, не показывайте людям ошибку, если они пытаются использовать эти функции на устройстве, которое их не поддерживает; вместо этого просто не предлагайте эту функцию на неподдерживаемом устройстве. Руководство разработчика см. в разделе Проверка поддержки устройства и разрешения пользователя.
Создание захватывающей и комфортной работы приложения

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

Стремитесь к убедительности иллюзий при размещении реалистичных объектов. Создавайте подробные трехмерные объекты с реалистичными текстурами, соответствующими физической среде, в которой вы их размещаете. Используя информацию из ARKit, вы можете правильно масштабировать объекты и размещать их на обнаруженных реальных поверхностях, отражать условия освещения окружающей среды и моделировать зернистость камеры, отбрасывать рассеянные тени от объектов на реальных поверхностях и обновлять визуальные элементы при изменении положения камеры. Убедитесь, что ваше приложение обновляет сцены 60 раз в секунду, чтобы объекты не прыгали и не мерцали.

Посмотрите, как виртуальные объекты с отражающими поверхностями отображают окружающую среду. Отражения в ARKit - это приближения, основанные на окружающей среде, захваченной камерой. Чтобы сохранить иллюзию реальности AR, выбирайте маленькие или грубые отражающие поверхности, которые сглаживают эффект приближения.

Используйте звук и тактильные ощущения, чтобы улучшить впечатления пользователей.
Звуковой эффект или ощущение тактильности - отличный способ подтвердить, что виртуальный объект вступил в контакт с физической поверхностью или другим виртуальным объектом. Фоновая музыка также может помочь окутать людей в виртуальном мире. Для руководства, см. Аудио и Тактильность.

Минимизируйте текст в окружающей среде. Отображайте только ту информацию, которая нужна людям для работы с вашим приложением.

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

Используйте косвенные элементы управления. Косвенные элементы управления не являются частью виртуальной среды, они представляют собой 2D-элементы управления, отображаемые на экране. Если пользователям нужен доступ к постоянным элементам управления в вашем приложении, размещайте их таким образом, чтобы людям не приходилось менять положения самого устройства для доступа к ним. Кроме того, используйте полупрозрачность в косвенном элементе управления, чтобы избежать затемнения основной сцены. Например, приложение Measure использует экранное пространство для отображения сочетания полупрозрачных и непрозрачных элементов управления, которые люди используют для измерения объектов в реальном мире.
Предусмотрите тот факт, что люди будут использовать ваше приложение в самых различных реальных условиях. Люди могут открыть ваше приложение в месте, где не так много пространства для перемещения или нет больших плоских поверхностей. Четко проинформируйте людей о требованиях и ожиданиях вашего приложения, чтобы помочь им понять, как их физическая среда может повлиять на восприятие AR. Вы также можете предоставить им различные наборы функций для использования в разных средах.

Помните о комфорте людей. Держать устройство на определенном расстоянии или под углом в течение длительного периода может быть утомительным. Чтобы не вызывать усталости, размещайте объекты на расстоянии, уменьшающем необходимость перемещать устройство ближе к объекту; в игре старайтесь делать уровни короткими, а также с непродолжительными периодами ожидания.

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

Помните о безопасности людей. Когда люди погружаются в опыт AR, они не всегда осознают свое физическое окружение, поэтому быстрые, широкие или расширяющиеся движения могут быть опасными. Сделайте ваше приложение безопасным для работы, например, игра не должна поощрять большие или внезапные движения.
Используйте обучение в начале работы
Прежде чем люди смогут насладиться впечатлениями от AR в вашем приложении, им необходимо переместить свое устройство таким образом, чтобы ARKit мог оценить окружение и обнаружить поверхности. В iOS 13 и более поздних версиях вы можете использовать встроенное обучение, чтобы показать людям, что делать, и предоставить обратную связь на начальном процессе. Вы также можете использовать обучение, чтобы помочь людям повторно настроить AR - процесс, известный как переопределение места, - после прерывания процесса AR, например, когда люди ненадолго переключаются на другое приложение. Для руководства по переопределению места см. Обработка прерываний; для руководства разработчика, см. ARCoachingOverlayView.
Скрывайте ненужные элементы интерфейса приложения, пока люди используют режим обучения. Режим обучения появляется автоматически при запуске инициализации или переопределения места, поэтому вы должны быть готовы скрыть несвязанный пользовательский интерфейс, чтобы помочь людям сосредоточиться на инструкциях режима обучения.

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

Покажите пользователям, как найти поверхность и разместить объект. Вы можете использовать предоставляемый системой режим обучения, чтобы помочь людям найти горизонтальную или вертикальную плоскую поверхность для размещения объекта. После того, как ARKit обнаружит поверхность, ваше приложение может отобразить пользовательский визуальный индикатор, чтобы показать, когда возможно размещение объекта. Вы можете помочь людям понять, как размещенный объект будет выглядеть в окружающей среде, совместив ваш индикатор с плоскостью обнаруженной поверхности.
Индикатор приложения
Когда люди размещают объект, сразу интегрируйте этот объект в среду AR. Несмотря на то, что обнаружение поверхности быстро и постепенно улучшает точность, лучше не ждать более точных данных перед размещением объекта. Используйте доступную информацию, чтобы мгновенно реагировать, когда люди размещают объект; затем, когда обнаружение поверхности завершится, при необходимости слегка уточните положение объекта. Например, если люди размещают объект за границами обнаруженной поверхности, осторожно подтолкните объект обратно на поверхность. Руководство разработчика по уточнению позиции объекта см. В разделе ARTrackedRaycast.

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

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

Добавьте информацию о классификации проекций, чтобы сообщать о размещении объекта. Например, разрешается размещать виртуальный предмет мебели только на плоскости, которая классифицируется как «пол», или требовать, чтобы проекция была классифицирована как «стол», размещая виртуальную игровую доску.
Проектирование интуитивного и приятного взаимодействия с объектами
Пусть люди управляют объектами напрямую, когда это возможно. Более захватывающе и интуитивно понятно, когда люди могут взаимодействовать с экранными трехмерными объектами, непосредственно касаясь их, чем с помощью косвенных элементов управления в пространстве экрана. Однако в ситуациях, когда люди используют ваше приложение, косвенные элементы управления могут работать лучше.
Прямое управление
Косвенное управление
Дайте людям возможность напрямую управлять виртуальными объектами, используя стандартные жесты. Например,поддерживайте жесты перетаскивания одним пальцем для движущихся объектов и жестЫ вращения двумя пальцами для вращающихся объектов. Для руководства см. Жесты.

Делайте взаимодействие простым. Сенсорные жесты по своей сути двумерны, но опыт AR включает в себя три измерения реального мира. Рассмотрим следующие подходы к упрощению взаимодействия пользователей с виртуальными объектами.
Ограничьте движение двухмерной поверхностью, на которой лежит объект.
Ограничить вращение объекта одной осью.
Отвечайте на жесты в разумной близости от интерактивных виртуальных объектов. Людям трудно быть точными, когда они касаются маленьких точек на объектах. Если ваше приложение обнаруживает жест рядом с интерактивным объектом, предположите, что люди хотят воздействовать на этот объект.

Поддержка инициируемого пользователем масштабирования объектов. Например, если ваше приложение дает возможность исследовать воображаемую среду, вероятно, имеет смысл поддерживать масштабирование объектов, поскольку вашему приложению не нужно представлять реальный мир. С другой стороны, если оно помогает покупателям определиться с выбором мебели, то масштабирование объекта стула не поможет им представить, как стул будет выглядеть в комнате.
совет
Независимо от цели вашего приложения, не используйте масштабирование как способ отрегулировать расстояние до объекта. Если вы увеличиваете удаленный объект, пытаясь приблизить его, получается более крупный объект, который все еще находится далеко.
Будьте осторожны с потенциально противоречивыми жестами. Например, жест с зажатием двумя пальцами подобен жесту с вращением двумя пальцами. Если вы реализуете два подобных жеста как эти, обязательно протестируйте свое приложение и убедитесь, что они интерпретируются правильно.

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

Изучите более интересные методы взаимодействия. Жесты - не единственный способ взаимодействия людей с виртуальными объектами в AR. Ваше приложение может использовать другие факторы, такие как движение и близость, чтобы оживить контент. Например, игровой персонаж может повернуть голову, чтобы посмотреть на человека, идущего к нему.
Проектирование хорошего многопользовательского опыта
Когда несколько человек используют дополненную реальность вашего приложения одновременно, каждый участник видит свою среду независимо, а ARKit автоматически их объединяет. Руководство разработчика см. в разделе isCollaborationEnabled.

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

Дайте возможность новым участникам входить в многопользовательский режим AR. Если ваше приложение не требует, чтобы все участники присоединились до начала работы приложения, добавьте возможность использования встроенного объединения карт, чтобы новые пользователи могли быстро присоединиться к текущему режиму AR. Руководство разработчика см. В разделе isCollaborationEnabled.
Реакция на объекты реального мира
Вы можете расширить возможности AR, используя известные изображения и объекты в реальной среде, чтобы вызвать появление виртуального контента. Например, приложение, которое распознает театральные плакаты для научно-фантастического фильма, может привести к тому, что виртуальные космические корабли выйдут из плакатов и облетят окружающую среду. Другой пример - приложение для художественного музея, которое представляет виртуального гида, когда узнает скульптуру. Чтобы включить подобные процессы, ваше приложение предоставляет набор двухмерных эталонных изображений или трехмерных эталонных объектов, и ARKit указывает, когда и где он обнаруживает любой из этих элементов в текущей среде. Руководство разработчика см. в разделе Распознавание изображений при работе с AR.

Когда обнаруженное изображение исчезает первым, отложите удаление виртуальных объектов, которые к нему прикреплены. ARKit не отслеживает изменения положения или ориентации каждого обнаруженного изображения. Чтобы предотвратить мерцание виртуальных объектов, подождите не менее одной секунды, прежде чем их заглушать или удалять.

Ограничьте количество используемых эталонных изображений за один раз. Производительность обнаружения изображений работает лучше всего, когда ARKit ищет 100 или менее отдельных изображений в реальной среде. Если вам нужно более 100 опорных изображений, вы можете изменить набор активных опорных изображений в зависимости от контекста. Например, приложение-гид по музею может запросить разрешение на использование служб определения местоположения для определения той части музея, в которой находится человек, а затем искать только изображения, отображаемые в этой области.

Ограничьте количество опорных изображений, требующих точного положения. Обновление позиции эталонного изображения требует больше ресурсов. Используйте отслеживаемое изображение, когда изображение может перемещаться в окружающей среде или когда прикрепленная анимация или виртуальный объект невелики по сравнению с размером изображения.
Коммуникация с людьми
Если вы должны отобразить учебный текст, используйте доступную терминологию. AR - это продвинутая концепция, которая может даже пугать некоторых людей. Чтобы сделать его доступным, избегайте использования технических терминов, таких как ARKit, обнаружение мира и трэкинг. Вместо этого используйте знакомые, разговорные термины, которые большинство людей поймут.
В трехмерном контексте укажите 3D-подсказки. Например, размещение трехмерного индикатора поворота вокруг объекта является более интуитивно понятным, чем отображение текстовых инструкций. Старайтесь не отображать текстовые подсказки в трехмерном контексте.
В трехмерном контексте укажите 3D-подсказки.
При необходимости используйте 2D-подсказку.
Сделайте важный текст легко читаемым. Используйте экранное пространство для отображения текста критических надписей, аннотаций и инструкций. Если вам нужно отобразить текст в трехмерном пространстве, убедитесь, что текст обращен к людям, и вы используете одинаковый размер шрифта независимо от расстояния между текстом и помеченным объектом.

При необходимости укажите способ получения дополнительной информации. Разработайте визуальный индикатор, соответствующий работе вашего приложения, чтобы показать людям, что они могут получить дополнительную информацию.
Обработка прерываний
ARKit не может отслеживать положение устройства и ориентацию во время прерывания, например, когда люди ненадолго переключаются на другое приложение или принимают телефонный звонок. После окончания прерывания ранее размещенные виртуальные объекты могут оказаться в неправильных положениях реального мира. Когда вы включаете локализацию, ARKit пытается восстановить эти виртуальные объекты на их первоначальные позиции в реальном мире, используя новую информацию. Руководство разработчика см. в разделе «Управление жизненным циклом сеанса и качеством отслеживания».

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

Минимизируйте прерывания, если ваше приложение поддерживает как AR, так и не AR. Один из способов избежать прерываний - это встроить опыт AR чтобы люди могли справиться с задачей, не выходя и не входя в AR. Например, если ваше приложение помогает людям выбрать предмет мебели для покупки, разместив его в комнате, вы можете позволить им сменить обивку, не выходя из опыта AR.

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

Указывайте когда фронтальная камера не может отследить лицо более чем на полсекунды. Используйте визуальный индикатор, чтобы указать, что камера больше не может отслеживать лицо человека. Если вам необходимо предоставить текстовые инструкции в этой ситуации, сведите их к минимуму.
Предложение способов решения проблем
Дайте возможность сбрасывают текущее состояние приложения, если оно не соответствует их ожиданиям. Не заставляйте людей ждать улучшения условий работы приложения или лучшего позиционирования объектов. Дайте им возможность начать все сначала и посмотреть, будут ли их результаты улучшены.
Достаточное освещение
Недостаточное освещение
Предлагайте возможные исправления, если возникнут проблемы. Анализ реальной окружающей среды и обнаружение поверхности могут дать сбой или занять слишком много времени по разным причинам - недостаточное освещение, чрезмерно отражающая поверхность, поверхность без достаточного количества деталей или слишком быстрое движение камеры. Если ваше приложение уведомлено об этих проблемах, используйте понятный язык, чтобы дать предложения по их решению.
AR символ
Приложения могут отображать символ AR в элементах управления, которые запускают интерфейсы на основе ARKit. Вы можете скачать этот символ в разделе Ресурсы.
Используйте символ AR, как задумано. Символ должен использоваться строго для начала работы на основе ARKit. Никогда не изменяйте символ (кроме регулировки его размера и цвета), не используйте его для других целей или используйте его в сочетании с AR, не созданным с помощью ARKit.

Поддерживайте минимальное свободное пространство. Минимальный объем свободного пространства, необходимый вокруг символа AR, составляет 10% от высоты символа. Не позволяйте другим элементам нарушать это пространство или каким-либо образом закрывать его

AR значки
Приложения, содержащие наборы продуктов или другие объекты, могут использовать значки для идентификации определенных элементов, которые можно просматривать в AR с помощью ARKit. Например, приложение универмага может использовать значок для маркировки мебели, которую люди могут просмотреть в своем доме перед покупкой.
Используйте значки AR по назначению и не меняйте их. Вы можете скачать значки AR, доступные в свернутом и развернутом виде, в разделе Ресурсы. Используйте эти изображения исключительно для идентификации продуктов или других объектов, которые можно просматривать в AR с помощью ARKit. Никогда не меняйте значки, не меняйте их цвет, не используйте их для других целей и не применяйте их в сочетании с опытом AR, созданным не с помощью ARKit.
Значок AR
Символ AR
Лучше использовать значок AR чем просто символ AR. Используйте символ в ограниченных пространствах, которые не могут вместить значок AR.

Используйте значки только тогда, когда ваше приложение содержит смесь объектов, которые можно просматривать в AR, и объектов, которые нельзя. Если все объекты в вашем приложении могут быть просмотрены в AR, то значок не нужен.

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

Поддерживайте минимальное свободное пространство. Минимальный объем свободного пространства, требуемого вокруг значка AR, составляет 10% от высоты значка. Другие элементы не должны нарушать это пространство или закрывать значок.