Есть ли способ гарантировать, что объект всегда отображается поверх другого без наложений? - PullRequest
0 голосов
/ 12 февраля 2019

У меня возникли некоторые проблемы с предметами одежды на аватаре, как вы можете видеть на изображении ниже

Image 1

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

Image 2

Теперь я могу снять рубашку с брюк, но у меня есть много разных предметоводежда и проверка / подгонка каждого из них не похоже на путь.

Было бы лучше попробовать и применить какую-то систему наслоения.

Может кто-нибудь посоветовать мне, каквозможно, мне удастся добиться такой системы или как добиться результатов, к которым я стремлюсь?

Я уже пытался сделать это с помощью шейдеров, но мне не повезло в достижении результата, который я пытаюсьчтобы получить (но по общему признанию я не эксперт по Shaderlab / CG)

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

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

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы действительно хотите использовать слои, вы можете использовать Unity Render Layers , которые фактически созданы для этого.

  1. Перейти к слоям -> Редактировать слои

    enter image description here

  2. Добавьте нужные вам слои (порядок не имеет значения)

    enter image description here

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

    enter image description here

    в качестве примера я добавил trousers cube со слоем trousers, pillover cube со слоем pullover и OnTop cube со слоем OnTop

  4. Создатьновый пустой GameObject и назовите его, например, CameraParent.Это будет содержать все ваши камеры, и вы должны переместить эту камеру вместо камеры, которую вы продвинули до сих пор.

    В случае, если это приложение VR / AR, вам может понадобиться прикрепить компонент Camera к этому родительскому объекту, сделать его основной камерой, но не делать ничего

    enter image description here

  5. Создайте, например, 4 дочерних объекта и присвойте им компонент Camera.Также убедитесь, что только одна камера помечена как MainCamera, и только у одной есть AudioListener в вашей сцене.Я использовал 4 камеры в качестве примера, чтобы иметь TrousersCamera a PulloverCamera и OnTopCamera и BackgroundCamera.

  6. Теперь настройки для рендеринга

    • BackgroundCamera
      Здесь вы визуализируете что-нибудь еще, как вы делали раньше

      • ClearFlags: например, SkyBox
      • Culling Mask: выберите все слои кроме trousers, pullover и OnTop
      • Depth: -1
    • БрюкиКамера
      Длярендеринг брюк (поверх всего прочего)

      • ClearFlags: только глубина
      • Culling Mask: выберите только trousers
      • Depth: 0 (вы видите, что большее значение отображается поверх более низкого значения)
    • PulloverCamera
      Для визуализации пуловера поверхбрюки

      • ClearFlags: только глубина
      • Culling Mask: выберите только pullover
      • Depth: 1
    • OnTopCamera
      Для рендеринга чего-то еще поверх всего

      • ClearFlags: только глубина
      • Culling Mask: выберите только OnTop
      • Depth: 2

    enter image description here

В результате вы можете видеть, что хотя красный куб (OnTop cube) действительно далеко позади остальных и синий куб(Pullover cube) посередине красный всегда будет отображаться сверху, а не синий, а коричневый (trousers cube) и, наконец, фон.

enter image description here

...