Тип 0: Points (точки)
MDX: 00
MDL: Points
Полигонов как таковых нет, игра отображает модель в виде набора разъединённых точек. При этом точки вполне себе имеют текстуру, то есть каждый вертекс рендерится в виде точки, принимая цвет исходя из своей UV-координаты.
Имеет особое свойство: чем ближе к модели камера (то есть, чем больше места на экране занимает модель), тем хуже различимы точки. Подозреваю, что это означает, что каждая точка рендерится на экране ровно в 1 пиксель, но не настаиваю на этом.
MDL: Points
Полигонов как таковых нет, игра отображает модель в виде набора разъединённых точек. При этом точки вполне себе имеют текстуру, то есть каждый вертекс рендерится в виде точки, принимая цвет исходя из своей UV-координаты.
Имеет особое свойство: чем ближе к модели камера (то есть, чем больше места на экране занимает модель), тем хуже различимы точки. Подозреваю, что это означает, что каждая точка рендерится на экране ровно в 1 пиксель, но не настаиваю на этом.
Когда я это проверял в первый раз, я не догадался включить Unshaded, так что поинты видно не очень хорошо, но переделывать лень.
Тип 1: Lines (линии)
MDX: 01
MDL: Lines
Распределяет группу вершин по парам, каждая пара образует отрезок, который и рендерится в игре.
MDL: Lines
Распределяет группу вершин по парам, каждая пара образует отрезок, который и рендерится в игре.
Я опасался, что тестовая модель будет выглядеть совсем сломано, из-за того, что в геосете нечётное количество вершин, но вроде нормально. Думаю, что суть понятна. И да, я всё ещё не догадался включить Unshaded.
Вот ещё пример:
Вот ещё пример:
Faces 1 6 {
Lines {
{ 1, 2, 0, 5, 4, 3 },
}
}
Шесть вершин отрендерились как три отрезка.
Подрубил Unshaded.
Тип 2: Line Loop (замкнутая линия)
MDX: 02
MDL: LineLoop
Группа вершин соединяется по очереди, с последующим замыканием последней с первой, образуя таким образом замкнутую ломанную кривую.
MDL: LineLoop
Группа вершин соединяется по очереди, с последующим замыканием последней с первой, образуя таким образом замкнутую ломанную кривую.
Вот переделка трёх отрезков из примера выше в Line Loop:
Faces 1 6 {
LineLoop {
{ 1, 2, 0, 5, 4, 3 },
}
}
Тип 3: Line Strip (цепь линий)
MDX: 03
MDL: LineStrip
Этот тип похож на тот, что выше, он также соединяет вершины группы отрезками по очереди. То есть первую со второй, вторую с третьей и так далее, закончив отрезком между предпоследней и последней. Короче говоря, на выходе получается одна незамкнутая кривая.
MDL: LineStrip
Этот тип похож на тот, что выше, он также соединяет вершины группы отрезками по очереди. То есть первую со второй, вторую с третьей и так далее, закончив отрезком между предпоследней и последней. Короче говоря, на выходе получается одна незамкнутая кривая.
Если вернуться к примеру с шестью вершинами, то можно увидеть, что такой тип полигона создаст пять отрезков из шести вершин.
Faces 1 6 {
LineStrip {
{ 1, 2, 0, 5, 4, 3 },
}
}
Тип 4: Triangles (треугольники)
MDX: 04
MDL: Triangles
Думаю, что тут всё понятно: группа вершины делится на тройки, каждая из которых образует треугольник. Основной тип полигонов, строго говоря, в большинстве случаев он единственный и используется.
Я сделаю два рандомных треугольника, чтобы потом на примере их вершин показать другие типы полигонов.
MDL: Triangles
Думаю, что тут всё понятно: группа вершины делится на тройки, каждая из которых образует треугольник. Основной тип полигонов, строго говоря, в большинстве случаев он единственный и используется.
Я сделаю два рандомных треугольника, чтобы потом на примере их вершин показать другие типы полигонов.
Тип 5: Triangle Strip (полоса треугольников)
MDX: 05
MDL: TriangleStrip
Вот это уже интересный тип. Здесь также формируются треугольники, но они не разделяются на тройки, а собираются из группы вершин по очереди. То есть первый треугольник будет собран из вершин 1, 2, 3, второй треугольник — из вершин 2, 3, 4, третий — из вершин 3, 4, 5, и т.д. В теории, это может быть невероятно хорошо для уменьшения веса модели, ведь из группы в 6 вершин собирается 4 треугольника (против 2 треугольников в типе Triangles). То есть можно получить большую полигональность при меньшем числе вертексов.
MDL: TriangleStrip
Вот это уже интересный тип. Здесь также формируются треугольники, но они не разделяются на тройки, а собираются из группы вершин по очереди. То есть первый треугольник будет собран из вершин 1, 2, 3, второй треугольник — из вершин 2, 3, 4, третий — из вершин 3, 4, 5, и т.д. В теории, это может быть невероятно хорошо для уменьшения веса модели, ведь из группы в 6 вершин собирается 4 треугольника (против 2 треугольников в типе Triangles). То есть можно получить большую полигональность при меньшем числе вертексов.
Википедия.
Мой пример будет чуть ниже.
Мой пример будет чуть ниже.
Тип 6: Triangle Fan (Веер треугольников)
MDX: 06
MDL: TriangleFan
Данный тип, аналогично с предыдущим, позволяет более оптимизировано хранить треугольники.
Первая вершина из группы будет являться общей для всех треугольников, а две оставшиеся вершины берутся по очереди. То есть, треугольник определяется вершинами 1, n+1 и n+2, где n — номер треугольника.
MDL: TriangleFan
Данный тип, аналогично с предыдущим, позволяет более оптимизировано хранить треугольники.
Первая вершина из группы будет являться общей для всех треугольников, а две оставшиеся вершины берутся по очереди. То есть, треугольник определяется вершинами 1, n+1 и n+2, где n — номер треугольника.
Википедия.
Покажу на примере как выглядят разные типы на одних и тех же вершинах (пример абсолютный рандомный, можно, конечно, было бы подобрать более удачные, создав красивые сложные формы, но зачем, ведь это всё равно никто не прочитает).
Покажу на примере как выглядят разные типы на одних и тех же вершинах (пример абсолютный рандомный, можно, конечно, было бы подобрать более удачные, создав красивые сложные формы, но зачем, ведь это всё равно никто не прочитает).
Faces 1 6 {
Triangles {
{ 1, 2, 0, 5, 4, 3 },
}
}
///////
Faces 1 6 {
TriangleStrip {
{ 1, 2, 0, 5, 4, 3 },
}
}
///////
Faces 1 6 {
TriangleFan {
{ 1, 2, 0, 5, 4, 3 },
}
}
Тип 7: Quads (Четырёхугольники)
MDX: 07
MDL: Quads
Полигоны из четырёх вершин, увы, у меня не получилось заставить их работать. Для чистоты эксперимента, я добавлял в модель источник света, чтобы убедиться, что варкрафт её воспроизводит. В результате источник света рендерился, а геосет с прямоугольными полигонами так на экране и не появился. То есть mdx с квадами для варкрафта вполне валидна, но такие полигоны он не поддерживает.
Кстати, можно предположить, что квадратные варкрафтовские партиклы тоже состоят из треугольников, раз четырёхугольные полигоны не работают
MDL: Quads
Полигоны из четырёх вершин, увы, у меня не получилось заставить их работать. Для чистоты эксперимента, я добавлял в модель источник света, чтобы убедиться, что варкрафт её воспроизводит. В результате источник света рендерился, а геосет с прямоугольными полигонами так на экране и не появился. То есть mdx с квадами для варкрафта вполне валидна, но такие полигоны он не поддерживает.
Кстати, можно предположить, что квадратные варкрафтовские партиклы тоже состоят из треугольников, раз четырёхугольные полигоны не работают
Тип 8: Quad Strip (Полоса четырёхугольников)
MDX: 08
MDL: QuadStrip
Ожидание: должен создавать полосу из квадов по аналогии с полосой треугольников.
Реальность: см. Quads.
MDL: QuadStrip
Ожидание: должен создавать полосу из квадов по аналогии с полосой треугольников.
Реальность: см. Quads.
Тип 9:Polygon (Полигон)
MDX: 09
MDL: Quads (это не опечатка, Yobgul's Converter, использующий dll игры, действительно выдаёт Quads при конвертировании mdx с байтом 09. Но по моим тестам слово Polygons в mdl файле также валидно для игры (и всё также не работает))
Ожидание: должен создавать многоугольник из произвольного количества вершин.
Реальность: см. Quads.
MDL: Quads (это не опечатка, Yobgul's Converter, использующий dll игры, действительно выдаёт Quads при конвертировании mdx с байтом 09. Но по моим тестам слово Polygons в mdl файле также валидно для игры (и всё также не работает))
Ожидание: должен создавать многоугольник из произвольного количества вершин.
Реальность: см. Quads.
Одобренные метки
Отклонённые метки
Текстурки Текстуры