2014-09-16 6 views
0

У меня есть проблема при рисовании руководства в единстве 2d. Я использовал вектор списка, чтобы нарисовать многоугольник, но я не могу его заполнить. Я также прочитал этот учебник: http://forum.unity3d.com/threads/draw-polygon.54092/ Но мне кажется, что мне нужно преобразовать многоугольник в треугольники. (Потому что мой многоугольник сложный, поэтому преобразовать в треугольники сложно. Мне нужно использовать какой-то алгоритм, например, обрезку ушей ...).Заполнение многоугольника в единстве 3d

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

Спасибо, что так много.

ответ

0

Вы застряли в преобразовании в сетку, чтобы получить заполнение для работы ... Графические процессоры (шейдеры) могут заполнять только внутренние пространства треугольников ... Это довольно легко, если вы работаете с закрытыми выпуклыми многоугольниками. Многоугольники с вогнутыми секциями будут иметь более сложный алгоритм для преобразования в сетку, но, похоже, вы уже провели некоторое исследование по этому вопросу (вы упомянули об усечении уха).

Удачи в реализации списка полигонов в треугольник algo :)

+0

Спасибо. В явном ядре или ядре C# я могу легко заполнить многоугольник: |. Знаете ли вы, почему единство не поддерживает эту функцию. – quangson91

+0

Его не единство - его трехмерная графическая карта, и единственный раз, когда графический процессор сканирует пиксели области отображения, когда он обрабатывает треугольник ... Vertex Shader использует данные матрицы мира/представления/проекции для перевода от объектных коордов до экранных коордов, если результирующие координаты проходят тест отсечения против окна просмотра, тогда пиксельный шейдер вызывается для каждого пикселя в треугольнике ... Цвет, УФ и нормали, прошедшие с данными вершин, смешиваются/интерполируются перед тем, как перейти к Pixel Shader. – Ascendion

Смежные вопросы