WarCraft 3: Динамическая смена текстуры

» Раздел: Моделлинг

Стандартная проблема - есть несколько разных текстур и одна модель для них. Использовать хотелось бы все текстуры, но т.к. для каждой нужна своя модель этого делать не хочется, ибо жалко веса карты.
В данной статье я расскажу, как использовать всего одну модель и несколько текстур к ней.

Необходимые программы:

Редактирование модели

1. Прежде нам необходимо решить - вся ли модель будет иметь вариации текстур или же только её часть (доспех, например, или плащ).
Если первое - переходим сразу к следующему пункту. Если второе - открываем нашу модель в MdlVis, выделяем все вершины поверхности, которая будет менять текстуру, и выносим их на новую поверхность (справа кнопка "Вынести на отдельную поверхность").
2. Открываем модель в War3 Model Editor, заходим в "Окна - Менеджер текстур" жмём в появившемся окошке правой кнопкой мыши и выбираем "Создать пустой". Затем на появившемся "Replaceable 0" кликаем правой кнопкой мыши и выбираем редактировать. В поле ID пишем число 31 и жмём ОК.
3. Теперь "Окна - Редактор материалов",
  • Если вы создаёте динамичную текстуру части модели, то создаём новый, далее - новый слой и под кнопкой ID текстуры выбираем "Replaceable ID 31".
  • Если вы делаете динамичную текстуру модели полностью - то выбираем единственный (если не единственный, то лучше удалить другие, т.к. они используют ту же текстуру и применить данный материал ко всем поверхностям) материал, жмём редактировать, затем снова редактировать и под кнопкой ID текстуры выбираем "Replaceable ID 31"
Модель или часть модели покроется текстурой дерева - оно нам и надо.

Импорт и объекты

4. Импортируем нашу модель в карту, с ней все её текстуры.
5. Заходим "Редактор объектов - Разрушаемые объекты" и создаём на основе любого дерева столько нестандартных, сколько у вас импортировано вариаций текстур.
Редактируем характеристики:
Графика - Заменяемый файл текстур - Здесь выбираем одну из наших импортированных текстур.
Графика - Размер выбора: игра - 0.00
Графика - Файл модели - Нет
Пути - Текстура пути - Нет
Текст - Название - Необязательно менять эту графу, но будет удобнее, если назвать в соответствии с выбранной текстурой (например - Синяя).
И так - для каждого созданного дерева.
6. Далее - создаём нашего юнита, или меняем модель стандартному - как хотите. Видим, что он или его часть покрыта белым, здесь должна быть одна из наших текстур.

Триггеры

Здесь изложены основы, того что нужно сделать. Если вы хорошо владеете триггерами или Jass, лучше написать свой код, дабы избежать фатальных ошибок и прочих недоработок.
7. Заходим в "Редактор триггеров" и создаём триггер по принципу:
Событие:
Любое нужное нам событие, например юнит поднял предмет, который влияет на смену текстуры (одежда например) или применил способность, то есть нужное вам событие. Если нужна определённая текстура изначально, то ставим здесь Elapsed game time in 0.01 seconds.
Условие:
Здесь задаём условия в зависимости от выбранного события, тип предмета, способности, воина и любые другие.
Действие:
Здесь нужно провернуть такую схему - Дать нашему юниту способность "Вырвать дерево" Горного великана, создать где- либо одно из созданных нами деревьев (вот тут то и понимаешь, зачем удобно именовать их по текстуре), применить способность "Вырвать дерево" на данном дереве, убрать способность, убрать дерево.
В результате юнит или его часть приобретёт заданную текстуру.

Несколько нюансов

Заменить можно только одну текстуру - то есть динамически менять, например, и доспех, и плащ, у которых разные текстуры не получится - только одновременно, при условии, что у них общая текстура.
  • Портрет не меняет текстуры
  • Не меняйте текстуру в движении
  • При загрузке сохранения эффект теряется и приходиться заново накладывать текстуру

-

Спасибо Van Damm'у за помощь с триггерами.
Наработка Toadcop'а на эту тему (выполнена на JASS).

Просмотров: 13 455

Mihahail #1 - 9 лет назад 0
Я первый! Статья тру, но для больших проектоф.
Van Damm #2 - 9 лет назад 1
почему же, для маленьких тоже может стать интересной фишкой
dave_wwid #3 - 9 лет назад 1
Cast range для "вырвать дерево" должен быть 9999? Вообще классная статья. Многим может пригодиться
Mihahail #4 - 9 лет назад 0
Не, в маленьких мона истандартными средствами обойтись... Это будет для больших проектов, в маленьких это будет мало использоваться.
А статья тру)
enemydestroyer1 #5 - 8 лет назад 1
Статья тру, прыгодыцо)
Особенно мне =)
XimikS #6 - 8 лет назад 1
Всем пригодится. Тем более что не сложно в применении, тот кто захочет найдет куда красиво приткнуть. я уже например нашел ))
Stefler #7 - 7 лет назад 2
спс!
PUVer #8 - 7 лет назад 0
Спасибо этой статье и её автору)Пригодилась)
Faion #9 - 7 лет назад 0
Пасип, пригодилось, благодаря ей смогу сэкономить места в мапе тонну=)
Hares #10 - 6 лет назад 0
а зачем тогда линейки альтернэйт, деффэнд, фёрст, ("зю" наконец) и другие? Так мона создавать и несколько нест. тексутр: Фёрст деффенд аттак
Также существует и редактор анимации текстур - на что он?
3 комментария удалено