2016-04-28 2 views
0

Можно ли использовать буфер Vertex с буфером индекса и применять нормали? Кажется, что нормаль больше похожа на атрибут лица, чем на атрибут вершины. F.E. в кубе каждая вершина имеет 3 нормали, в зависимости от лица.Обработка нормалей с индексированной геометрией

Есть ли разумный способ использования нормалей с индексированной геометрией? Или мне нужно построить только Vertex Buffer и перестать использовать индексный буфер?

Заранее спасибо.

+1

Нормали являются атрибутами вершин; вам нужно дублировать вершины, где ваша сетка не должна быть гладкой. (В кубе каждый угол будет иметь три вершины, по одному для каждого «лицо нормальное».) – molbdnilo

+0

@molbdnilo, так что вы говорите, что в этом случае у меня было бы 24 вершин вместо 8, верно? Хорошо, и как насчет случая, когда у меня есть, например, сложная человеческая сетка? –

+0

Человеческие лица гладкие, как и большинство вещей в природе. – molbdnilo

ответ

1

Да, возможно и даже лучше использовать индексированные лица. Все Normals будут храниться для каждого Vertex, как Positions.

Для куба будет больше вершин по сравнению с ненормальной моделью. Но для сферы будет одинаковое количество вершин (обычный Обычный для смежных лиц).

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

+0

Предположим, что у меня уже есть нормали (например, из OBJ-файла в блендере). Без нормалей у меня было бы 8 вершин и 24 индекса. Как я могу использовать Indexed Faces в этом примере? Использование одного нормального для вершины было бы неверным, поскольку оно было бы затененным по-разному в зависимости от лица. –

+1

У вас будет много вершин с одинаковой позицией и разными нормалями. Если noramls идет не с позиции (например, в .OBJ), вам нужно будет найти все уникальные пары PositionIndex и NormalIndex. –

+0

Хорошо, получилось, спасибо. Таким образом, в основном Cube - плохой пример, так как будет 24 уникальных вершины, верно? : P Sphear будет вести себя лучше, это правильно? –

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