Есть ли способ гарантировать, что объект всегда отображается поверх другого без наложений?
У меня есть некоторые проблемы с предметами одежды на аватаре, как вы можете видеть на изображении ниже
Большинство предполагает, что я просто стягиваю штаны с тела в программном обеспечении для моделирования, и это хорошо, пока не будет совмещено с другими предметами одежды.
Теперь я мог бы снять рубашку с брюк, но у меня есть много разных предметов одежды, и проверить / отрегулировать каждый из них не похоже на путь.
Было бы лучше попытаться применить какую-то систему наслоения.
Может ли кто-нибудь посоветовать мне, как я могу достичь такой системы или как я могу достичь результатов, к которым я стремлюсь?
Я уже пытался сделать это с помощью шейдеров, но мне не повезло в достижении результата, который я пытаюсь получить (но, по общему признанию, я не эксперт по Shaderlab/CG)
Я также пытался разделить аватар на разные части и заменить их сетками для одежды, но это все еще оставляет проблему одежды видимой друг через друга.
Я бы предпочел иметь какую-то систему, где я могу нанести слой на каждый предмет одежды, чтобы независимо от того, что они отображали друг на друге в правильном порядке, без наложений.
1 ответ
Если вы действительно хотите использовать слои, вы можете использовать слои рендеринга Unity, которые действительно созданы для этого.
Перейти к слоям -> Редактировать слои
Добавьте нужные вам слои (порядок не имеет значения)
Назначьте слои для объектов, которые вы хотите визуализировать с помощью кератиновой камеры.
В качестве примера я добавил
trousers cube
со слоемtrousers
,pillover cube
со слоемpullover
иOnTop cube
со слоемOnTop
Создайте новый пустой GameObject и назовите его, например,
CameraParent
, Это будет содержать все ваши камеры, и вы должны переместить эту камеру вместо камеры, которую вы продвинули до сих пор.В случае, если это приложение VR/AR, вам может понадобиться
Camera
компонент для этого родительского объекта, сделать его основной камерой, но не делать ничегоСоздайте, например, 4 дочерних объекта и дайте им
Camera
составная часть. Также убедитесь, что только одна камера помечена какMainCamera
и только один имеетAudioListener
в вашей сцене. Я использовал 4 камеры в качестве примера, чтобы иметьTrousersCamera
PulloverCamera
OnTopCamera
иBackgroundCamera
,Теперь настройка для рендеринга
BackgroundCamera
Здесь вы делаете что-то еще, как вы делали раньшеClearFlags
напримерSkyBox
Culling Mask
: выберите все слои, кромеtrousers
,pullover
а такжеOnTop
Depth
:-1
TrousersCamera
Для рендеринга брюк (поверх всего остального)ClearFlags
: Только глубинаCulling Mask
: выберите толькоtrousers
Depth
:0
(вы видите большее значение отображается поверх более низкого значения)
PulloverCamera
Для рендеринга пуловера поверх брюкClearFlags
: Только глубинаCulling Mask
: выберите толькоpullover
Depth
:1
OnTopCamera
Для рендеринга чего-то еще поверх всегоClearFlags
: Только глубинаCulling Mask
: выберите толькоOnTop
Depth
:2
В результате вы можете видеть, что хотя красный куб (OnTop cube
) действительно далеко позади остальных и синий кубик (Pullover cube
) посередине красный всегда будет отображаться сверху, чем синий, а не коричневый (trousers cube
) и наконец фон.