25-12-2024 Оптимизация веса модели
Вступление
Добрый день, читатель. Часто ли ты отказываешься от использования модели из-за её огромного веса? Бывает же такое, верно? Сегодня я попытаюсь во всех подробностях описать процесс снижения веса модели.
Мне лично удавалось урезать вес и в полтора и в два раза только руками (не забываем о том что есть в mdlVis'e функция, значительно снижающая вес).
Да, иногда процесс снижения веса модели может быть весьма и весьма трудоемким. И да, для хорошего снижения веса надо быть знакомым с интерфейсами Model Editor и MDlvis, и хоть капельку понимать в моделировании.
Перейдем к делу!
Что чаще всего занимает много веса у модели? Текстура? Анимации? А может полигоны? На самом деле суть веса модели - текст. Да, модель и есть огромное количество текста. В формате .mdl можно целиком редактировать модель через JassCraft и прочие редакторы, способные расшифровать код модели.
Понятное дело что модель с небольшим количеством полигонов будет весить меньше хайполи модели, однако не в полигонах вся соль. К сожалению многие модельщики абсолютно бездарны в плане экономии веса, им бы побыстрее закончить модель и выложить её в чарты, сорвав кучу "AWESOMEEE!!" и прочих похвал, не удосужившись довести до ума еще и вес модели. Кроме шуток, даже на том же хайве часто встречаются модели на столько не оптимальные, что дальше - просто некуда.
Первая проблема заключается в CnP фрагментах других моделей через "Специальная вставка". Это одновременно делает сразу три вещи: добавляет новую поверхность, добавляет новый материал, добавляет новую текстуру. Итого мы имеем увеличение веса модели сразу на несколько килобайт, независимо от веса импортного геосета. Когда к модели добавляется 10-15 фрагментов других моделей - вес возрастает значительно (сжирается до 100-150 кб места).
Что нам с этим делать?
Во-первых, по возможности сливать все эти несомненно нужные фрагменты на родные поверхности модели, а уже потом в текстуру к модели подшить новые текстуры. Ну, или же, все фрагменты, использующие одинаковые текстуры сливать в одну поверхность. Это уберет все три утечки веса (новый материал, новую поверхность и новую текстуру). Да, я не опечатался. Каждый раз когда импортируется фрагмент - текстура импортируется, независимо от того, импортирована она уже, или нет. Ну, а коли мы не делаем модель а оптимизируем имеющуюся - снижает до минимума количество поверхностей, материалов и текстур.
Начинать стоит именно с текстур. Заходим в менеджер текстур и удаляем все не использованные (не видимые на модели) текстуры. Частенько творцы забывают удалить, к примеру, текстуры удаленных партиклов, или, например, текстуру удаленного ими плаща. Да даже стандартную текстуру модели порой ленятся удалить. Далее, открываем Material Manager и, если видим большое количество материалов - начинаем проверять.
Тут есть одна тонкость - если мы видим, например, 2 материала с одинаковой текстурой, однако у одного из материалов присутствует еще одна текстура - это, чаще всего, тимколор. Если вы не против оказаться без тимколора - удалите одну из текстур, добавьте другой режим фильтрации Blend и выставьте этот материал в редакторе поверхностей, той поверхности, у которой поле "material" будет "none". И так, при удалении каждого дублированного материала.
Удалили материал - сразу же фиксите отсутствие текстуры на какой-то поверхности (использованную текстуру вы удаляете)
Как только разберетесь с текстурами и материалами - переходите в редактор геосета Mdlvis и соединяйте те поверхности, которые используют идентичные текстуры (Cntrl+C с одной поверхности, Cntrl+V на другую. На старой поверхности удаляем старый геосет, на новой - подстраиваем под старое положение). Эта операция в некоторых запущенных случаях может срезать вплоть до 100-150 кб. (была у меня модель с 120 поверхностями ,урезал до 6 поверхностей. Итог - 160кб)
Вторая проблема - кости. Один из самых сложных, потому как редактировать кости достаточно сложно. Все warcraft 3 модели обладают парами костей, Более того - половина моделей, сделанных со стандартных обладает тем же набором костей. ВНИМАНИЕ!!!, если вы не умеете анимировать модель - лучше не удалять эти побочные кости, в противном случае вы можете нарушить красоту анимации модели вообще. Если умеете самостоятельно анимировать и считаете что вы в силах исправить возможные "баги" которые всплывут в анимации - смело удаляйте все дубликатные кости. Этот шаг, при большом количестве анимаций может срезать достаточное количество веса.
Третяя проблема - кости оригинала. Допустим если за основу взята модель иллидана, а автор - не добросовестно очищал модель - нам потребуется зайти в редактор склета Mdlvis и поудалять все кости от метаморфозы иллидана, так же все кости с приставкой alternate (аттачи и партикловые источники).
Обработав таким образом модель - кликаем на "Оптимизация модели" в mdlvis и, для полного счастья, оптимизируем еще и этой программой. Так, на выходе, мы урезаем вес модели до невероятно низкого значения.
Последний шаг оптимизации - Текстура.
Тут все очень быстро и просто. Если текстура размером выше 256*256 - пережимаем её до этого максимального значения в 256*256 (для аттачей достаточно 128*128) и сохраняем через blplab с следующими параметрами:
Количество текстур: 4(максимум 5) Качество JPG: 25(максимум 40)%
Таким образом из текстуры весом в 600кб (512*512 100% quality 10 mipmaps) мы получаем текстуру весом 50kb (256*256 30% quality 4 mipmaps). Если не менять разрешение текстуры то вес можно снизить до 40-50 спокойно.
Кстати, если используется измененная стандартная текстура то настоятельно рекомендуется в фотошопе удалить (альфа 255) все не использованные фрагменты текстуры. . Тогда параметры на пиксель будут 0\0\0\0, а номинальный вес файла немного снизится. )
Удачи тебе, картостроитель.
UPD От 9 января, 2012 года: Статья оформлена (by Brut@lus)
|