Добавлен , опубликован
Всем привет, в этой статье я попытаюсь пояснить себе и вам, за новый формат моделей, который нам завезли наши любимые Blizzar Activision совместно с малазийцами.
И так встречайте, новый формат MDX/MDL1000 (далее по тексту я буду писать просто mdx1000), но для начала сравним его со старым форматом mdx800, который используется в 99% остальных моделей

Сравнение

Свойство mdx800 mdx1000
Работает на классик графике Да Нет
Работает на HD графике Да Да
Можно редактировать через mdlvis/War3Me Да Нет
Существую ли конвертеры под 3DMax и Blender Да Да
Можно ли использовать конверты в других играх Не совсем Да
Поддержка Хайполи Да Да
Поддержка карт нормалей и шейдеров Нет Да
Собственно говоря, выбор очевиден, у mdx800 все преимущества, кроме последнего, и именно за этим мы все и собрались, мы попробуем создать новую модель прям с нуля mdx1000, и попутно разберём сам формат

Шейдер

Я сам очень сильно плаваю, тут так что не пинайте (возможно вообще это статья для структуризации моих мыслей)
Теперь наши материалы, могут в шейдеры, и называется это Shader_HD_DefaultUnit
Материал состоит из новых слоёв:
Diffuse (Обычная цветная картинка)
Normal (Для определения того, как свет отражается от поверхности)
ORM (Для определения типа поверхности (шераховатость/ еталл))
Emissive (Для подсветки излучения)
TeamColor (Для понятно чего, это у нас осталось со старого 800 формата)
Reflections (Отражения на окружение, действительно ли это работает или это баг на странную текстуру)
Как это было в 800 формате
Materials 3 {
	Material {
		Layer {
			FilterMode Transparent,
			static TextureID 0,
		}
	}
	Material {
		Layer {
			FilterMode None,
			Unshaded,
			static TextureID 1,
		}
		Layer {
			FilterMode Blend,
			static TextureID 0,
		}
	}
	Material {
		Layer {
			FilterMode Transparent,
			static TextureID 2,
			Alpha 7 {
				Linear,
				25000: 1,
				29633: 1,
				71667: 0.998023,
				85000: 1,
				159967: 1,
				218300: 1,
				219967: 0.75,
			}
		}
	}
}
Как это стало в новом 1000 формате
Кода много поэтому лишь один 6-слойный материал
Material {
		Shader "Shader_HD_DefaultUnit",
		Layer {
			FilterMode Transparent,
			static TextureID 0,
			Alpha 76 {
				Linear,
				0: 1,
				1500: 1,
				1533: 1,
				5567: 1,
				5600: 1,
				12767: 1,
				12800: 1,
				17800: 1,
				17833: 1,
				19333: 1,
				19367: 1,
				20867: 1,
				20900: 1,
				21900: 1,
				21933: 1,
				22933: 1,
				22967: 1,
				23967: 1,
				24000: 1,
				25267: 1,
				25300: 1,
				26100: 1,
				26133: 1,
				26933: 1,
				26967: 1,
				27767: 1,
				27800: 1,
				31133: 1,
				31167: 1,
				40867: 0.999992,
				42100: 0.996848,
				43433: 0.987364,
				44800: 0.971545,
				46200: 0.949448,
				47633: 0.921195,
				49100: 0.886974,
				50667: 0.845166,
				52300: 0.796582,
				54067: 0.739246,
				55600: 0.68625,
				57300: 0.624864,
				62900: 0.414659,
				64933: 0.339943,
				66933: 0.269777,
				68733: 0.210727,
				70567: 0.155778,
				72267: 0.110535,
				73900: 0.0731429,
				75467: 0.0436606,
				76567: 0.0270992,
				77633: 0.0145773,
				78700: 0.00577416,
				79733: 0.00101271,
				91167: 0,
				91200: 0,
				151200: 0,
				151233: 1,
				152733: 1,
				152767: 1,
				154267: 1,
				154300: 1,
				155800: 1,
				155833: 1,
				156433: 1,
				156467: 1,
				157067: 1,
				157100: 1,
				157700: 1,
				157733: 1,
				159233: 1,
				159267: 1,
				165900: 1,
				165933: 1,
				172567: 1,
				172600: 1,
				173600: 1,
			}
		}
		Layer {
			FilterMode None,
			static TextureID 1,
		}
		Layer {
			FilterMode None,
			static TextureID 2,
		}
		Layer {
			FilterMode None,
			static TextureID 3,
		}
		Layer {
			FilterMode None,
			static TextureID 4,
		}
		Layer {
			FilterMode None,
			static TextureID 5,
		}
	}
Вот и все отличия, всё остальное уже делает шейдер движка WC Reforged, кстати и его возможно заменить на кастомный через Quenching Mode

Конвертация и разница

Разумеется надо быть крутым 3дшником, чтобы всё это понять, я сам не 3дшник, как и вы (если вы ещё бросили от потока кринжа, что я тут генерирую), но поэтому я просто покажу в картинках
Вот я полностью удалить всё красоту Reforge (вместе с тимколором, но не суть), разумеется нет металлического блеска на сапоге, шлеме и наплечнике, всё равно шейдер, что то пытается там изобразить, но результат уже не торт.
Разницу поняли, если вам по прежнему нравятся 3 полигона, то закрывайте статью.
Конвертировать в mdx1000 Будет через Retera ()
Но для начала, сделаем своего болванчика, пусть это будет кубик, сделаем его в блендере или максе и переподпишем формат как mdx1000
В конечно итоге всё должно быть примерно вот так
нагуглим текстуру кирпича, я взял самую шакалистую, и крупную, и натянем её, +- примерно, на сейчас это всё не важно
И наконец-то переходим к самому интересному - создание карты нормалей, в рефордже используется двух канальная карта нормалей без синего цвета, если глянуть на образцы, то примерно вот так всё выглядит, он жёлто зелёная.
В фотошопе создаём автоматическую карту нормалей
И я удаляю синий канал
И теперь наконец-то можно вернуться в наш материал в модели, добавляем 2 текстуру, где хотим хоть в блокноте хоть в ретере
Textures 2 {
	Bitmap {
		Image "brick.dds",
		WrapWidth,
		WrapHeight,
	}
	Bitmap {
		Image "brick_normal.dds",
		WrapWidth,
		WrapHeight,
	}
}
Materials 1 {
	Material {
		Shader "Shader_HD_DefaultUnit",
		Layer {
			FilterMode Transparent,
			static TextureID 0,
		}
		Layer {
			FilterMode Transparent,
			static TextureID 1,
		}
	}
}
Пора идти проверять, что мы там за ерунду сделали, как я и думал, полная ерунда
Давайте попробуем по списку пройтись и заполнить шейдер полностью по аналогии как у любой стены
`
ОЖИДАНИЕ РЕКЛАМЫ...