Вверх Вниз


  • Страница 1 из 1
  • 1
Модератор форума: Kris†a™  
Форум » TES V: Skyrim » Мастерская » Mesh Tool N3 - Path Changer (позволяет менять пути к текстурам)
Mesh Tool N3 - Path Changer
anton  Offline Сообщение №1 написано: 13 Апреля 2013 в 13:59



362
Path Changer




Ссылка на Нексус: КЛИК


Эта программа позволяет менять пути к текстурам в NIF файлах.


Область применения:
- лёгкое и удобное изменение пути к текстуре
- возможность массовой замены путей в нескольких NIF файлах
- очень быстрая работа программы

(...инструкция по работе с программой находится внутри архива...)

Мой Блог
erik_945  Offline Сообщение №2 написано: 16 Апреля 2013 в 17:11 | Отредактировано: erik_945 - Вторник, 16 Апреля 2013, 17:12


Странник


25
А ты не думал свести все эти проги в одну? ведь классы и прочая объектная начинка там наверняка общая? Или написать ГУИ, позволяющий вызывать то, что нужно?
У некоторых людей возникают проблемы при работе с консолью.

anton  Offline Сообщение №3 написано: 16 Апреля 2013 в 20:42



362
Думал, но в этом нет большого смысла. Удобства будет минимум (особенно учитывая мои навыки создания интерфейсов :) ).
Но важно другое - эти утилиты специально так написаны, чтобы работать без интерфейса и с командной строкой.
Имея GUI они приобретут другой смысл. Их уже невозможно будет использовать так как сейчас задумано.
И главное - мне самому будет неудобно ими пользоваться.

PS:  по большому счёту я сам с ними не через консоль работаю, а через командную строку уникального, непревзойдённого ну и просто очень удобного файлового менеджера Total Commander.
(чего и всем советую :) )

Мой Блог
blackelfkiev  Offline Сообщение №4 написано: 12 Июля 2013 в 23:40



252
Можно ли утилите вместо конкретного nif файла дать путь к папке, чтобы утилита изменила все nif файлы в данной папке и подпапках? Есть ли у утилиты параметр запуска чтобы заменять файлы, а не переименовывать их? Как убрать автоматическое прописывание _sk в третьем параметре BSShaderTextureSet? Возможно ли написать утилиту для изменения параметра BSDismemberSkinInstance -- Partitions -- BSDismemberBodyPartType c SBP_34_FOREARMS на SBP_32_BODY к примеру?

anton  Offline Сообщение №5 написано: 13 Июля 2013 в 12:09 | Отредактировано: anton - Суббота, 13 Июля 2013, 12:10



362
Для массового переименования я выложен специальный архив с "PathChanger - automated MASS renamer" где уже всё настроено.
Нужные НИФ файлы складываются в папку IN, запускается батник, результат находится в папке OUT.

Замены нету, поверь, так удобнее. Но если надо куче файлов убрать приставку "_new" просто используй Total Commander. 3000 файлов переименовываются в два клика за пол секунды. (комбинация CTRL+T). Ооочень эффективно.

Переименование "_sk" не избежать, если меняется имя основной текстуры. Мне показалось это удобным, и я зашил это в код (как и для "_n"). Можно легко переделать конечно, но пока что не вижу причин для этого.

Да, можно, причём легко. Но правда пока не представляю как она может пригодиться, операция ведь единичная, можно и Нифскопом ...

Мой Блог
blackelfkiev  Offline Сообщение №6 написано: 13 Июля 2013 в 13:25 | Отредактировано: blackelfkiev - Суббота, 13 Июля 2013, 13:35



252
За Mass renamer спасибо

Касательно переименования не поверю, при создании реплейсера как раз удобнее без переименования, переименовать кучу файлов раскиданных по разным подпапкам даже в Totale тот ещё гемор.
(Массовое переименование CTRL+M, CTRL+T создание новой вкладки)

"_sk" же не везде есть, точнее в броне его скорее нет чем есть, а вот "_n" как раз почти всегда есть.

Ага единичная операция, два раза по пять тысяч раз.
PS Mass renamer не работает с подпапками только напрямую с nif файлами.

anton  Offline Сообщение №7 написано: 13 Июля 2013 в 14:58



362
Точно, не работает. Ты всё равно все файлы в папку IN должен собрать, в OUT потом и переименуешь всё сразу.
Если скриптовый язык BAT файлов позволяет, можешь попробовать модифицировать цикл, чтобы он и в подпапки заглядывал. Я такого пока не встречал и не знаю точно возможно ли это...

В броне "_sk" за блеск отвечает кажется ? в любом случае даже если такой текстуры и не будет физически, проблем в игре не возникнет.

Вот мне любопытно, что же ты такое делаешь, что тебе надо менять именно этот параметр ??? Как по мне так всё равно что там стоит...

Мой Блог
Kris†a™  Offline Сообщение №8 написано: 13 Июля 2013 в 15:05


Lady in the Dark


11360
Цитата (anton)
В броне "_sk" за блеск отвечает кажется ?
не все равно ... _sk это SSS текстура. В броне не используется, но если есть прописана, то шейдер ее пытается отрисовать и выдает ошибку. Эта текстура используется только для тела и только в 4 и 5 шейдере. А для брони идет 0 и 1 шейдер ... в них используется спекуляр (для блеска) который вшит в альфа канал самой _n карты.

My WebSite: Kris†a™: Private Modding

Мы отстроили реальный мир, превратив его в убожество, теперь отстраиваем виртуальные, надеясь на лучшее... ©
anton  Offline Сообщение №9 написано: 14 Июля 2013 в 12:53



362
Хм, тогда да, имеет смысл убрать "_sk" из автоизменения. Переделаю...

Мой Блог
Kepper  Offline Сообщение №10 написано: 15 Июля 2013 в 11:34



863
Хороший инструмент.
На этих выходных как раз пользовался.
Но возникли те же проблемы при изменении первой текстуры.

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

на ум пришло несколько вариантов улучшения

Варианты 1
убрать авто заполнение второй и третьей текстуры при изменении первой.
Тогда группу текстур можно изменить с помощью bat-файла который поледовательно будет запускаться с разными newPathExample.txt
(тк у меня не сработало изменении имени файла, то пришлось делать разные папки по которым кочевали, редактируемый файлы)
Минимум изменений.

Вариант 2
На вход программы подавать два файла с путями текстур.
В первом - какие пути на изменять
В втором - какие получить.
Количество строк в обоих файлах одинаково.
надо про пустые строки подумать.
То есть если была найдена похожая строка из третьей строки первого файла, то она будет заменена на третью строку из второго файла
Будет удобно так как одним запуском можно изменить пути текстур и для брони для для тела.

anton  Offline Сообщение №11 написано: 15 Июля 2013 в 21:22



362
Второй вариант мне очень нравится ! Тем более, что он позволяет вставить путь к текстуре даже там, где его раньше не было.

Мой Блог
Kepper  Offline Сообщение №12 написано: 16 Июля 2013 в 10:10 | Отредактировано: Kepper - Вторник, 16 Июля 2013, 10:11



863
Цитата (anton)
там, где его раньше не было.

Допустим в файле два меша: броня и тело.
Путь надо добавить в третью строку тела, на данный момент третья строка пуста у обоих мешей.
Как ты собираешься распознавать в каком из мешей следует менять путь?

Первый файл с путями к текстурам - файл условий
Второй файл с путями к текстурам - файл замены

Мне пока пришел в голову такой вариант(дополнение второго варианта).
В файле условий поставить число и через пробел путь к текстуре.
Это число будет говорить программе с какой строкой списка путей текстур меша нужно сравнивать путь из файла условий.

Если числа нет, то поиск будет идти в любой строке.

В файле замены тоже можно сделать чтобы число указывало в какой строке менять, при срабатывании условия из файла условий.

anton  Offline Сообщение №13 написано: 16 Июля 2013 в 21:14 | Отредактировано: anton - Вторник, 16 Июля 2013, 21:27



362
Ну я почти так и придумал, вот формат файла конфигурации для поиска и замены:



Правда в твоём примере всё равно и тело и броня получат новый путь к "_sk" текстуре. Тут уж никак не выкрутиться, разве что вычитывать имена связанных с текстурами NiTriShape блоков (если они будут иметь имена), и по ним уже определять менять блок текстур или нет.

Мой Блог
Kepper  Offline Сообщение №14 написано: 17 Июля 2013 в 08:50



863
правильно ли я понял.
Если встретится мешь у которого
в нулевой строке 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  Offline Сообщение №15 написано: 17 Июля 2013 в 21:10 | Отредактировано: anton - Среда, 17 Июля 2013, 21:16



362
Не совсем так.
Замена будет происходить при совпадении путей из первого массива, и только там - где путь совпадёт.
Спец. слова типа [INSERT]будут работать для любого массива путей, найденного в НИФе. Но можно добавить проверку по имени меша, например так:



+ использовать ключевое слово [ANY] вместо имени, для возможности обработки любого меша.

Мой Блог
Kepper  Offline Сообщение №16 написано: 18 Июля 2013 в 08:45



863
Не думаю что проверка по имени меша много даст.
Залез в KeairaArmor_0.nif из брони Кейры http://modgames.net/load/306-1-0-13015
Там 4 меша с одинаковым именем. Поэтому более надёжным критерием является исходный путь к текстуре.

Я планирую решать с помощью этой программы две задачи.
1. Изменений путей к перемещённым текстурам
2. Изменений путей для реколоров. Чтобы в игре появились стенэлоне версии.

Для решения этих задач подойдёт любой из последних трёх высказанных вариантов.

anton  Offline Сообщение №17 написано: 19 Июля 2013 в 19:41



362
Готово, если есть желание, можешь потестировать: PathChanger v1.1
(внутри два текстовых файла для примера возможного применения, как я описывал ранее)

Если все ОК, выложу отдельным модом.

Мой Блог
Kepper  Offline Сообщение №18 написано: 23 Июля 2013 в 08:57



863
Забрал на тесты. Вечером буду пытать.

Добавлено (23.07.2013, 08:57)
---------------------------------------------
С реальными задачами по смене одних путей на другие справилось.

То что теперь все файлы(не зависимо от того были изменения в них или нет) появляются с суффиксом _new для меня скорее плюс чем минус. Это действует при [NiTriShape][ANY].

Пробовал вместо ANY задавать значение свойства Name узла NiTriShape.
Программа создает новые файлы из тех где были узлы с указанным Name, но ожидаемых изменений я не увидел.

[INSERT] и [DELETE] работают несколько не так как хотелось бы.
Стоит [NiTriShape][ANY].
[INSERT] добавляет во все меши указанную, не зависимо от того стоит там уже путь или нет.
[DELETE] чистит все меши, когда указал чтобы был очищен определеённый путь.
Я затрудняюсь сказать, где можно применять эти инструменты. Разве что для правки ошибок, но это наверно проще в ручную делать, когда ошибка собственно обнаружена.


blackelfkiev  Offline Сообщение №19 написано: 26 Июля 2013 в 03:08



252
Набросал я тут небольшой батник для работы с подпапками.

@echo off
for /r D:\Path\in %%F in (*.nif) do D:\Path\PathChanger "%%~F" D:\Path\newPath.txt -q
pause

1200 файлов обрабатывало три минуты. 

А в тотале всё-таки сначала можно сделать поиск включая подпапки, а потом Mass Rename.

PS. Спасибо за v1.1

anton  Offline Сообщение №20 написано: 29 Июля 2013 в 13:16 | Отредактировано: anton - Понедельник, 29 Июля 2013, 13:24



362
Цитата (Kepper)
ожидаемых изменений я не увидел
Тут мне нужно больше информации ибо на моих тестах всё работало отлично.
Цитата (Kepper)
[INSERT]и [DELETE]работают несколько не так как хотелось бы

Эти команды я ввёл на всякий случай, для расширения функционала. Они безусловные, и вставляют/удаляют путь к выбранной текстуре вне зависимости было ли в этом поле что либо или нет, что невозможно было бы сделать по другому. Если указано [ANY]будут обработаны все блоки НИФ файла, если [определённое имя] - только первый найденный блок с таким именем.
Может когда нибудь и они пригодятся. Всё равно, реализовать их было достаточно просто.

Цитата (blackelfkiev)
Набросал я тут небольшой батник для работы с подпапками.
Спасибо за батник, опробую его на днях.

Был рад стараться :)

Добавлено (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]
Если замечаний не будет, её и выложу.

ПС: сорри за корявую ссылку, но сайт её чего то не может корректно обработать...

Мой Блог
Kepper  Offline Сообщение №21 написано: 30 Июля 2013 в 08:44 | Отредактировано: Kepper - Вторник, 30 Июля 2013, 08:49



863
Цитата (anton)
Тут мне нужно больше информации ибо на моих тестах всё работало отлично.



А пытался я испортить LBDarkArm_0.nif из этого мода http://modgames.net/load/306-1-0-15227
Там все меши имеют одно и тоже имя LB_BodyCors_0.

В папку In запихнул LBDarkArm_0.nif, LBDarkGloves_0.nif и LBDarkArm_1.nif
В папке Out появился файл LBDarkArm_0_new.nif
Но пути текстур не изменились на textures\lady

anton  Offline Сообщение №22 написано: 30 Июля 2013 в 13:14



362
Понял, всё правильно.
Поиск по имени я сделал только до первого встреченного NiTriShape блока с заданным именем, остальные не обрабатываются. (мне кажется так правильнее)
Но в самом первом блоке нет путей с заданным именем, вот ничего и не меняется.
Правда вводит в заблуждение появление "_new.nif" файла. Но это я исправлю.

Мой Блог
Koxae  Offline Сообщение №23 написано: 08 Марта 2019 в 16:37 | Отредактировано: Koxae - Пятница, 08 Марта 2019, 16:37





2364
Эх, такую бы утилитку для Морровинда...

Уроки Adobe Photoshop
Форум » TES V: Skyrim » Мастерская » Mesh Tool N3 - Path Changer (позволяет менять пути к текстурам)
  • Страница 1 из 1
  • 1
Поиск: