Да, с форматом всё более или менее понятно, в твоих скриптах подробные комментарии
Цитата Aksyonov
плагин для 3ds max тот переделанный успешно эспортирует анимацию лишь с одной костью
Попробовал скрипт того товарища с нексуса - проблем не увидел, экпортировался скелет, скин и анимации со всеми костями. Если в скрипте есть недоработки - то я их смогу поправить, скрипт мне понятен. Но как мне эти недоработки увидеть? Кто столкнулся с проблемами скидывайте инфу.
Рип, у тебя в сцене два скелета, один состоит из 95 костей (Bone) второй из 150 вспомогательных объектов (Dummy). Один объект заскинен к одному скелету, второй ко второму. Отсюда проблемы. Приводи сцену в порядок. Заскинь всё на один скелет, а второй удали. Какой - не принципиально. Можно сделать так: сначала удалить один объект вместе со скелетом, на который он заскинен, и экспортировать второй. Затем удалить второй (со скелетом) и экспортировать первый. Затем создать новую сцену, и импортировать оба объекта со скелетом. После этого получишь сцену с одним скелетом, и двумя объектами, к нему заскиненными.
anton, понятно, неправильный экспорт только скелета? Или анимаций тоже?
anton, насколько понимаю из комментариев в твоем скрипте Script1 = Export Skeleton.txt координаты костей должны иметь значения относительно родительских. А матрицы поворотов? И ещё, Matrix.invert() что делает?
думаю анимация тоже будет экспортироваться некорректно
Да, судя по скрипту, тоже. Да и вообще, товарищ там много лишнего и непонятного наворотил, проще новый скрипт написать. При экспорте анимации координаты и повороты тоже нужны в parent?
Понятно. Хорошо бы для отладки сделать сценку с несколькими костями, мешем и простейшей анимацией одинаковую для двух программ. Я могу сделать такую в максе, но как я буду знать, что у меня всё правильно экспортируется?
Да, только анимацию я не могу импортировать из нифа. Попробуй из блендера в FBX формат экспортировать этим плагином.
И ещё один момент. Ты говоришь, что
"компенсаторные" координаты рассчитываются как обратные текущим, но только в глобальной системе координат
но в твоём файле Skeleton.txt я не вижу глобальной системы координат, координаты кости NPC Root [Root]в глобальной системе -0.000001 -5.000000 15.000000
Нет, ты не правильно понял. Там другой формат данных, к .kf отношения не имеет.
Добавлено (24 Декабря 2014, 08:03) --------------------------------------------- Следующее наблюдение. Привожу данные для кости Bone_RightUp.R из твоего файла
Как думаешь, что происходит со знаками в первых двух строках? Я ни каких преобразований не произвожу, просто получаю матрицу поворота в "родительской" системе координат для текущей кости, и инвертирую для "компенсаторной". Из последнего следует то, что в твоем файле для "компенсаторной" матрицы используется "родительская" система координат, а не глобальная.
Добавлено (24 Декабря 2014, 08:33) --------------------------------------------- Подозреваю, что в твоём файле знаки изменены из-за этого действия
Код
# Компенсация наклона скелета в НИФ-е на 90" из за приПеренченной к "NPC Root [Root]" ИК косточки "Controller_BASE" if Bone.parent: if (Bone.parent.name == "Controller_BASE"): Compensation = Armatura.data.bones['Controller_BASE'].matrix.to_3x3().copy() Matrix.rotate(Compensation)
В моём скрипте кость Controller_BASE не создается, соответственно компенсация не нужна. Что думаешь об этом?
PS Возможно причина в том, что в твоём исходнике углы одни, а в нифе другие, с применением компенсации. И у меня в максе как в нифе. Наверное на него не стоит опираться, давай пробовать через FBX.
Скачал блендер, экспортировал проект в FBX, импортировал в макс, вроде всё корректно, скелет, анимация. На всё потратил 3 минуты . Пойду смотреть дальше.
Добавлено (24 Декабря 2014, 15:36) ---------------------------------------------
Цитата anton
Я сделаю новый файл, где кости будут стоять на целых одинаковых расстояниях (например в 1 юнит) и направлены строго по осям.
Да, наверное надо сделать новую сценку. Только расстояния и направления не надо выравнивать, а то в матрице будут одни нули и единицы, толку от них будет мало. И еще один момент - в иерархии скелета должно быть не менее трех костей, root и еще минимум две, а лучше четыре. Можешь скинуть мне .blend, в макс я сам перегоню, через FBX нормально получается.
Добавлено (25 Декабря 2014, 15:58) --------------------------------------------- anton, ну что, модельку тестовую сделаешь? А то я в блендере не осилю так сходу, без изучения, а изучать не охота, пользоваться им не планирую. Сделать модель в максе я, конечно сам могу, но насколько я понимаю, мой скрипт должен на выходе выдать данные полностью идентичные твоему. А отладить скрипт можно только имея идентичные модели для обеих программ. И не просто пару костей сориентированных по осям, а чуть более сложную. Чем сложнее модель, тем лучше будут видны все тонкости.
Что то в текстурах HD Detail 4096x4096 не просматривается HD Detail.
Текстура из архива
Альтернатива, HD Detail. Запечена на модели 34 000 полигонов.
PS О производительности. Выбрал сцену средней загруженности, и замерил фпс в игре с енб без графических модов. Сцена без персонажа - 35-36 кадров. Сцена с персонажем в полный кадр, модель 34 К, набор текстур 4 К весом 256 МБ - 35-36 кадров. Сцена с персонажем в полный кадр, модель 136 К, набор текстур 4 К весом 256 МБ - 34-35 кадров. Текстуры 2 К проверять не стал - не увидел смысла. Итог - лоу-поли перс с максимумом текстур фпс не просаживает, 100 К поликов съедают 1 кадр. Железо офисное, карта GTX 750 1 МБ.
Сравнивать изображения отличающиеся между собой разрешением в 4 раза по меньшей мере не правильно
Но суть не в этом. В предыдущем сообщении речь шла о фактуре кожи, так называемом "рельефном текстурировании", ведь именно оно должно оправдывать понятие HD Detail. Или, как сказано автором, "Информация с карт TS (Tangent Normal) перенесена на OS (Object Space). "
и где альтернатива?с наружной стороны кисть гладкая как попка у младенца З.Ы. HD запекалось с 4,5 млн. поликов.
Безусловно, полигональность модели влияет на качество запекаемых карт, но их детализации она не повышает, мышц не моделирует. Сглаживание модели дает более гладкие переходы при расчете карты освещенности, не более. В приведенном выше примере сухожилия на кисти не так ярко выражены не из-за низкой полигональности, а из-за исходников, геометрия модели другая, карты нормалей не от Вики 6. Если то же самое проделать с нормалями Вики, то и результат будет аналогичным.
Разница обусловлена только разной геометрией моделей, запеканка всё та же - лоуполи. Что касается наждачки - да, в текущей версии её не стало, но она была в первых версиях Евы, она была в попытках реализации TS в Дем, и чьё это было решение?
anton, есть вопросы по твоим файлам. В частности в файле Weights.txt указано, что в модели 35 объектов, а ниже перечислено 23 объекта, поскольку именно это количество заскинено. 12 объектов модификатора скин не имеют. И второе, количество вертексов, указанное в файле Weights.txt и их фактическое количество не совпадают для всех объектов. В чем причина?
Если встретятся вертексы с привязкой к нескольким косточкам и при этом имеющие общую сумму весов большу единицы - программа выдаст предупреждение, но сама нормализует их между четырмя наибольшими весами (если влияло больше 4-х косточек, то остальные будут убраны из скина)
В 3ds Max эти моменты легко пресечь. Во первых, модификатор skin не позволит общему весу перевалить за единицу, а во вторых установка параметра <<Bone Affect Limit>> в 4 ограничит скиннинг объекта четырьмя костьми на уровне редактора.
Добавлено (03 Января 2015, 23:01) --------------------------------------------- Aksyonov, с таким спонсорством горы свернём!
Что то мне подсказывает, что скрипту уже можно открывать ОБТ
Кое что уточню с экспортом скелета - и в ОБТ. Всё таки переброс сцены через FBX кое что нарушает, приходится отслеживать нарушения и корректировать их вручную. И здесь основная трудность - не знание блендера.
Добавлено (04 Января 2015, 12:01) --------------------------------------------- Open Beta Test
Aksyonov, плагин 2013 сырой, недоделанный. Автор уделил внимание экспорту коллизий, а остальное осталось недоработаным. Если тебе принципиальна работа в 2013 версии, то можно создать сцену со скелетом и анимацией в 2012 (её плагин импортирует всё без проблем), а потом открыть её в 2013. А вообще я пишу скрипт, который будет создавать скелет с анимацией для скининга. Игровых анимаций там не будет, будет просто набор экстремальных поз, по типу скелета от Майка.
Я про другой скрипт говорю. При запуске скрипта в сцене будет создаваться скелет с анимацией. Реализация процесса через скрипт позволяет отвязаться от версии редактора, скрипт будет одинаково работать в любом случае.
Lexo, блоки BSValueNode задействуют AddOnNode, которые в свою очередь являются различными эффектами, свойства которых можно посмотреть в конструкторе
Там же можно видеть, какие нифы используются. В атрибутах BSValueNode есть параметр Value, который определяет индекс AddOnNode (в твоем примере использованы 5 и 34).
Не могу точно сказать, что это за эффекты, однако ретекстур огня можно сделать заменой пары текстур в самом пламени, не затрагивая эффектов (в данном случае на зеленый цвет). Если всё же надо будет и эффекты перекрасить - то можно и в них прописать нужные текстуры или настройки шейдеров.
посмотри самый простой тутор в Ютубе , как моделить шлем и все вопросы отпадут
Я немного про другое. 100500 раз писалось, есть проблемные файлы, обращаетесь за помощью - приложите материал. Что можно понять из фразы <<загнал в Макс, туда же пихнул еще одну ванильную модель (из клютеров) все подогнал, экспортировал, исправил в нифскопе>>?
Загнал, пихнул, подогнал, исправил - вроде всё правильно, должно работать.
Ctp@HnuK, и блок NiAlphaProperty у тебя в модели болтается в пространстве. Или привяжи его к нужному NiTriShape или удали, если он не нужен. И ещё в NiTriShape краба дважды указан BSLightingShaderProperty в атрибутах BS Properties.
Было бы интересно попробовать сделать это в максе, заодно проверив мой скрипт, а то ни каких отчетов по нему пока нет. Myprism, если предоставишь свои модели для эксперимента - попробую.
Myprism, сразу могу дать совет - шлем с хвостом делай отдельной моделью, а забрало отдельной, с анимацией. Это необходимо потому, что шлем и хвост заскинены к двум костям - головы и спины. В случае цельной анимированной модели она должна иметь свой скин к своему скелету, который рутом будет привязан к кости головы, и вся модель будет крутиться с головой, скина к спине в этом случае не получишь.
Myprism, а текстурки не скинешь? А то уже в конструкторе подключаю, как то без текстур в игре не прикольно будет.
Добавлено (18 Января 2015, 07:48) --------------------------------------------- В общем, что сделал. У исходной модели удалил забрало и подключил её обычным шлемом. Забрало анимировал и сделал отдельной моделью. Анимации в нем сделел такие
Код
mBegin Начальная, ни чего не делает mLoop Закольцованная, тоже ни чего не делает mOpen Открывает забрало mClose Закрывает mEnd Финишная
и скомпилировал бихейвиор с таким содержимым
Код
[Begin] [===Animation===]mBegin end mLoop [===Animation===]mLoop JumpStandingStart mOpen JumpDirectionalStart mOpen JumpFastLeft mOpen JumpFastRight mOpen JumpForwardStart mOpen StopEffect mEnd [===Animation===]mOpen end mClose [===Animation===]mCloce end mLoop [===Animation===]mEnd RestartEffect mBegin EndAnim [***] [End]
То есть при прыжках должно хлопать забрало. Но не хлопает. Вопрос к Антону - что я упускаю, какие особенности работы анимаций через бихейвор?
PS Как пожелание к развитию инструмента BodyAnimator могу предложить реализовать ввод в модель сразу нескольких анимаций. Например, так: из редактора экспортируем поочередно все анимации в отдельные тхт с разными названиями, а в файле указанном при запуске BodyAnimator приводим перечень этих файлов, с указанием loop/clamp.