• Страница 1 из 1
  • 1
Модератор форума: Kris†a™  
Форум » TES V: Skyrim » Мастерская » Mesh Tools N2 - SkinInjector (программа для скининга модели в NIF файле)

Mesh Tools N2 - SkinInjector
anton  Offline  Сообщение №1 написано: 6 апреля 2013, 08:50 | Отредактировано: Sabira - 8 апреля 2013, 15:30



362
Skin Injector




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


Эта программа позволяет создавать скин для мешей в НИФ файлах.


Область применения:
- скининг моделей в НИФ файле (перегенерируются блоки [NiSkinInstance/BSDismemberSkinInstance], [NiSkinData]и [NiSkinPartition])
- позволяет работать с Блендером 2.62+ (может быть легко модифицирована для работы с другими 3Д редакторами)
- массовый скининг каких нибудь объектов в нескольких НИФ файлах
- очень быстрая работа программы

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

Рассчитана на использование совместно с другой моей программой "MeshInjector".

Надеюсь утилита будет полезна модостроителям (особенно тем, кто не работает в 3DMax и не имеет возможности использовать NifScripts)

Мой Блог
grv_alex  Offline  Сообщение №2 написано: 8 апреля 2013, 12:05 | Отредактировано: grv_alex - 9 апреля 2013, 10:39



10
Если честно не понял, как запустить прогу. В cmd ее не видит, пишет, что MeshInjector не является выполняемым процессом или что-то типа того. Мож ее куда-нить в System32 пихнуть? (Распаковал в папку d:/3d/Injector/... ) Юзаю Win7 64-bit. Опиши по подробней плизз.

Snakesalamandra  Offline  Сообщение №3 написано: 18 апреля 2013, 13:29


СУЗИ


295
Что то не работает...



Играю в Mass Effect 3, пишите в ЛС поиграем вместе!
erik_945  Offline  Сообщение №4 написано: 18 апреля 2013, 13:44



25
Да нормально там все работает. 
Пруфф:

anton  Offline  Сообщение №5 написано: 18 апреля 2013, 17:31 | Отредактировано: anton - 18 апреля 2013, 17:35



362
Мне кажется я знаю в чём тут дело. Я уже встречал подобные вопросы на Нексусе.
(оказалось, народ не очень себе представляет, что такое файловая система и как она устроена :( )

Чтобы запустить утилиту именно через системную "командную строку" (запустив "CMD.exe" в строке "Выполнить") надо сначала перейти в открывшемся чёрном окошке в папку, куда распакована эта программа. Предположим, вы распаковали её в папку "C:\MyTools\", тогда в командной строке надо написать "cd c:\mytools\" и нажать [Enter]. Только после этого можно запустить программу по имени "skininjector.exe".

PS: А вообще пользуйтесь командной строкой файлового менеджера на подобии "Total Commander" или "Far". В них командная строка заполняется комбинацией [CTRL]+[Enter]на выбранном файле, и руками вообще ничего вводить не надо.
PPS: grv_alex, не заметил как ты свой пост отредактировал, (мне уведомление об этом не пришло), а так бы раньше ответил.

Мой Блог
grv_alex  Offline  Сообщение №6 написано: 20 апреля 2013, 08:56



10
anton, ага спс, с консолькой просто давно уже разобраться хотел, да руки не доходили

Myprism  Offline  Сообщение №7 написано: 6 октября 2014, 03:12


Физик


anton, написал под выложенным модом, но наверное. правильнее будет и сюда запостить:

Антон, хорошие ты утилиты делаешь, но, извини, объяснять, как ими пользоваться, у тебя не очень получается
Ну прежде всего, то, что является экспортом для NIF при извлечении из
него информации в блендер, одновременно является импортом для блендера,
так что названия экстрактор/инжектор ясности не добавляют.
С внедрением развесовки из НИФа в блендер (Mesh_Tools_N5-S) я, кажется,
справился, помог пример в архиве. Но сразу возникает вопрос, почему тот
этап работы, который должен всё начинать, имеет предпоследний номер 5?
Ведь начинаем мы работу по переделке брони именно с загрузки прототипа в
блендер.
Ну, хорошо, загрузил, отредактировал, следующим этапом должен стать перенос развесовки из блендера в НИФ. А вот это не
получается. Вернее, получается и блендер не ругается, но файл
Weights.txt содержит у меня очень скудную информацию [Begin]1 [End]:(

Нужно более подробное описание.

1. Как я понял, сама модель у тебя импортируется и экспортируется в
виде OBJ-файла. Это очень понятно, это все версии блендера делают
нормально. Это я умею.

2. Остаётся проблема с привязкой к костям с соответствующими весовыми коэффициентами. Для этого надо
изменять DSDismemberSkinInstance вместе с редактированием модели. Импорт
этой привязки к костям у тебя делает Mesh_Tools_N5. Но при этом
непонятно, должен ли быть к этому моменту импортирован в блендер скелет?


3. Когда работа в блендере закончена, надо перенести информацию из него в NIF. Сама модель переносится без труда через
OBJ-файл.

4. Как из блендера вытащить развесовку? Это у меня не получается. Скрипт срабатывает, но даёт [Begin]1 [End]Может быть, в
блендере не хватает скелета? Но тогда в какой момент и как его туда
правильно импортировать?

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

Главная проблема у меня заключается в том, что мне приходится одновременно работать с двумя неизвестными: изучать работу с костями в блендере и разбираться с твоими утилитами. По отдельности не получается. так как без твоих утилит мне в современном блендере костей не видать :)

anton  Offline  Сообщение №8 написано: 6 октября 2014, 09:42



362
Myprism, да лучше тут, раз уж топик уже есть.

Названия действительно не однозначные, но давал я их из расчёта на НИФ файлы, т.е. экстрактор из НИф-а, и иньектор в НИФ.
Номер у NIF Tools N5 - Skin Extractor не зависит от порядка использования. Просто я его релизнул предпоследним, поэтому он получил релизный порядковый номер 5.
Файл Weights.txt получается пустой из за моего особенного алгоритма экспорта скина.
Дело в том, что скрипт экспортирует данные только о тех мешах, которые в Блендере приаттачены к Арматуре (причём арматура должна быть только одна).
Следовательно перед экспортом нужно обязательно добавить в Блендеровский проект нужный Скелет и привязать к нему все нужные меши.
Так было удобно создавать сам скрипт экспорта, да и обычно я работал со скином только для последующего создания анимации, поэтому скелет у меня присутствовал по любому.

Для брони можно взять готовый ванильный или UNP скелеты из моего мода "Animation Tools N3 - with IK" (добавляется он в проект через CTRL-F1 (Append), потом выбираем файл с арматурой и далее в его разделе Objects выбирает нужную арматуру для переноса в свой проект).

Можно и такое, хотя я не совсем понял что именно, но можно :)
Можно сделать одежду, скопировать скин с тела (например UNP) на неё, потом импортировать этот скелет и приаттачить к нему модель (для этого нужно выделить сначала Меш, потом Скелет, а потом комбинацией CTRL+P и просто "Armature Deform" без подпунктов, привязать модель к скелету)

Согласен, я тот ещё обьяснятель, но стараюсь как могу :)

Мой Блог
Myprism  Offline  Сообщение №9 написано: 20 декабря 2014, 08:54


Физик


anton, спасибо. Сейчас понятно, пошёл дальше копать :)

Добавлено (07 Октября 2014, 14:27)
---------------------------------------------
Ну, всё получилось :)
Сделал одёжку (всего лишь кольчугу) в двух размерах, скопировал на неё развесовку и экспортировал в НИФ. В общем, получил все необходимые мне операции. Для комфортной работы не хватало хорошего описания и организации файлов. Просто сложил всё в одном месте, вместо командной строки приготовил БАТ-ники. Ещё, нужно иметь заготовку проекта с телом и скелетом.
Затык у меня был в двух местах:
1. Я редактировал броню в блендере и только после этого накладывал на неё развесовку и экспортировал. Получалась ерунда с числом вертексов. При экспорте в OBJ их число другое. Выходит, накладывать веса и экспортировать надо сразу после импорта. Но скорее всего, я просто ещё не умею управлять всеми опциями экспорта.
2. Мне нельзя было терять текстурную сетку, так как я использовал ту же развёртку, которую имеет тело. Но редактирование с объединением вертексов и последующим экспортом в OBJ полностью нарушает текстурную развёртку. Помог экспорт в 3ds-файл. После него мне понадобилось чуть поправить текстурную сетку только в тех местах, которые я редактировал.

Добавлено (15 Декабря 2014, 07:44)
---------------------------------------------
anton, а нельзя ли выложить утилиты для работы с Vertex Colors? Дело в том, что их нельзя экспортировать/импортировать через OBJ :( А необходимость периодически возникает. Намедни редактировал тело огненного атронаха, так пришлось вручную в НИФскопе нескольким сотням вертексов цвета ставить :( Ещё это совершенно необходимо для редактирования скал. Из-за слишком большого числа вертексов (несколько тысяч) пришлось отказаться от редактирования антуража Небесной Кузни.

Добавлено (20 Декабря 2014, 08:14)
---------------------------------------------
anton, а на чём ты программировал EXE-шники? Как узнал спецификацию NIF-а?

Добавлено (20 Декабря 2014, 11:54)
---------------------------------------------
Ещё возможен такой алгоритм очистки списка названий. Вручную реализуется так:
1. Запоминаем названия всех узлов кроме корневого. Нужно запоминать только названия нитришейпов.
2. Удаляем привязку к костям и все кости.
3. Ставим число названий в списке 1 (пропадут все, кроме корневого узла)
4. Забиваем вручную число и названия нитришейпов (если их всего один, то всё совсем просто :) )
5. Сохраняем ниф и инжектируем туда скин.
В этом случае в таблице будут только названия всех нитришейпов и всех костей, но по одному разу :) По-видимому, этот алгоритм лучше всего встроить в SkinInjector. Это полезно ещё и потому, что тогда инжектирование будет происходить в чистую модель. Я до конца не разобрался, но, похоже, что если модель не очистить от старых костей и скина, то инжектирование происходит иначе, чем в чистую модель.


anton  Offline  Сообщение №10 написано: 20 декабря 2014, 11:13 | Отредактировано: anton - 20 декабря 2014, 11:18



362
Myprism,
Вот скрипт экспорта Vertex Colors для триангулированной модели из Блендера в ТХТ файл:
(импорт я не делал т.к. ни разу не было потребности а этом)

Полученный ТХТ файл нужно указать программке "MeshInjector" в качестве третьего параметра.

Программирую я на MS Visual Studio 2013/2010 Express.
Спецификацию НИФ-а узнал случайно, глянув в помощь Нифскопа. У него просто море информации оказалось, и именно такой, которая нужна программисту. После этого и началось всё моё "творчество" )))

Дубли блоков или имён у меня никак не влияли на импорт скина, поэтому я и не усложнял себе задачу их устранением.
Конечно можно искать существующие блоки по именам, и если такие уже есть, то не создавать их, а использовать существующие. Сделать это относительно просто, но может возникнуть проблема. Если вдруг где то в НИФ файле окажется Нод с таким же именем, но никак не относящийся к нашему скину, то будет такой баг, который потом фиг найдёшь просто так.
В общем надёжнее будет просто создать все нужные блоки и сделать привязку именно к ним.

Мой Блог
Myprism  Offline  Сообщение №11 написано: 30 декабря 2014, 12:28


Физик


anton, у меня возникла проблема со скинингом кистей рук. Я сделал кисть руки женского скелета так, что все косточки в блендере лежат внутри пальцев. Но мне нужна развесовка по костям. Поступил просто: взял из твоего примера кисти рук и отскинил по ним. Но в игре мои "пальцы" оказались чуть ли не в 2 раза длиннее и не помещаются в человеческой кисти руки. Понятно, что со скинингом что-то не то, так как в блендере там всё прекрасно помещается и в кисть UNP и в кисть DG. Тогда я беру кисть DG и импортирую её развесовку в Блендер. Использую её как образец для скининга. После этого в игре всё становится нормально, пока рука висит. Но если её сжать в кулак, то пальцы протыкают ладонь и вылезают с её тыльной стороны. Что-то тут не так с костями и это сказывается на экспорте. Ведь экспорт тоже использует скелет. Ты там ничего с костями пальцев не намудрил?

anton  Offline  Сообщение №12 написано: 30 декабря 2014, 13:23



362
Myprism, вроде нет, сколько я делал разных поз и анимаций - проблем не возникало.
Мне трудно представить отчего так может быть, если можешь, скинь Blend и NIF файлы для кистей, попробую разобраться.

Мой Блог
Myprism  Offline  Сообщение №13 написано: 1 января 2015, 13:39 | Отредактировано: Myprism - 1 января 2015, 13:41


Физик


anton, чтобы учесть коэффициент 0.85 для женских рук, можно копировать развесовку с уже готовых рук, но при экспорте надо сохранить старые (уже имеющиеся с коэффициентом 0.85) привязки к костям руки. Я бы перенёс положения и углы костей вручную, но их 38 и их трудно идентифицировать :( Кстати, почему бы не ввести опцию сохранения привязки к костям от образцовой модели?

anton  Offline  Сообщение №14 написано: 1 января 2015, 16:58



362
Myprism, вот попробуй новый SkinInjector: "Скачать".

Правда теперь он любые пальцы будет масштабировать, так что эта версия нужна для скина исключительно женских кистей.

Мой Блог
Myprism  Offline  Сообщение №15 написано: 1 января 2015, 20:07


Физик


anton, хорошо, что я не успел вручную параметры костей забить :) Спасибо!
А почему там два файла? Почему ты думаешь, что может потребоваться ещё и коэффициент 0.86? Экспериментально я это проверить не смогу, так как вряд ли замечу разницу визуально.

Добавлено (01 Января 2015, 23:07)
---------------------------------------------
Попробовал новую утилиту. Получил странный результат. Всё, что касалось пальцев - отлично, уменьшились как надо. Но вот верхние фаланги, которые относятся к кости Hand - остались увеличенными. Но кисть у меня состоит из скелетной кисти и прозрачной человеческой. Так вот, человеческую я не изменял, но когда скопировал ей нитришейп в общий НИФ, то получил совсем странный результат - рука искажена и распухли верхние фаланги относящиеся к кости Hand. А вот этого совсем не должно быть, так как модель и её скининг не менялись. А это уже значит, что новый вариант утилиты меняет не только привязки костей, но и сами кости. Проверил, так и есть. Кости после утилиты не те, что были в оригинале. Похоже, что скининг теперь делается правильно, если модель поставить на старые неизменённые кости.


anton  Offline  Сообщение №16 написано: 1 января 2015, 20:23 | Отредактировано: anton - 1 января 2015, 21:46



362
Myprism, понял, странно конечно, буду проверять...
(два варианта то я просто так сделал, т.к. у меня не получились смещения костей паташинов в точности такие же как у исходных кистей)

.....

Сделал комплексную проверку в игре НИФ-а кисти, содержащую нормальную кисть вместе с её скелетной формой. Результат: всё идеально работает !
Ничего никуда не выпирает и анимируется как положено. Вот тот НИФ, который я проверял: "Скачать"

ПС: но кажется я знаю почему у тебя не получилось. Сам, когда готовил НИФ заготовку для SkinInjector-а, один раз поленился удалить все ноды, и получил в итоге глюк, когда пальцы "втянулись" немного по оси Х.
(оказалось, что моя программка всё таки не создаёт новые ноды, если в НИФ-е они уже существуют с такими же именами :D , как я про это забыл - ума не приложу ! , в итоге сам и попался на тот глюк, что однажды описывал !)

Мой Блог
Myprism  Offline  Сообщение №17 написано: 2 января 2015, 09:12


Физик


anton, да, та моя проблема связана именно с оставлением нодов. И, как раз, это выглядело как втягивание по оси Х. Сейчас, удалив весь скининг и кости я получаю для костяной кисти точно такой же результат, как у тебя. Но есть ещё маленькая проблема. Это, скорее всего, то, что заставило тебя сделать утилиту с коэффициентом 0.86. Дело в том, что отскиненная костяная кисть не совсем вписывается в родную. Как раз, она оказывается чуть-чуть меньше. Но если отскинить и человеческую кисть, то всё вписывается правильно. Т.е. модель кисти (человеческой) загруженная в Блендер и отскиненная заново (из твоего примера) не совпадает с оригинальной, а оказывается чуть-чуть меньше. Почему? Вроде, этого быть не должно. Ведь это означает, что родная кисть отскинена иначе, по другому алгоритму. В оригинальную кисть лучше вписывается костяная с коэффициентом 0.86.
С анимацией всё в порядке.

anton  Offline  Сообщение №18 написано: 2 января 2015, 10:38 | Отредактировано: anton - 2 января 2015, 10:47



362
Myprism, да дело в том, что положение отмастабированных мною нодов, и скина для них, не совпадает с оригинальным
(ну или с тем, который выдают утилиты NifScript у Макса, ведь эти UNP руки отскинены именно так).

Несовпадение находится в пределах ~0.15 юнита, что практически незаметно, но всё же.
И поэтому я не могу до конца понять, как они обрабатывают эти отмасштабированные косточки.
(даже может быть ошибка и у них, а не у меня ... ? , всякое ведь бывает)

Мой алгоритм довольно прост: если родительская косточка содержит в своём имени строку "Fingers", то к координатам дочерней косточки применяем масштабирование

Global_Node_X = Global_Node_X + Current_Bone_Vector_X * ( 1 / Parent_Scale),

также и для Global_Node_Y и Global_Node_Z
(где Parent_Scale всегда равен "0.8517", т.е. масштабу косточки "Hand" у женского скелета).

Откуда получается несовпадение, пока не представляю.

----------------------------
Забыл добавить: в твоём примере я сгенерил скин для костяной формы и для одной из форм обычной ркуи, вторая форма обычной руки осталась БЕЗ скина вообще. Так вот - обе формы: отскиненная мной и не отскиненная вообще - совпадают идеально (проверял в Нифскопе). Так что похоже что программка считает правильно...

Мой Блог
Myprism  Offline  Сообщение №19 написано: 2 января 2015, 12:25


Физик


anton, у меня там НИФ не простой :) там для обеих моделей стоит один и тот же набор NitriShapeData и, хотя DismemberSkinInsnance и разные, у них стоит общий (один и тот же) NiSkinData :)
В любом случае, теперь утилиты позволяют справиться с женскими руками. Можно или коэффициент 0.86 поставить или отскинить руки, тогда соответствие всех моделей в руках вообще идеальное.

anton  Offline  Сообщение №20 написано: 2 января 2015, 12:52 | Отредактировано: anton - 2 января 2015, 12:53



362
Myprism, точно, NitriShapeData одинаковые, были :) , но я позаботился о том, чтобы они стали разными :D .

Отлично, значит будем считать, что проблема решена !

Мой Блог
Myprism  Offline  Сообщение №21 написано: 3 января 2015, 03:59


Физик


anton, а ведь по описанию алгоритма получается, что новая утилита, это не утилита для скининга кистей только, а универсальная утилита скининга для женского тела? Ведь всё, что кроме пальцев рук и того, откуда они растут, имеет масштаб 1.

anton  Offline  Сообщение №22 написано: 3 января 2015, 09:01



362
Myprism, в общем то да, мне просто так удобнее помнить, что есть нормальная утилита, а есть её модификация, которую нужно использовать только для кистей женских рук.
Но я подумываю, чтобы сделать одну, универсальную, тем более что уже почти знаю, как это сделать :)

Мой Блог
Myprism  Offline  Сообщение №23 написано: 3 января 2015, 13:52


Физик


Сделал и отскинил женское колечко для 30-й фаланги пальцев - всё сидит отлично!

anton  Offline  Сообщение №24 написано: 3 января 2015, 19:10



362
Myprism, замечательно !
Скоро обновлю свой SkinInjector улучшенной версией.

Мой Блог
Koxae  Offline  Сообщение №25 написано: 10 февраля 2015, 01:04 | Отредактировано: Koxae - 10 февраля 2015, 03:12





Люди добрые, помогите отскинить броньку! Она мне оч нравится, а из обла её никто портировать не удосужился (вернее, есть один умелец, но он не захотел свой порт выкладывать, тока скринами похвастался). Я её подогнала под тушку, которую использую (cbbe с подкрученными слайдерами), правда, только нулевую модель, ибо делать ещё и поддержку слайдеров комплекции просто нет сил. Но все мои надежды пошли прахом на этапе скиннинга, не умею я скинить, то ли руки кривые, то ли руки кривые. Одно из двух. Помогите, плз! Не оставьте меня рыдать над моделью в максе.
Я, вот, ещё поковырялась, удалось отскинить только перчатки (они длинные, почти во всю руку). Остальное – слёзы. Даже боты, которые почти в облипку, только внизу он огромный, не хотят нормально скинится: как только начинаю двигать кости, сапог, вроде, и едет за костью, но, при этом, его трясёт и колбасит, и фиг знает отчего. Я уже молчу про то, что там изображает нижнюю часть брони, которая довольно далеко местами отходит от тела, плюс там ещё есть части, которые болтаются посередине, с ними вообще беда. Я даже деформировала тушку, чтоб она как бы заполняла нижнюю часть, но результат, всё равно, плачевный. В общем, хелп!

Уроки Adobe Photoshop
Myprism  Offline  Сообщение №26 написано: 10 февраля 2015, 04:31


Физик


Koxae, скинить, это не значит двигать кости! Это привязка одежды под ДАННЫЙ скелет. Сначала броня должна подгоняться под тело, а потом привязываться к костям. Иногда достаточно автоматической привязки, иногда требуется ручная работа. Где броня, о которой идёт речь? Надо же увидеть, стоит ли за неё браться. Если и буду подгонять, то сначала под DG и UNP. Если получится без больших затрат сил, то могу и и под CBBE попробовать, но для этого нужно тело и его скелет. Там ванильный?

Koxae  Offline  Сообщение №27 написано: 10 февраля 2015, 13:16





Myprism, я всё это знаю, кости двигаю для проверки привязки. Бронь подогнана. Отскинить не получается.

Уроки Adobe Photoshop
Green_Max666  Offline  Сообщение №28 написано: 11 февраля 2016, 05:57



7
Для тех кому лень устанавливать сторонние программы или долго писать путь к файлу - можно скопировать программу cmd.exe из папки System32 (в C:\\Windows\) и вставить в ту же папку, где находится ваша программа. И тогда при запуске командной строки у вас сразу же будет выбрана данная папка и можно будет спокойно запустить файл SkinInjecror.exe (или вообще любую программу в данной папке)

avelnord  Offline  Сообщение №29 написано: 16 декабря 2016, 10:09



28
Добрый день! Есть тут кто живой? Искал уроки по скиннингу и наткнулся на эту страничку. Заинтересовало, но все ссылки на эти програмки битые. Ничего не могу скачать. Везде пишет, что такой страницы не существует. Нельзя ли перезалить, пли-из!?

anton  Offline  Сообщение №30 написано: 17 декабря 2016, 11:52



362
На Нексусе лежит набор всех иструментов, которые я делал.
Там есть и этот. Иструкции внутри архива имеются.
Называется: "ToolsPack to work with Blender 2.7"

Мой Блог
Форум » TES V: Skyrim » Мастерская » Mesh Tools N2 - SkinInjector (программа для скининга модели в NIF файле)
  • Страница 1 из 1
  • 1
Поиск:





Ответ на жалобу смотрите в разделе жалоб