17 июля 2011 в 21:44Рейтинг: 0
1
0
> Но ведь вершина может принадлежать одновременно четырём и двум фейсам, какой в этом случае брать фейс с нужной нам нормалью ? И мне кажется, что нормаль фейса не всегда совпадает с нормалью принадлежащей ей вершины ..
Чтобы понять это, нужно лезть в самые дебри.
На самом деле у каждого фейса есть свой набор так называемых Vertex Data, почти своя вершина. Но тут под вершиной понимается целая структура данных, которая включает координаты вершины, номарль вершины, цвет вершины, текстурные координаты вершины (UV) и и.д.
Чтобы одинаковые вершины не дублировались, используются индексы. И на самом деле фейс в коде, это набор индексов вершин, - не более. Все остальную информацию о фейсе получают именно через индексы.
Но тут надо понимать, что две одинаковые вершины это те, у которых все эти данные одинаковы (и нормали, и uv и прочее). Если координаты вершин равны, а нормали или uv нет, то это уже разные вершины. Кстати те вершины, что мы видим во вьюпорте блендера - это только координаты, но не сами Vertex Data.
Если тема интересна - поищи про индексные и вершинные буферы. Это как в OpenGL, так и в Direct3D.
Т.е. когда тебе кажется, что одна вершина принадлежит нескольким фейсам, то на самом деле это только общая координата вершины, а вот vertex data, которая содержит нормаль вершины, у них разная.
Не пытайся увидеть эти кишки во вьюпорте Blenderа, все это разработчики очень грамотно засмоскировали, предоставив лишь то, что нужно для аниматоров и художников. И правильно сделали.