Всем привет, в этой статье я попытаюсь пояснить себе и вам, за новый формат моделей, который нам завезли наши любимые Blizzar Activision совместно с малазийцами.
И так встречайте, новый формат MDX/MDL1000 (далее по тексту я буду писать просто mdx1000), но для начала сравним его со старым форматом mdx800, который используется в 99% остальных моделей
И так встречайте, новый формат MDX/MDL1000 (далее по тексту я буду писать просто mdx1000), но для начала сравним его со старым форматом mdx800, который используется в 99% остальных моделей
Сравнение
Свойство | mdx800 | mdx1000 |
---|---|---|
Работает на классик графике | Да | Нет |
Работает на HD графике | Да | Да |
Можно редактировать через mdlvis/War3Me | Да | Нет |
Существую ли конвертеры под 3DMax и Blender | Да | Да |
Можно ли использовать конверты в других играх | Не совсем | Да |
Поддержка Хайполи | Да | Да |
Поддержка карт нормалей и шейдеров | Нет | Да |
Собственно говоря, выбор очевиден, у mdx800 все преимущества, кроме последнего, и именно за этим мы все и собрались, мы попробуем создать новую модель прям с нуля mdx1000, и попутно разберём сам формат
Шейдер
Я сам очень сильно плаваю, тут так что не пинайте (возможно вообще это статья для структуризации моих мыслей)
Теперь наши материалы, могут в шейдеры, и называется это Shader_HD_DefaultUnit
Материал состоит из новых слоёв:
Diffuse (Обычная цветная картинка)
Normal (Для определения того, как свет отражается от поверхности)
ORM (Для определения типа поверхности (шераховатость/ еталл))
Emissive (Для подсветки излучения)
TeamColor (Для понятно чего, это у нас осталось со старого 800 формата)
Reflections (Отражения на окружение, действительно ли это работает или это баг на странную текстуру)
Материал состоит из новых слоёв:
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
Разницу поняли, если вам по прежнему нравятся 3 полигона, то закрывайте статью.
Конвертировать в mdx1000 Будет через Retera ()
Но для начала, сделаем своего болванчика, пусть это будет кубик, сделаем его в блендере или максе и переподпишем формат как mdx1000
В конечно итоге всё должно быть примерно вот так
нагуглим текстуру кирпича, я взял самую шакалистую, и крупную, и натянем её, +- примерно, на сейчас это всё не важно
И наконец-то переходим к самому интересному - создание карты нормалей, в рефордже используется двух канальная карта нормалей без синего цвета, если глянуть на образцы, то примерно вот так всё выглядит, он жёлто зелёная.
В фотошопе создаём автоматическую карту нормалей
И я удаляю синий канал
И теперь наконец-то можно вернуться в наш материал в модели, добавляем 2 текстуру, где хотим хоть в блокноте хоть в ретере
И теперь наконец-то можно вернуться в наш материал в модели, добавляем 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,
}
}
}
Пора идти проверять, что мы там за ерунду сделали, как я и думал, полная ерунда
Давайте попробуем по списку пройтись и заполнить шейдер полностью по аналогии как у любой стены