Люди всё время меня спрашивают: какие есть типы полигонов в варкрафте и как они работают?

Тип 0: Points (точки)

MDX: 00
MDL: Points
Полигонов как таковых нет, игра отображает модель в виде набора разъединённых точек. При этом точки вполне себе имеют текстуру, то есть каждый вертекс рендерится в виде точки, принимая цвет исходя из своей UV-координаты.
Имеет особое свойство: чем ближе к модели камера (то есть, чем больше места на экране занимает модель), тем хуже различимы точки. Подозреваю, что это означает, что каждая точка рендерится на экране ровно в 1 пиксель, но не настаиваю на этом.
Когда я это проверял в первый раз, я не догадался включить Unshaded, так что поинты видно не очень хорошо, но переделывать лень.

Тип 1: Lines (линии)

MDX: 01
MDL: Lines
Распределяет группу вершин по парам, каждая пара образует отрезок, который и рендерится в игре.
Я опасался, что тестовая модель будет выглядеть совсем сломано, из-за того, что в геосете нечётное количество вершин, но вроде нормально. Думаю, что суть понятна. И да, я всё ещё не догадался включить Unshaded.
Вот ещё пример:
	Faces 1 6 {
		Lines {
			{ 1, 2, 0, 5, 4, 3 },
		}
	}
Шесть вершин отрендерились как три отрезка.
Подрубил Unshaded.

Тип 2: Line Loop (замкнутая линия)

MDX: 02
MDL: LineLoop
Группа вершин соединяется по очереди, с последующим замыканием последней с первой, образуя таким образом замкнутую ломанную кривую.
Вот переделка трёх отрезков из примера выше в Line Loop:
	Faces 1 6 {
		LineLoop {
			{ 1, 2, 0, 5, 4, 3 },
		}
	}

Тип 3: Line Strip (цепь линий)

MDX: 03
MDL: LineStrip
Этот тип похож на тот, что выше, он также соединяет вершины группы отрезками по очереди. То есть первую со второй, вторую с третьей и так далее, закончив отрезком между предпоследней и последней. Короче говоря, на выходе получается одна незамкнутая кривая.
Если вернуться к примеру с шестью вершинами, то можно увидеть, что такой тип полигона создаст пять отрезков из шести вершин.
	Faces 1 6 {
		LineStrip {
			{ 1, 2, 0, 5, 4, 3 },
		}
	}

Тип 4: Triangles (треугольники)

MDX: 04
MDL: Triangles
Думаю, что тут всё понятно: группа вершины делится на тройки, каждая из которых образует треугольник. Основной тип полигонов, строго говоря, в большинстве случаев он единственный и используется.
Я сделаю два рандомных треугольника, чтобы потом на примере их вершин показать другие типы полигонов.

Тип 5: Triangle Strip (полоса треугольников)

MDX: 05
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 — номер треугольника.
Википедия.
Покажу на примере как выглядят разные типы на одних и тех же вершинах (пример абсолютный рандомный, можно, конечно, было бы подобрать более удачные, создав красивые сложные формы, но зачем, ведь это всё равно никто не прочитает).
	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 с квадами для варкрафта вполне валидна, но такие полигоны он не поддерживает.
Кстати, можно предположить, что квадратные варкрафтовские партиклы тоже состоят из треугольников, раз четырёхугольные полигоны не работают

Тип 8: ​Quad ​Strip (​Полоса четырёхугольников)

MDX: 08
MDL: QuadStrip
Ожидание: должен создавать полосу из квадов по аналогии с полосой треугольников.
Реальность: см. Quads.

Тип 9:Polygon (Полигон)

MDX: 09
MDL: Quads (это не опечатка, Yobgul's Converter, использующий dll игры, действительно выдаёт Quads при конвертировании mdx с байтом 09. Но по моим тестам слово Polygons в mdl файле также валидно для игры (и всё также не работает))
Ожидание: должен создавать многоугольник из произвольного количества вершин.
Реальность: см. Quads.

Ссылки

`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.