В вашем примере виртуальный мир скрыт за стеной .Чтобы получить портал, как в представленном фильме, вам нужно отверстие в стене (где находится вход), а не плоскость, блокирующая ваши трехмерные объекты.Альфа-канал portal's entrance
должен выглядеть как правая часть следующего изображения:
Также посмотрите мои ответы в SOposts: ARKit скрывает объекты за стенами и ARKit - Рендеринг трехмерного объекта под невидимой плоскостью для проверки того, как настроить невидимый материал.
Код может выглядеть таквот этот:
portalPlane.geometry?.materials.first?.colorBufferWriteMask = []
portalPlane.geometry?.materials.first?.readsFromDepthBuffer = true
portalPlane.geometry?.materials.first?.writesToDepthBuffer = true
portalPlane.renderingOrder = -1
И, конечно, вы можете использовать свойства в инспекторе материалов:
Для плоскости порталаследующие свойства: Writes Depth
- true, Reads Depth
- true, Write to Color
- пусто, Rendering Order
(в Node Inspector) - -1
.
Для 3D-объектов внутри портала Rendering Order
(в Node Inspector) больше 0
.
Вы точно можете наблюдать a hidden effect
прямо в окне просмотра Xcode .
Теперь скрытая стена маскирует большую часть 3D, чтобы показать реальную улицу, и вы видите свою 3D-среду через портал (неверный результат включенслева, справа результат находится в правой части этой фотографии).
И на следующем рисунке показано, как 3D стена (в моем случае она вытесняется)плоскость) выглядит следующим образом:
Но для exit
портала вам просто нужен трехмерный объект, такой как door
(неотверстие в стене), и это exit
должно выглядеть как левая сторона представленных изображений.Нормы door
должны быть указаны внутрь, нормы wall
должны быть указаны снаружи.Материал для обоих объектов односторонний.
Надеюсь, это поможет.