Корректно убираем свечение героя

Добавлен , опубликован
Раздел:
Моделлинг
Инструментальные средства, которые Вам потребуются:
  • Notepad (Блокнот - входит в стандартную поставку Windows)
  • MDX->MDL конвертор YobGul'а (разумеется, подойдет любой конвертер такого типа, если найдете другой, сообщите пожалуйста мне)
  • WorldEdit (Входит в стандартную поставку Warcraft 3)
  • MPQ экстрактор
Если у вас нету Notepad'а или Worldedit'а тогда я не знаю, зачем вы вообще это читаете, или вам безразличен WC3 если у вас нету WE, или вы - заблудшая душа в этом мире если у вас нет Notepad'а. Последний пункт в списке - экстрактор MPQ, который поможет вам доставать файлы моделей MDX, которые нужны для редактирования. Эта статья предполагает что вы знаете как использовать mpq экстрактор, чтобы извлекать желаемый файл модели MDX героя, которого вы хотите отредактировать из war3.mpq или war3x.mpq - mpq архива ROC и mpq архива TFT.

Приступим

Начнем с того что у вас есть файл модели героя MDX на вашем жестком диске, а не закопан где-то в архиве MPQ.
1. Запускайте конвертер файлов Yobgul'а. Сейчас у вас не должно быть ошибок. Жмите "Load MDX file" и найдите MDX вашего героя. Жмите "Convert to MDL" и вы должны получить сообщение, говорящее, что преобразование было успешным. Откройте MDL Notepad'ом. MDL - другой файл, расположенный в той же папке что и MDX с тем же именем кроме расширения MDL вместо расширения MDX. Закройте YobGul'а. Вы должны получить ошибку в этой точке. Это - результат плохого программирования и не влияет на что-нибудь в WC3. Проигнорируйте это сообщение.
2. У вас должен быть MDL открытый в Notepad'е, предполагаем, что вы используете Windows конечно, а не Mac'ов или Linux или нечто другого, конечно вы могло бы делать все это в терминале linux и если вы используете linux, тогда я вам не нужен, во всяком случае вы умны достаточно, чтобы определить это сами. Для статьи, мы используем Windows. Жмите Ctrl+F, это откроет диалог поиска. В диалоге поиска, пишите "Alpha 1" без отметки регистра. Диалог должен показать вам что-то похожее на это:

...
Textures 4 {
Bitmap {
Image "units\Human\Jaina\Jaina.blp",
}
Bitmap {
Image "",
ReplaceableId 1,
}
Bitmap {
Image "ReplaceableTextures\Weather\Clouds8x8.blp",
}
Bitmap {
Image "",
ReplaceableId 2,
}
}
Materials 3 {
Material {
Layer {
FilterMode Transparent,
static TextureID 0,
}
}
Material {
Layer {
FilterMode None,
Unshaded,
TwoSided,
static TextureID 1,
}
Layer {
FilterMode Blend,
TwoSided,
static TextureID 0,
}
}
Material {
Layer {
FilterMode Additive,
Unshaded,
static TextureID 3,
Alpha 1 {
Linear,
3333: 0.75,
}
}
}
}
Geoset {
Vertices 468 {
{ 2.64418, -16.7716, 38.0223 },
{ 2.77655, -13.3378, 37.228 },
{ -2.84511, -7.62934, 34.9388 },
{ 2.54801, 4.35593, 96.3666 },
...
Если вы уже читали статьи по моддингу WC3, тогда вы, возможно, видели статью Ari про свечения героя. Если нет, тогда я просто скажу, что Ari в этом месте статьи, сообщает: чтобы удалить свечение героя, вы просто должны стереть целую секцию:

Alpha 1 {
Linear,
3333: 0.75,
}
и замените это на:

Alpha 0
ЭТО НЕПРАВИЛЬНО: Вы натолкнетесь на много проблем, первая - это вы не сможете преобразовать ваш файл в MDX, вторая - если вы справитесь с первой, то это ничего не даст.
Правильное решение немного более сложное.
Сначала давайте придадим заголовкам значение. Посмотрим на заголовок:
Materials 3
Это просто общий идентификатор объектов, использующий текстуры найденные в файле Модели. Более важно число 3, оно сообщает, что есть ТОЛЬКО 3 материала в файле модели. Каждый материал идентифицирован автоматически чтобы можно было ссылаться на него позже в файле модели. Автоматическая идентификация означает, что нет строк в файле где используется другой идентификатор вместо идентификатора этого материала, то есть идентификаторы присваиваются материалам в порядке появления в файле, первому присваивается идентификатор 0, второму идентификатор 1 и так далее. Это означает, что, в нашем примере выше, даже если количество материалов равно 3,то наибольший идентификатор имеет значение 2 а наименьший - 0. Что нам это дает? Хорошо, сначала позвольте показать, к чему действительно имеет отношение материал. Есть блоки кода в файле, который выглядит похожим на:

Material {
Layer {
FilterMode Additive,
Unshaded,
static TextureID 3,
Alpha 1 {
Linear,
3333: 0.75,
}
}
Это - два блока слоя, ссылающиеся на один материал:

Material {
Layer {
FilterMode None,
Unshaded,
TwoSided,
static TextureID 1,
}
Layer {
FilterMode Blend,
TwoSided,
static TextureID 0,
}
}
Мы знаем теперь что, каждый материал идентифицирован по порядку, что дает основание полагать что каждая текстура тоже будет нумерована по порядку. Так и есть на самом деле. Мы знаем, что текстура которая нам нужна должна быть "replaceable" (замещаемая) поскольку мы знаем, что цвет свечения героя изменяется в игре. Текстуры "Replaceable" не лежат в одном отдельном файле, а лежат в директории. Глянув на наш код мы видим две таких текстуры:

Bitmap {
Image "",
ReplaceableId 1,
}
и

Bitmap {
Image "",
ReplaceableId 2,
}
Глядя на порядок этих текстур, видим:

Textures 4 {
Bitmap {
Image "units\Human\Jaina\Jaina.blp",
}
Bitmap {
Image "",
ReplaceableId 1,
}
Bitmap {
Image "ReplaceableTextures\Weather\Clouds8x8.blp",
}
Bitmap {
Image "",
ReplaceableId 2,
}
}
Мы знаем, что текстура 1 имеет идентификатором 1 и текстура 2 имеет идентификатором 3.
Глядя на наши материалы, вы теперь можете понять почему я рекомендовал искать "Alpha 1":

Material {
Layer {
FilterMode Additive,
Unshaded,
static TextureID 3,
Alpha 1 {
Linear,
3333: 0.75,
}
}
Блок ссылается непосредственно на наш идентификатор текстуры, равный 3, это - одна из замещаемых текстур.
Это как раз текстура и материал, которые нам нужны. Другая, замещаемая текстура, идентифицированная ранее как текстура 1, определяет цвет одеяния и брони героя на основании цвета игрока, которым он управляется. Это способ, которым можно получать эффект "призрака". Я могу написать другую статью, описывающую эффект "призрака", если интерес к этой теме.
3.Замените:

Material {
Layer {
FilterMode Additive,
Unshaded,
static TextureID 3,
Alpha 1 {
Linear,
3333: 0.75,
}
}
на

Material {
Layer {
FilterMode Additive,
Unshaded,
static TextureID 3,
Alpha 0 {
Linear,
3333: 0.00,
}
}
4. Если вы перестанете редактировать MDL в этом месте, то вы увидите странный эффект - ваш герой не будет иметь свечение стоя, но в другом положении у него будет свечение. Дело в том, что мы все еще не изменили нашу анимацию в файле модели.
Эта часть статьи более специфичная и зависит от типа модели вашего героя, но общая стратегия - чтобы убрать этот странный эффект, вы должны УДАЛИТЬ анимацию, ссылающуюся на идентификатор материала, который ОПРЕДЕЛЯЕТ ваш эффект свечения героя найденного в пунктах 2 & 3 этой статьи.
Как мы делаем это? Сначала гляньте на ваш идентификатор в примере:

Materials 3 {
Material {
Layer {
FilterMode Transparent,
static TextureID 0,
}
}
Material {
Layer {
FilterMode None,
Unshaded,
TwoSided,
static TextureID 1,
}
Layer {
FilterMode Blend,
TwoSided,
static TextureID 0,
}
}
Material {
Layer {
FilterMode Additive,
Unshaded,
static TextureID 3,
Alpha 0 {
Linear,
3333: 0.00,
}
}
}
}
Ясно что идентификатор материала - 2. Ctrl+F, чтобы открыть диалог поиска. Ищите этот идентификатор в файле. В случае примера это 2. Вы должны найти только 1 совпадение. В случае примера это:

Geoset {
Vertices 12 {
{ -121.188, -112.982, 7.00546 },
{ 104.102, -112.982, 7.00546 },
{ -121.188, 112.308, 7.00546 },
{ 104.102, 112.308, 7.00546 },
{ -135.395, -127.189, 15.7892 },
{ 118.31, -127.189, 15.7892 },
{ -135.395, 126.516, 15.7892 },
{ 118.31, 126.516, 15.7892 },
{ -103.209, -95.003, 25.4689 },
{ 86.1231, -95.003, 25.4689 },
{ -103.209, 94.3292, 25.4689 },
{ 86.1231, 94.3292, 25.4689 },
}
Normals 12 {
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
{ 0, 0, 1 },
}
TVertices 12 {
{ 0.000499785, 0.000499547 },
{ 0.000499547, 0.9995 },
{ 0.9995, 0.000499785 },
{ 0.9995, 0.9995 },
{ 0.000499785, 0.000499547 },
{ 0.000499547, 0.9995 },
{ 0.9995, 0.000499785 },
{ 0.9995, 0.9995 },
{ 0.000499785, 0.000499547 },
{ 0.000499547, 0.9995 },
{ 0.9995, 0.000499785 },
{ 0.9995, 0.9995 },
}
VertexGroup {
0,
0,
0,
0,
1,
1,
1,
1,
2,
2,
2,
2,
}
Faces 1 18 {
Triangles {
{ 0, 1, 2, 3, 2, 1, 4, 5, 6, 7, 6, 5, 8, 9, 10, 11, 10, 9 },
}
}
Groups 3 3 {
Matrices { 0 },
Matrices { 1 },
Matrices { 2 },
}
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.289,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
Anim {
MinimumExtent { -140.338, -132.132, 7.00546 },
MaximumExtent { 123.252, 131.458, 25.4689 },
BoundsRadius 186.614,
}
MaterialID 2,
SelectionGroup 0,
Unselectable,
}
Вы можете удалить ВЕСЬ этот блок кода, он просто определяет анимацию свечения героя. В случае примера, весь текст, описанный выше должно быть удален.
5. Сохраните файл модели, вы почти все сделали. Откройте его в конвертере Yobgul'а. Загрузите файл MDL и конвертируйте в MDX. Ваш новый файл MDX не имеет свечение героя, но вам еще нужно добавить это в вашу карту.
6. Загрузите WorldEditor. Создайте новую небольшую тестовую карту. Используйте менеджер импорта, чтобы импортировать ваш новый файл MDX. Теперь модель готова к использованию в редакторе объектов. Если вы хотите, чтобы этот MDX заменял MDX из war3.mpq, Вы должны изменить путь к MDX, используемый в менеджере импорта, на такой же путь MDX из архива war3. Так например, если я хочу заменить все модели Паладина на моей карте, я должен заменить путь импортируемого MDX с war3Imported/HeroPaladin.mdx на Units\Human\HeroPaladin\HeroPaladin.mdx
Вы можете все еще видеть свечение героя в WorldEditor. Чтобы протестировать модель, и быть уверенным на 100%, вы должны протестировать карту в игре!

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
18
19 лет назад
0
Я могу обьяснить как убрать свечение одним предложением, хех я гений!!!!!
0
31
19 лет назад
0
да одним словом давай =)
0
32
19 лет назад
0
угу, "почитай статью" =))
0
1
17 лет назад
0
А как ДОБАВИТЬ свечение героя?
2
5
16 лет назад
2
Легче открыть героя в MdlVis'e, и выделить все поля священия героя, потом удалить.....
0
1
14 лет назад
0
Добавить легче всего через WE Unlimited, надо в Enhancer'е добавить в карту свечение героя, а в редакторе, можно в обычном, дать нужному юниту способность Hero Glow.
0
27
12 лет назад
0
Toolike:
Легче открыть героя в MdlVis'e, и выделить все поля священия героя, потом удалить.....
Ну, так ты попробуй сначало через MDLvis удали, затем придётся в model Editore искать этот материал и удалять, и как сказал NETRAT, ты не удаляешь информацию о свечении
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.