2017-02-16 9 views
3

Есть ли способ определить, попадает ли объект с определенным количеством вершин в плоскость? Если это так, я хочу нарисовать его в двоичном (черно-белом) на плоскости или создать текстуру с ним.Unity Intersections Mask

И мне также не важно, можно ли это создать только с помощью raycasts или некоторых сложных операций физики/шейдеров/и т. Д. Мне просто интересно, какой математический алгоритм может создать это.

Вот пример того, что я пытаюсь достичь: Here is an example of what im trying to achieve

Cheers, Michael

ответ

2

Большинство игр будет добиться этого со специализированными шейдеры:

  1. Первый проход оказывает карта глубины для непрозрачных объектов в сцене
  2. Второй проход использует перекресток Адер для прозрачного объекта (ов)

Пересечения шейдера ищет фрагменты, где глубина равна (или почти равен) на глубину от первого прохода, то цветов этих фрагментов по-разному.

A question on the Game Development Stack Exchange более подробно, включая скриншоты и демонстрацию WebGL.

В вашем случае, это может выглядеть следующим образом:

  1. Отрендерьте плоскость, как непрозрачный геометрия
  2. Рендер другие объекты, используя пересечение Shader
    • Фрагменты, которые пересекают плоскость рисуются
    • Фрагменты, которые делают не пересекают плоскость отбрасываются

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

+0

Не могли бы вы дать мне пример этого шейдера в единстве .. им не так хорошо с шейдерами? – Michael