WarCraft 3: Оптимизация импорта

» Раздел: Работа с MPQ и импортом

Доброго времени суток, друзья мои. Ко мне часто обращаются с просьбой как-то ужать различный импорт, чтобы засунуть в любимую карту как можно больше звуков, текстур и моделей, не превысив при этом грабительский лимит в жалкие 8мб. Сегодня я расскажу о некоторых способах уменьшить вес оных с сохранением качества или незначительной его потерей.

Нам понадобятся:

Mdlvis 1.40 (для работы с геометрий) и Mdlvis 1.39c (для работы с анимациями)
War3ModelEditor
Adobe Audition 3.0
Nero Wave Editor
BLP Laboratory
Paint.NET

Начнем с моделей:

Как вам известно, довольно часто мапмейкеры исспользуют в своих детищах модели, конвертированные из других игр. Чаще всего они очень хайполийные, из за чего имеют довольно большой вес. Помимо этого, при конвертации геометрии неопытным пользователем зачастую на каждую вершину модели создается еще несколько, что создает дополнительную нагрузку на железо, но визуально на модель почти никак не влияет (по этой же причине очень хайполийные модели некорректно затеняются). Сразу стоит отметить, что наилучший способ избежать этого - попросить сведущего в конвертации человека грамотно конвертировать нужную вам модель, т.к. оптимизация геометрии может занять довольно много вашего времени. Вы конечно можете просто выбрать вкладку "Оптимизация" и нажать "Оптимизировать", но сомневаюсь, что это вам поможет, если модель экспортирована не из WoW.
Способ первый - урезаем невидимые части.
В современных играх модели персонажей имеют очень сложное строение глаз, где в каждой глазнице расположено по сфере (при движении глаз сфера вращается), однако в варе это ни к чему. Очень хорошо, если модель персонажа поделена на слои, где сферы не находятся в одном слое с самой головой, ведь в противном случае вам придется проявить чудеса усидчивости, рискуя случайно выделить и удалить несколько вершин головы. Не спешите удалять все глазное яблоко целиком. Оставьте небольшой кусочек, чтобы персонаж не остался без глаз. Аналогично дела обстоят со ртом. Аккуратно убираем глотку и зубы, если не предусмотрено анимаций, где персонаж разговаривает или приоткрывает рот. Так же в некоторых случаях "внутри" тела персонажа имеются объекты, которые используются при некоторых синематиках (например - вылезающая личинка чужого из живота с отдельной геометрией кишков и дырки в пузе). Подобные вещи встречаются не часто, но довольно сильно влияют на общий вес модели.
Примечание: если некоторые из урезанных вами частей модели использовали специальные текстуры или материалы - удалите эти текстуры\материалы в War3ModelEditor.
Способ второй - слитие точек.
Крайне геморный, но при этом сверхэффективный способ оптимизации в Mdvis. Как я уже сказал, часто попадается кривой конверт, где на каждую вершину приходится по нескольку вершин-клонов. При работе с вершинами рекомендую часто сохраняться, чтобы не потерять результат долгой кропотливой работы, слив случайно не те точки. Обратите внимание: в некоторых слоях геометрия "склеена" из нескольких кусков, по краям которых проходят швы. Если такой шов проходит перпендикулярно ровно по средине модели - он соединяет симметричные части лица и т.п., которые используют ту же текстуру, но в зеркальном отражении, однако, если по разным сторонам шва текстура разная - лучше его не трогать. Выделяем какую-либо точку геометрии обводкой (щелчок выделит лишь одну из "клонированных" вершин, а не все сразу). На панели инструментов сбоку появятся кнопки "Сжать" и "Слить" и "Разъеденить". Первая кнопка не даст нам никакого результата, т.к. вершины итак уже имеют общие координаты. Кнопка "Слить" превратит всю группу выделенных точек в одну, благодаря чему для записи ее координат и свойств в файле модели будет затрачено меньше строк. Учитывая то, что не все такие точки можно безнаказанно сливать (вспомним про швы), а оптимизируемая нами модель до ужаса хайполийна - на оптимизацию таким способом уйдет довольно много времени.
Примечание: для еще более эффективной оптимизации можно щелчками выделять и удалять повторяющиеся вершины, пока там не останется только одна. Это позволит сэкономить еще больше места, но угробить гораздо больше бесценного времени.
Если даже после подобной оптимизации геометрии вы неудволетворены работой - рискните обработать швы модели. В данном случае лучше всего сначала разъединить точки, подчистить все ненужные и сжать их в одну (при слитии попортится текстурная карта).
Способ третий - оптимизация анимаций.
Данный способ применяется на конверте, сохранившем не только оригинальную геометрию, но и анимации оригинала, либо насаженном на скелет какой-либо модели из WoW.
Откройте модуль Mdvis "Редактор анимаций". Выберите анимацию, которую требуется оптимизировать. В нижней части окошка программы появится знакомая нам полоска кадров. У конверта она чаще всего забита до отказа.
Каждый кадр анимации имеет свои параметры, которые записываются в файле модели и имеют свой вес => если кадров в анимациях много - вес файла модели увеличивается. Создайте пустую новую анимацию, дав ей ту же длину и мки (если прописан). Копируем и вставляем в толькачто созданную пустышку несколько ключевых кадров на том же временном промежутке. Если персонаж двигается неправильно - возьмите по еще одному промежуточному ключевому кадру из базовой анимации. По окончанию дублирования выберите в списке анимаций старый вариант, щелкните левой кнопкой мыши на полоске кадров, в появившемся контестном меню выберите "Очистить".
Примечание: вы так же можете пробовать удалять промежуточные ключевые кадры в базовой анимации, однако зачастую на это уходит гораздо больше времени, нежели на способ, представленный выше.

Оптимизация звуков:

Некоторые кудесники-мапмейкеры любят баловать игроков нестандартной озвучкой, музыкой, либо другим звуковым контентом. Звуки тоже имеют довольно приличный вес и могут быть легко оптимизированы.
Примечание: в данной статье будет рассмотрена оптимизация звуков в программе Adobe Audition 3.0. Если вы считаете, что какая-либо программа справляется с этой работой лучше или кажется вам удобнее - производите оптимизацию в ней, выполняя аналогичные действия.
Итак, у нас имеется некий звуковой файл большого веса, который требуется оптимизировать. Открываем требуемый звук\музыку в Adobe Audition. Нажимаем вкладку "Файл", выбираем "Сохранить как...". В графе "Тип файла" выбираем mp3 (даже если исходный формат нашего звука wav). Жмем появившуюся кнопку "Опции", далее проставляем нужные нам параметры:
Если есть возможность поставить галочку в поле "Перевести в Моно" - ставим (это дает огромную экономию веса, если оптимизируемый звук до этого имел стерео-звучание). Битрейт проставляем на свое усмотрение, учитывая, что чем он ниже - тем меньше вес получаемого файла, но хуже качество звучания.
Прочие расширенные параметры трогать не рекомендуется, хотя при должной усидчивости можно попробовать добиться дополнительного уменьшения веса звука.
Примечание: повышение битрейта не улучшит качество звучания, но по-честному прибавит весу, так что данное действие по сути бесполезно.
Если вы пользуетесь утилитой Nero Wave Editor, установившийся способ таков:
  • Энкодер - Lame Mp3 Encoder. С Mp3Pro периодически возникают косяки.
  • Качество энкодинга - 0. Наименьший вес, наибольшее время кодирования.
  • Качество - по желанию. Я обычно выбираю "5".
    (информация по Nero Wave Editor предоставлена тов. Rewenger -ом)

Оптимизация текстур:

Довольно простой, но от этого не менее эффективный способ сэкономить на весе импорта. Открываем текстуру в BLP Lab, жмем вкладку "Файл", далее "Сохранить как...". В окошке "Сжатый формат" устанавливаем нужную нам степень сжатия (чем меньше степень, тем сильнее сжимается файл). Если данная текстура не имеет прозрачных участков и не сделана с расчетом на тимколор - жмем кнопку "Альфа-канал...", выбирая вариант "Удалять\очищать альфа-канал". Выбираем путь сохранения и название оптимизированной текстуры, сохраняем.
Примечание: иногда, вследствии того, что мы удалили ненужные части модели, либо перевели их на другую текстуру, оптимизируемая текстура используется не полностью. Если вы знаете, какие куски текстуре больше не нужны - перегоните текстуру в формат tga и аккуратно замалюйте их черным или белым цветом в любом графическом редакторе (при написании статьи использовался Paint.NET), после чего пересохраните текстуру. Подобный "варварский" способ позволит вам освободить еще немного пространства без потери качества текстуры.

В заключение:

Все представленные выше способы можно комбинировать для достижения лучшего эффекта. Каждый способ был лично мною проверен, большинством я пользуюсь постоянно. Надеюсь, статья поможет вам более рационально распределять вес импорта в вашем проекте и позволит использовать больше нового высококачественного контента.

Просмотров: 9 467

» Лучшие комментарии


Tornak #1 - 6 лет назад 0
насчет анимаций не понял в конце. а так - спасибо за статью. буду юзать) для вов конверта кстати советую сразу кнопкой оптимизации в висе убирать не прикрепленные вершини. а то там по 4 одинаковых мешах при конверте становиться.
VetsaN #2 - 6 лет назад 0
она в процессе написания
Sodjiro Seta #3 - 6 лет назад -6
Зачем весь этот словарный понос?
Урезка моделей - mdlvis - оптимизатор, по желанию удаляем левые анимации. done
Урезка графики - blplab - сохраняем в blp, ставим 85% качества. done
Урезка звуков/музыки - рандомный редактор (mp3directcut например) сохраняем в mp3 192kbps.
Tornak #4 - 6 лет назад 3
Sodjiro Seta, уйди и не позорься.
Урезка моделей - mdlvis - оптимизатор, по желанию удаляем левые анимации. done
большего бреда не слышал. простой автооптимизацией ты модель сильно не уменьшишь. так что убери-ка свои понты в сторону и все. я все сказал. -_-
Sodjiro Seta #5 - 6 лет назад 0
Tornak, с каких пор опыт это понты? написать про слитие точек как метод оптимизации, всё равно что делать лоадскрин через word, ага. оптимизатор - одна из лучших функций программы, в один клик убирает все неиспользуемые и повторяющиеся вершины. Кем нужно быть, чтобы вручную через model editor удалять всю муть я сказать не могу.. варн дадут.
reALien #6 - 6 лет назад 0
Самая лучшая оптимизация моделей - это таки удаление кейфреймов (анимация - это просто много кейфреймов :nate:)
Геометрия весит в 3-4 раза меньше, её можно то и не трогать кроме особо раковых случаев.
Zanpakto #7 - 6 лет назад 0
Sodjiro Seta, в некоторых особо тяжелых случаях (в частности с конвертом - ибо тема его оптимизации в этой статье легко прослеживается) человек может не полениться "сделать эту муть", особенно если ему очень дорог вес модели. К тому же, как сказано в статье, модель с подобными копиями вершин может затеняться не верно, что дает ещё один повод проделать эту работу, а сливать вершины, как я знаю, можно и через mdlvis - там эта операция достаточно проста.
VetsaN #8 - 6 лет назад 0
Прошу проявить терпение и дождаться окончания работы над статьей. Планируется проилюстрировать каждое действие и вложить наглядный пример всех описанных приемов оптимизации.
SID69 #9 - 6 лет назад 2
Мне еще неплохо со звуками помогала программка Format Factory. Если правильно настроить, то можно сэкономить вес не потеряв качество.
Tornak #10 - 6 лет назад 2
харашо, атлична, афтар, давай исчо!)
а если реально, то молодец что дописал так быстро. это реально нужно.
Андреич #11 - 6 лет назад 2
ничего нового не узнали... но в целом изложено довольно-таки понятно...
Думаем, найдётся те, кому это пригодится...
poisoNDealer #12 - 6 лет назад 2
Отличная статья. В базу её!
ScorpioT1000 #13 - 6 лет назад 2
Про анимации и КК надо прямо наверх было =)
iZucken #14 - 6 лет назад -1
ветсан пишет про оптимизацию - это как еслибы гитлар продвигал идеи интернационализма
Diazzz #15 - 6 лет назад 2
Хорошая статья, пригодиться.
SLI #16 - 5 лет назад 0
тоже хочу плюсануть, прям гэ
FKoFF #17 - 5 лет назад 0
Sodjiro Seta, 85% жирно будет. Разница в качестве между 60% и 40% не очень высокая, между 100% и 60% - нулевая, т.е в варе не различимо.
JesusHipster #18 - 4 года назад 0
Как-то слабо.
Clamp #19 - 4 года назад 0
Согласен, но ресурсов не хватает.
Вообще по моделям - твоя стезя, умываю руки.
JesusHipster #20 - 4 года назад 0
Clamp, тут модели только 1\3 статьи. Я бы опубликовал без гланги, но решай ты.
GF RaiseD #22 - 4 года назад 1
Полезно, хотя ничего особенного