При попытке конвертировать модель из другой игры в mdx с помощью 3DsMAX+NeoDex, анимации корёжит. Они всё ещё узнаваемы, но уже не те. В максе всё отображается корректно, видимо деформация происходит именно при конверте в mdx.
пример
Это исправимо? Сам неодекс при конверте кое на что ругается:
// The next objects have unbalanced weights,
// they may be wrongly animated.
///////////////////////////////////////////////////////////////////////////////////
// Bandit_Mat
///////////////////////////////////////////////////////////////////////////////////
Я немного почитал о weight table, но не до конца понимаю какое это оказывает влияние в рамках варкрафта. Разные значения веса в таблице уже расставлены. Не совсем понимаю, что именно я туда нового могу вписать. Это вообще может быть источником моих проблем?
*Bandit_Mat это название всей модели внутри максовской сцены.
// StartEndKeys
///////////////////////////////////////////////////////////////////////////////////
// The next objects don't have start and end keys on the mentioned animations.
///////////////////////////////////////////////////////////////////////////////////
// Bip01 Pelvis->Controller:TCB_Position: (Death)
// Bip01 Pelvis->Controller:TCB_Rotation: (Death)
// Bip01 Pelvis->Controller:Bezier_Scale: (Death)
// Bip01 L Toe0->Controller:TCB_Position: (Death)
// Bip01 L Toe0->Controller:TCB_Rotation: (Death)
// Bip01 L Toe0->Controller:Bezier_Scale: (Death)
// Bip01 L Finger3->Controller:TCB_Position: (Death)
// Bip01 L Finger3->Controller:TCB_Rotation: (Death)
// Bip01 L Finger3->Controller:Bezier_Scale: (Death)
// Bip01 L Finger2->Controller:TCB_Position: (Death)
// Bip01 L Finger2->Controller:TCB_Rotation: (Death)
// Bip01 L Finger2->Controller:Bezier_Scale: (Death)
// Bip01 L Finger1->Controller:TCB_Position: (Death)
// Bip01 L Finger1->Controller:TCB_Rotation: (Death)
// Bip01 L Finger1->Controller:Bezier_Scale: (Death)
// Bip01 L Finger11->Controller:TCB_Position: (Death)
// Bip01 L Finger11->Controller:TCB_Rotation: (Death)
// Bip01 L Finger11->Controller:Bezier_Scale: (Death)
// Bip01 L Finger21->Controller:TCB_Position: (Death)
// Bip01 L Finger21->Controller:TCB_Rotation: (Death)
// Bip01 L Finger21->Controller:Bezier_Scale: (Death)
// Bip01 L Finger31->Controller:TCB_Position: (Death)
// Bip01 L Finger31->Controller:TCB_Rotation: (Death)
// Bip01 L Finger31->Controller:Bezier_Scale: (Death)
// Bip01 R Toe0->Controller:TCB_Position: (Death)
// Bip01 R Toe0->Controller:TCB_Rotation: (Death)
// Bip01 R Toe0->Controller:Bezier_Scale: (Death)
// Bip01 R Finger3->Controller:TCB_Position: (Death)
// Bip01 R Finger3->Controller:TCB_Rotation: (Death)
// Bip01 R Finger3->Controller:Bezier_Scale: (Death)
// Bip01 R Finger2->Controller:TCB_Position: (Death)
// Bip01 R Finger2->Controller:TCB_Rotation: (Death)
// Bip01 R Finger2->Controller:Bezier_Scale: (Death)
// Bip01 R Finger1->Controller:TCB_Position: (Death)
// Bip01 R Finger1->Controller:TCB_Rotation: (Death)
// Bip01 R Finger1->Controller:Bezier_Scale: (Death)
// Bip01 R Finger11->Controller:TCB_Position: (Death)
// Bip01 R Finger11->Controller:TCB_Rotation: (Death)
// Bip01 R Finger11->Controller:Bezier_Scale: (Death)
// Bip01 R Finger21->Controller:TCB_Position: (Death)
// Bip01 R Finger21->Controller:TCB_Rotation: (Death)
// Bip01 R Finger21->Controller:Bezier_Scale: (Death)
// Bip01 R Finger31->Controller:TCB_Position: (Death)
// Bip01 R Finger31->Controller:TCB_Rotation: (Death)
// Bip01 R Finger31->Controller:Bezier_Scale: (Death)
Что за старт и энд кейс? Это значит, что прям каждая кость должна отметиться положением, масштабом и поворотом в первом и последнем кадре анимации? Так или иначе, этот пункт ругается только на анимацию Death, а ломаются все.
// TCB
///////////////////////////////////////////////////////////////////////////////////
// The next objects have conflicting rotation keys at the showed time
// To fix it add a key between the mentioned key and the key before, or use the NeoDex Animation Tools
///////////////////////////////////////////////////////////////////////////////////
// Bip01 L Forearm: (1f)
Здесь вообще не понял. Но опять же, это 1 кадр одной анимации.
Алсо, я попробовал потыкать разные галочки, кнопочки и окошки, предположительно связанные с анимациями, в неодексе, но эксперименты ни к чему не привели. Либо ничего не менялось, либо становилось хуже. Может есть какие-то тонкие настройки, всякие там интерполяции, я хз? Или это старый добрый mdx, и ничего с этим не поделать?

Принятый ответ

у меня была похожая проблема с плагином для blender'a проблема была в том, что я делал скининг в полуавтоматическом режиме, из-за чего у вершин была разная сила привязки к костям, а насколько помню, формат варика понимает только значения в 100%, 50% (и еще какое-то), а все прочие значения при конвертации вызывают графические баги анимации.
А вот когда я начал мясо к костям ручками привязывать, анимации стали экспортироваться правильно...
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
31
2 года назад
Отредактирован Алексей Андреич
1
The next objects don't have start and end keys on the mentioned animations.
"У следующих объектов не заданы начальные и конечные кадры в указанных анимациях"
В моделей варика все анимации по сути находяться на одной временной линии и разделяются только указателями (т.е. например анимация stand это кадры с 10 по 30, walk это кадры с 100 по 200 и т.д.)
Из-за чего, если у кости на начало анимации не задан кадр, она будет использовать последний доступный для нее кадр, возможно даже из предыдущей анимации или из нулевого кадра.
The next objects have conflicting rotation keys at the showed time
To fix it add a key between the mentioned key and the key before, or use the NeoDex Animation Tools
Тут я так понимаю просто конфликт с вращением левого локтя в каком-то кадре.

Вообще могу только предположить, что такие глюки вызваны неправильной привязкой меша к костям. В моделях варика на вершины меша может вроде как влиять только 2-3 кости.
Как вариант для проверки могу предложить вручную привязать меш к костям, но так, чтобы вершины меша были привязана только к одной кости.
0
23
2 года назад
Отредактирован Makeba
0
Андреич, хм, ну вообще да, действительно по несколько костей привязано. Попробую отвязать лишнее
Загруженные файлы
0
23
2 года назад
0
Блин, когда правишь связь скелета с мешем, становится действительно лучше. Но я тут ради эксперимента попробовал конвертнуть через Max 2009 вместо 2020-го, и в результате анимации получились намного лучше (но не идеальными, некоторые мелкие баги всё равно присутствуют), даже несмотря на тот же самый недостаток с костями. Не знаю в чём причина, но всё ещё надеюсь, что это необязательно чинить ручками
0
31
2 года назад
0
у меня была похожая проблема с плагином для blender'a проблема была в том, что я делал скининг в полуавтоматическом режиме, из-за чего у вершин была разная сила привязки к костям, а насколько помню, формат варика понимает только значения в 100%, 50% (и еще какое-то), а все прочие значения при конвертации вызывают графические баги анимации.
А вот когда я начал мясо к костям ручками привязывать, анимации стали экспортироваться правильно...
Принятый ответ
0
23
2 года назад
0
Андреич, ну да, сейчас в этой модели используется модификатор Skin, то есть привязка происходит автоматически. И варкрафту это не нравится(
0
23
2 года назад
Отредактирован Makeba
0
Немного подниму эту тему, так как для меня всё ещё актуальна. Слева пример конверта модели в mdx1000, справа — mdx800.
Меш идентичный, анимации тоже. А хвост у второй модели почему-то ломается. Как и говорилось в комментах выше, во всём виноват именно неправильный скиннинг. Рефовский формат моделей при конвертации из 3дсмакс без проблем сохраняет информацию о весе костей, в отличии от классического. Короче, всем марш на hd графику. Mdx экспортёр под реф для 3дмакс здесь
Загруженные файлы
0
31
2 года назад
0
poisoNDealer, оно и правильно. Старый формат имел довольно сильные ограничения. А новый соответствует текущим стандартам.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.