Граната для обезьяны

топ 100 блогов world_of_ru29.10.2012 Когда нибудь может так случиться, что AHuMex`у опостылеет наше замечательное общество и он слиняет с концами в какую нибудь Диаблу или Мехов. Чтобы обезопасить себя от очередного патча в таком трагическом случае, предлагаю запастись тушёнкой и спичками.

Сперва понадобится инструмент ресэмплирования текстур. Желательно пакетный, чтоб не сидеть над каждым файлом.
Его можно самому собрать в Linux, ну вы пони. Ли. А кому родственники не разрешают собирать, могут скачать хотя бы NVIDIA Texture Tools 2 или NVIDIA DDS Utilities под Windows. Да, первый из них только 64х битный. Я спрашивал, говорят, 32х битный индус заболел, и пока никак.

Плюсы Texture Tools (nvzoom.exe) - проще настройки и чуть более качественный результат.
Минусы - выдаёт TGA, который надо потом паковать в DDS (паковатор рядом - nvcompress.exe). Выдаёт поштучно.

Плюсы DDS Utilities (nvdxt.exe) - пакетная обработка каталогов. Настройки на каждый чих, куча алгоритмов (стрёмных).
Минусы - за пивом не бегает. Но я выбрал его.

Также понадобятся консольная версия архиватора 7Zip - файл 7za.exe (распространяется с 25% текстурами) и сама Консоль - cmd.exe (свободно скачивается).

В папке с игрой в \res\packages создайте пустой текстовый файлик и обзовите его, например, xtract.cmd (вот и повод включить отображение расширений в свойствах папки). Запишите в нём емайл, пароль и вот такой текст:

for %%A in (*.pkg) do (
7za x -tzip -y -ir!*.dds %%~fA -o%%~nA
rmdir /s /q %%~nA\gui
rmdir /s /q %%~nA\maps\fx
rmdir /s /q %%~nA\maps\skyboxes
rmdir /s /q %%~nA\objects
rmdir /s /q %%~nA\particles\Decals
rmdir /s /q %%~nA\particles\maps
rmdir /s /q %%~nA\system
)


Создайте ещё один скрипт, занимающийся чисто рисованием - resample.cmd:

nvdxt -rel_scale 0.25, 0.25 -RescaleSinc -dxt1a -all -outsamedir -overwrite -deep

Сжатие 1/4 ака 0.25 по X и по Y. Алгоритм RescaleSinc или, как говорят в народе, lanczos. Оставляйте dxt1a как в этих ваших текстурах. Остальное пусть так будет. Файлы заменяются на своих местах, нигде искать не надо. Если интересно, сообщество математиков может предложить ещё алгоритмы RescalePoint, RescaleBox, RescaleTriangle, RescaleQuadratic, RescaleCubic, RescaleCatrom, RescaleMitchell, RescaleGaussian, RescaleBessel, RescaleHanning, RescaleHamming, RescaleBlackman, RescaleKaiser. Но говно-с, за исключением RescaleKaiser. Кстати, настройки не ограничиваются вышеуказанными. Вы можете забабахать себе хоть Rusty MOD с блэкджеком и понями. PDF только почитайте рядом с программой (англ).

Скрипты готовы. Накидайте инструменты в эту же папку - nvdxt.exe и 7za.exe.

Итак. Итак... Запускайте xtract.cmd на пару минут. Он распаковывает ресурсы и удаляет в распакованном те текстуры, которые бы не хотелось сжимать. Шрифты, эмблемы, вот это всё. Пока выполняется, там местами сообщается про нишмагла - это нормально. Цикл скрипта написан так, чтобы он чувствовал себя как в старом ламповом 0.7.1
Принесите чай и запустите resample.cmd
Если nvdxt аварийно завершается, лучше его натравливать на отдельные папки параметром -deep с нужным аргументом:

nvdxt -rel_scale 0.25, 0.25 -RescaleSinc -dxt1a -all -outsamedir -overwrite -deep 01_karelia
Но учтите, что перед поломкой он подло подменил на ресэмплированные все те файлы, до которых уже успел дотянуться. Лучше начать с xtract.cmd заново.

Вообще-то можно убрать -outsamedir (в ту же папку) и кидать результат в другое место. Для этого нужен параметр -outdir.

nvdxt -rel_scale 0.25, 0.25 -RescaleSinc -dxt1a -all -overwrite -deep 01_karelia -outdir test

Тестируйте свои идеи:

nvdxt -rel_scale 2.0, 2.0 -RescaleGaussian -sharpenMethod SharpenSoft -dxt1a -file vehicles_chinese\vehicles\chinese\Ch01_Type59\Type59.dds -output Type59_mimimi.dds

Не забывайте и про Texture Tools:

C:\PROGRA~1\NVIDIA~1\NVIDIA~1\bin\nvzoom.exe -f kaiser -s 0.03 vehicles_german\vehicles\german\G06_PzII\PzII.dds vehicles_german\vehicles\german\G06_PzII\PzII_test.tga
Рассказывает о своих параметрах, если запустить без параметров. О как!

Натравить его на все текстуры в текущей папке и подпапках - zoom.cmd

for /f %%A in ('dir .\*.dds /b /s /a:-d') do (
C:\PROGRA~1\NVIDIA~1\NVIDIA~1\bin\nvzoom.exe -f lanczos -s 0.25 %%A %%~pA\%%~nA.tga
C:\PROGRA~1\NVIDIA~1\NVIDIA~1\bin\nvcompress.exe -bc1a %%~pA\%%~nA.tga %%A
)
del /s /q *.tga

Некоторые текстуры сохранены как DXT3. В частности Color_tex.dds. Их лучше распаковать поверх и обработать индивидуально - dxt3.cmd

for %%A in (*.pkg) do 7za x -tzip -y -ir!color_tex.dds %%~fA -o%%~nA
for /f %%A in ('dir .\color_tex.dds /b /s /a:-d') do nvdxt -rel_scale 0.25, 0.25 -RescaleSinc -dxt3 -outsamedir -overwrite -file %%A
Информацию о DXT3 любезно предоставила программа из пакета Texture Tools:
C:\PROGRA~1\NVIDIA~1\NVIDIA~1\bin\nvddsinfo.exe 01_karelia\maps\landscape\01_Karelia\Color_Tex.dds

Наигрались, нарисовали, можно паковать результат обратно. AHuMex совершенно прав в том, что смысла использовать res_mods для такого мода нет. Становится только хуже. Это такая забота разработчика о пользователях. Ладно, будем пихать взад. Предупреждать кого-то делать резервные копии ресурсов бесполезно, поэтому не буду.
Последний на сегодня скрипт - pakpak.cmd:

for /f %%A in ('dir /b /a:d') do 7za.exe a -tzip -mx0 -mtc=off -r %%~nA.pkg .\%%A\*
Создайте, запустите. Как закончит, удалите подозрительные файлы и папки.

ИТОГО.
Бесценный экпириенс. Сбылась мечта идиота сжать до 1%. Вся идея весит 1.5 Мб на две утилиты, но выполняется дольше. Файлы 25% вышли немного больше, чем у AHuMex`а, но аккуратней - сравните сглаживание на круглых предметах типа башни. Ещё чище выдаёт Texture Tools с алгоритмом -f lanczos, но не намного, нужно вглядываться. А может и ещё какой инструмент. Некоторые текстуры у AHuMex`а однопиксельные, здесь просто пожатые. Какой подход лучше, смотрите сами.

UPD. Няши, я бы мог сделать в стиле "сделайте мне приятно", но хотел чтоб вы ПОНИли процесс и могли повелевать обстоятельствами. Скрипты пользуйте как есть, но текст лучше читайте с нужной программой под рукой. Или не читайте, нуевона.

Оставить комментарий

Архив записей в блогах:
С двоюродным братом мужа из Канады приехал в Москву его сын от предыдущего брака-Филип.Мальчику 18 лет,он в этом году закончил школу и поступил в Монреальский университет на историю и музыку.Или музыку и историю-словом на что-то такое красивое в ...
Как то я и nilulin возвращаемся из города Erie,что в штате Pennsilvania. Время за полночь, до Buffalo ещё час езды, я за рулём и меня начинает клонить в дрёму. Надо сказать, что были мы там на выступлении моего друга, сценического гипнотизёра The Incredible Boris. Едем ...
Космические полеты сопряжены с огромным количеством проблем, которые только еще предстоит решить ученым. Они связаны не только с пребыванием человека в изолированном пространстве, но и обусловлены техническими моментами. Одним из самых важных является то, что космическим кораблям ...
О, спорт баскетбол, ты мир! Для кого-то. Фотограф Huy Trần ...
Регулярно, к 9 мая, вся страна сходит с ума. Вместо скорби по погибшим. Посереди города Рима стоит форум. Это огромное пространство, заполненное остатками храмов и обломками колонн. Слева от форума возвышается холм Палатин, увенчанный до сих пор остатками выстроенного Домицианом ...