Эта программа позволяет менять пути к текстурам в NIF файлах.
Область применения: - лёгкое и удобное изменение пути к текстуре - возможность массовой замены путей в нескольких NIF файлах - очень быстрая работа программы
(...инструкция по работе с программой находится внутри архива...)
А ты не думал свести все эти проги в одну? ведь классы и прочая объектная начинка там наверняка общая? Или написать ГУИ, позволяющий вызывать то, что нужно? У некоторых людей возникают проблемы при работе с консолью.
Думал, но в этом нет большого смысла. Удобства будет минимум (особенно учитывая мои навыки создания интерфейсов ). Но важно другое - эти утилиты специально так написаны, чтобы работать без интерфейса и с командной строкой. Имея GUI они приобретут другой смысл. Их уже невозможно будет использовать так как сейчас задумано. И главное - мне самому будет неудобно ими пользоваться.
PS: по большому счёту я сам с ними не через консоль работаю, а через командную строку уникального, непревзойдённого ну и просто очень удобного файлового менеджера Total Commander. (чего и всем советую )
Можно ли утилите вместо конкретного nif файла дать путь к папке, чтобы утилита изменила все nif файлы в данной папке и подпапках? Есть ли у утилиты параметр запуска чтобы заменять файлы, а не переименовывать их? Как убрать автоматическое прописывание _sk в третьем параметре BSShaderTextureSet? Возможно ли написать утилиту для изменения параметра BSDismemberSkinInstance -- Partitions -- BSDismemberBodyPartType c SBP_34_FOREARMS на SBP_32_BODY к примеру?
Изменение репутации для пользователя anton
antonOffline
Сообщение №5
написано: 13 июля 2013, 08:09
| Отредактировано: anton - 13 июля 2013, 08:10
Для массового переименования я выложен специальный архив с "PathChanger - automated MASS renamer" где уже всё настроено. Нужные НИФ файлы складываются в папку IN, запускается батник, результат находится в папке OUT.
Замены нету, поверь, так удобнее. Но если надо куче файлов убрать приставку "_new" просто используй Total Commander. 3000 файлов переименовываются в два клика за пол секунды. (комбинация CTRL+T). Ооочень эффективно.
Переименование "_sk" не избежать, если меняется имя основной текстуры. Мне показалось это удобным, и я зашил это в код (как и для "_n"). Можно легко переделать конечно, но пока что не вижу причин для этого.
Да, можно, причём легко. Но правда пока не представляю как она может пригодиться, операция ведь единичная, можно и Нифскопом ...
Касательно переименования не поверю, при создании реплейсера как раз удобнее без переименования, переименовать кучу файлов раскиданных по разным подпапкам даже в Totale тот ещё гемор. (Массовое переименование CTRL+M, CTRL+T создание новой вкладки)
"_sk" же не везде есть, точнее в броне его скорее нет чем есть, а вот "_n" как раз почти всегда есть.
Ага единичная операция, два раза по пять тысяч раз. PS Mass renamer не работает с подпапками только напрямую с nif файлами.
Точно, не работает. Ты всё равно все файлы в папку IN должен собрать, в OUT потом и переименуешь всё сразу. Если скриптовый язык BAT файлов позволяет, можешь попробовать модифицировать цикл, чтобы он и в подпапки заглядывал. Я такого пока не встречал и не знаю точно возможно ли это...
В броне "_sk" за блеск отвечает кажется ? в любом случае даже если такой текстуры и не будет физически, проблем в игре не возникнет.
Вот мне любопытно, что же ты такое делаешь, что тебе надо менять именно этот параметр ??? Как по мне так всё равно что там стоит...
не все равно ... _sk это SSS текстура. В броне не используется, но если есть прописана, то шейдер ее пытается отрисовать и выдает ошибку. Эта текстура используется только для тела и только в 4 и 5 шейдере. А для брони идет 0 и 1 шейдер ... в них используется спекуляр (для блеска) который вшит в альфа канал самой _n карты.
Хороший инструмент. На этих выходных как раз пользовался. Но возникли те же проблемы при изменении первой текстуры.
Необходимо было создать список, где первая текстура татуировка, а вторая и третья от тела. В конечном итоге нужный bat-файл соорудил.
на ум пришло несколько вариантов улучшения
Варианты 1 убрать авто заполнение второй и третьей текстуры при изменении первой. Тогда группу текстур можно изменить с помощью bat-файла который поледовательно будет запускаться с разными newPathExample.txt (тк у меня не сработало изменении имени файла, то пришлось делать разные папки по которым кочевали, редактируемый файлы) Минимум изменений.
Вариант 2 На вход программы подавать два файла с путями текстур. В первом - какие пути на изменять В втором - какие получить. Количество строк в обоих файлах одинаково. надо про пустые строки подумать. То есть если была найдена похожая строка из третьей строки первого файла, то она будет заменена на третью строку из второго файла Будет удобно так как одним запуском можно изменить пути текстур и для брони для для тела.
Допустим в файле два меша: броня и тело. Путь надо добавить в третью строку тела, на данный момент третья строка пуста у обоих мешей. Как ты собираешься распознавать в каком из мешей следует менять путь?
Первый файл с путями к текстурам - файл условий Второй файл с путями к текстурам - файл замены
Мне пока пришел в голову такой вариант(дополнение второго варианта). В файле условий поставить число и через пробел путь к текстуре. Это число будет говорить программе с какой строкой списка путей текстур меша нужно сравнивать путь из файла условий.
Если числа нет, то поиск будет идти в любой строке.
В файле замены тоже можно сделать чтобы число указывало в какой строке менять, при срабатывании условия из файла условий.
Изменение репутации для пользователя anton
antonOffline
Сообщение №13
написано: 16 июля 2013, 17:14
| Отредактировано: anton - 16 июля 2013, 17:27
Правда в твоём примере всё равно и тело и броня получат новый путь к "_sk" текстуре. Тут уж никак не выкрутиться, разве что вычитывать имена связанных с текстурами NiTriShape блоков (если они будут иметь имена), и по ним уже определять менять блок текстур или нет.
правильно ли я понял. Если встретится мешь у которого в нулевой строке textures\qqq\www\eee.dds в первой строке textures\qqq\www\eee_n.dds во второй строке пустой в шестой строке textures\qqq\www\eee2_mask.dds То провести такие изменения нулевая строка textures\qqq\www\eee2.dds первая строка textures\qqq\www\eee2_n.dds вторая строка textures\qqq\www\eee2_sk.dds шестая строку очистить
Тоесть замена будет срабатывать при соблюдении всех условий
Выполнятся ли такие действия: Если в меше в нулевой строке textures\qqq\www\taty1.dds, то должны быть такие изменения нулевая строка textures\qqq\www\eee2.dds первая строка textures\qqq\www\eee2_n.dds вторая строка textures\qqq\www\eee2_sk.dds шестая строка textures\qqq\www\ghj.dds
То есть чтобы было можно изменять количество условий, при выполнении которых программа будет проводит указанные изменения. Обычно я определял какие мне нужны пути для всех текстур всего лишь по путю в нулевой строке.
Изменение репутации для пользователя anton
antonOffline
Сообщение №15
написано: 17 июля 2013, 17:10
| Отредактировано: anton - 17 июля 2013, 17:16
Не совсем так. Замена будет происходить при совпадении путей из первого массива, и только там - где путь совпадёт. Спец. слова типа [INSERT]будут работать для любого массива путей, найденного в НИФе. Но можно добавить проверку по имени меша, например так:
Не думаю что проверка по имени меша много даст. Залез в KeairaArmor_0.nif из брони Кейры https://modgames.net/load/306-1-0-13015 Там 4 меша с одинаковым именем. Поэтому более надёжным критерием является исходный путь к текстуре.
Я планирую решать с помощью этой программы две задачи. 1. Изменений путей к перемещённым текстурам 2. Изменений путей для реколоров. Чтобы в игре появились стенэлоне версии.
Для решения этих задач подойдёт любой из последних трёх высказанных вариантов.
Добавлено (23.07.2013, 08:57) --------------------------------------------- С реальными задачами по смене одних путей на другие справилось.
То что теперь все файлы(не зависимо от того были изменения в них или нет) появляются с суффиксом _new для меня скорее плюс чем минус. Это действует при [NiTriShape][ANY].
Пробовал вместо ANY задавать значение свойства Name узла NiTriShape. Программа создает новые файлы из тех где были узлы с указанным Name, но ожидаемых изменений я не увидел.
[INSERT] и [DELETE] работают несколько не так как хотелось бы. Стоит [NiTriShape][ANY]. [INSERT] добавляет во все меши указанную, не зависимо от того стоит там уже путь или нет. [DELETE] чистит все меши, когда указал чтобы был очищен определеённый путь. Я затрудняюсь сказать, где можно применять эти инструменты. Разве что для правки ошибок, но это наверно проще в ручную делать, когда ошибка собственно обнаружена.
Набросал я тут небольшой батник для работы с подпапками.
Спасибо за батник, опробую его на днях.
Был рад стараться
Добавлено (29.07.2013, 13:16) --------------------------------------------- Допилил батник для удобства пользования, теперь всё что есть в папке IN обрабатывается и перекладывается в папку OUT с учётом подкаталогов. (спасибо blackelfkiev) Попробовать пред-релизную сборку можно тут: [url=http://rghost.ru/download/47745371/48af4dff6a75c0460e6a40d3fd0d638cfc97dbe1/PathChanger%20-%20Automated%20MASS%20renamer%20(with%20Subfolders).rar]Скачать[/url] Если замечаний не будет, её и выложу.
ПС: сорри за корявую ссылку, но сайт её чего то не может корректно обработать...
В папку In запихнул LBDarkArm_0.nif, LBDarkGloves_0.nif и LBDarkArm_1.nif В папке Out появился файл LBDarkArm_0_new.nif Но пути текстур не изменились на textures\lady
Понял, всё правильно. Поиск по имени я сделал только до первого встреченного NiTriShape блока с заданным именем, остальные не обрабатываются. (мне кажется так правильнее) Но в самом первом блоке нет путей с заданным именем, вот ничего и не меняется. Правда вводит в заблуждение появление "_new.nif" файла. Но это я исправлю.