Render.ru
Поддержать

Правильно сжать меш с боков к центру.

Anatol Faru (tonline_kms65)

Активный участник
Рейтинг
8
Изменено: 3 #1
Всем здравствуйте. У меня вопрос по анимации в 3ds max.
Костная анимация, состоящая из основной кости(bone) и 2 helper(Dummy).
К этой конструкции из костей заскинен меш, в виде монитора:
монитор.jpg
Центральная кость(bone)в анимации не учавствует(меш к этой кости не привязан никак), она нужна для движка игры, к ней прилинкованы хелперы, т.е. меш монитор привязан только к хелперам.
Мне нужно сложить этот меш (монитор), как бы, сжать его к центру с боков. Пример я показываю на гифке(вид сверху):
anim.gif
Ошибка в том, что при сжимании происходит "выпячивание" середины меша(зелёная линия) относительно нужной мне линии(красная).
Мне нужно что бы сжимание зелёной линии шло строго по красной линии.
Как можно это исправить?

ProcXel.A

Мастер
Рейтинг
186
Выпячивание происходит из-за того, что сетка привязана к хелперам, а хелперы в анимации двигаются по оси У. Либо сжимай хелперы по оси У до нуля в конце анимации. Либо добавь кость на каждое вертикальное ребро сетки этого экрана, и затем двигай все эти кости по красной линии.

Anatol Faru (tonline_kms65)

Активный участник
Рейтинг
8
Изменено: 1 #3
ProcXel.A Либо добавь кость на каждое вертикальное ребро сетки этого экрана, и затем двигай все эти кости по красной линии.
Я так и сделал - этот вариант, в самом конце, всё равно корежит меш, хоть и немного но в игре заметно.

ProcXel.AВыпячивание происходит из-за того, что сетка привязана к хелперам, а хелперы в анимации двигаются по оси У. Либо сжимай хелперы по оси У до нуля в конце анимации.
Не понял, как сжимать? Scale? Анимация костная - в максе будет изменять размер, а в игре навряд ли.

ProcXel.A

Мастер
Рейтинг
186
Изменено: 4 #4
Anatol Faru (tonline_kms65)Я так и сделал
Не, у тебя всего две кости по краям. Когда эти кости двигаются по кривой, то в глобальных координатах смещаются по оси У. Так как сетка привязана к этим костям, то и она смещается по оси У вслед за костями. Из-за этого и получается эта самая выпуклость.

Можно каждое вертикальное ребро мэша привязать к отдельной кости и двигать эти кости по кривой.

sdsdsd.gif

А можно эти твоим двум костям задать в начале анимаци scaleY = 1, а в конце анимации scaleY = 0. И тогда эта выпуклость будет сжиматься во время анимации. Все нормальные игровые движки должны поддерживать scale костей без проблем.

Anatol Faru (tonline_kms65)

Активный участник
Рейтинг
8
Scale точно не поддерживает, приходится на каждый вертекс привязывать кость.
Я вот так же и делаю, у меня вертикальных ребер с каждой стороны по 5(итого ребер 10), соответственно 10 костей. Каждое вертикальное ребро(у меня в ребре 6 вертексов) привязанно к своей кости, веса вроде правильно, может быть что то не то с весами, по таблице смотрю - всё отлично, но по факту что то не то.
При полном складывании, некоторые вертексы, пусть и чуть-чуть, но вылезают и тянут за собой треугольники. В игре это заметно. Если смотреть прямо - всё хорошо, но если сбоку - эти обломки заметно, короче не складывается в линию.
Вот в чём проблема.

ProcXel.A

Мастер
Рейтинг
186
Изменено: 2 #6
Что за движок такой, что скейл костей не поддерживает? 🙂

Если все веса точно настроены и все кости точно заанимированы, то ничего не должно вылезать. (При условии, что запечённая анимация не прошла через какие-нибудь алгоритмы очистки от "лишних" ключей, из-за чего позиции костей могут посъехать.) В 3ДМаксе вертексы вылезают? Или только в игре?

Anatol Faru (tonline_kms65)

Активный участник
Рейтинг
8
В максе конечно вылезают, но не так заметно как в игре.
Движек Source Engin.
Если менять размер кости(bone), то в игре модель не меняется, это точно.
А вот насчет dummy - я как то делал тестовую модельку, простой шар и эта модель увеличивалась, но это было давно, модель давно потеряна, так бы её декомпилить и можно было бы посмотреть. Но я думаю делал так же, к каждому вертексу по dummy, увеличивал за счёт разлета костей.

ProcXel.A

Мастер
Рейтинг
186
Изменено: 1 #8
Если и в 3ДМаксе вылезают, значит с привязкой какой-то косяк. Надо просто с нуля переделать, чтобы не вылезало. 🙂
Anatol Faru (tonline_kms65)Движек Source
Да, в нем скейла, действительно, нет.