Case study - Looking through holes in your reality (Пример использования. Взгляд сквозь отверстия в реальности)

Когда люди думают о смешанной реальности и о том, что они могут сделать с Microsoft HoloLens, они обычно придерживаться таких вопросов, как "Какие объекты я могу добавить в мою комнату?" или "Что я могу слой на вершине моего пространства?" Я хотел бы выделить еще одну область, которую вы можете рассмотреть , по сути волшебный трюк , используя ту же технологию для просмотра или через реальные физические объекты вокруг вас.

Технология

Если вы боролись с иностранцами, как они прорываются через ваши стены в RoboRaid, разблокировали стену безопасно в фрагментах, или повезло, чтобы увидеть ангар UNSC Бесконечности в опыте Halo 5 в E3 в 2015 году, то вы видели, что я говорю о. В зависимости от вашего воображения, этот визуальный трюк может быть использован, чтобы положить временные отверстия в ваш гипсоолл или скрыть миры под свободной половой доской.

RoboRaid adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

RoboRaid добавляет трехмерные трубы и другую структуру за стенами, видимые только через отверстия, созданные, как захватчики прорываются.

Используя одну из этих уникальных голограмм на HoloLens, приложение может обеспечить иллюзию содержимого за стенами или через ваш этаж так же, как реальность представляет себя через фактическое окно. Переместите себя влево, и вы можете видеть все, что находится на правой стороне. Получите ближе, и вы можете увидеть немного больше всего. Основное различие заключается в том, что реальные отверстия позволяют вам пройти, в то время как ваш пол упорно не позволит вам пройти через это волшебное голографическое содержимое. (Я добавлю задачу в невыполненную работу.)

Сопутствующие ресурсы

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

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

This is not an actual screenshot, but an illustration of how the secret underworld from MR Basics 101 looks on HoloLens. The black enclosure doesn’t show up, but you can see content through a virtual hole. (When looking through an actual device, the floor would seem to disappear even more because your eyes focus at a further distance as if it’s not even there.)

Это не фактический снимок экрана, но иллюстрация того, как тайный подземный мир из MR Basics 101 выглядит на HoloLens. Черный корпус не отображается, но вы можете увидеть содержимое через виртуальное отверстие. (При просмотре фактического устройства пол, казалось бы, исчезнет еще больше, потому что ваши глаза фокусируются на дополнительном расстоянии, как будто это даже не там.)

Голографическое содержимое с блокировкой мира

В Unity голографическое содержимое остается заблокированным миром так же просто, как добавление компонента WorldAnchor:

myObject.AddComponent<WorldAnchor>();

Компонент WorldAnchor постоянно настраивает положение и поворот объекта GameObject (и, таким образом, все остальное в этом объекте в иерархии), чтобы обеспечить его стабильность относительно близлежащих физических объектов. При создании содержимого создайте его таким образом, чтобы корневая сводка объекта была сосредоточена в этом виртуальном отверстии. (Если поворот объекта глубоко в стене, его небольшие изменения в позиции и повороте будут гораздо более заметными, и отверстие может выглядеть не очень стабильно.)

Occluding все, кроме виртуальной дыры

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

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

Поддельные математические оповещения! Эти числа и формулы призваны проиллюстрировать точку, а не быть какой-либо точной метрикой!

Что вы видите через HoloLens:

( Reality * darkening_amount ) + Holograms

Что вы видите на снимках экранах и видео:

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

На английском языке: то, что вы видите через HoloLens это простое сочетание темной реальности (например, через солнцезащитные очки) и любые голограммы, которые приложение хочет показать. Но при снимке экрана изображение камеры смешивается с голограммами приложения в соответствии со значением прозрачности для каждого пикселя.

Одним из способов обойти это является изменение материала "черного ящика" только для записи в буфер глубины и сортировки со всеми другими непрозрачными материалами. Например, ознакомьтесь с файлом WindowOcclusion.shader в MixedRealityToolkit на GitHub. Соответствующие строки копируются здесь:

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

(Обратите внимание, что строка "Смещение 50, 100" заключается в решении несвязанных проблем, поэтому, вероятно, имеет смысл оставить это вне.)

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

Here is the secret underworld from MR Basics 101 as Unity draws it, except for the outer parts of the occluding box. Note that the pivot for the underworld is at the center of the box, which helps keep the hole as stable as possible relative to your actual floor.

Вот секрет подземного мира из MR Basics 101 , как Unity рисует его, за исключением внешних частей ящика. Обратите внимание, что поворот для подземного мира находится в центре коробки, что помогает держать отверстие как можно стабильнее по отношению к вашему фактическому полу.

Попробуйте сами

У вас есть HoloLens и хотите попробовать эффект для себя? Самое простое, что вы можете сделать (без написания кода) — установить бесплатное приложение 3D Viewer, а затем загрузить файл FBX, предоставленный на GitHub для просмотра модели цветок в вашей комнате. Загрузите его на HoloLens, и вы можете увидеть иллюзию на работе. Когда вы находитесь перед моделью, вы можете видеть только небольшое отверстие — все остальное невидимо. Посмотрите на модель с любой другой стороны, и она исчезает полностью. Используйте элементы управления перемещением, поворотом и масштабированием трехмерного средства просмотра для размещения виртуальной дыры на любой вертикальной поверхности, о чем можно подумать, чтобы создать некоторые идеи!

Viewing this model in your Unity editor will show a large black box around the flowerpot. On HoloLens, the box disappears, giving way to a magic window effect.

При просмотре этой модели в редакторе Unity будет отображаться большая черная коробка вокруг цветок. На HoloLens поле исчезает, давая путь к магическому эффекту окна.

Если вы хотите создать приложение, использующее этот метод, ознакомьтесь с руководством по MR Basics 101 в руководствах по Смешанная реальность. Глава 7 заканчивается взрывом на вашем полу, который показывает скрытый подземный мир (как на фото выше). Кто сказал учебники должны были быть скучными?

Ниже приведены некоторые идеи о том, где можно принять эту идею следующим образом:

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

Об авторе

Picture of Eric Rehmeyer Эрик Ремейер
Старший инженер по программному обеспечению @Microsoft

См. также