3d форум по Blender

Blender => Риггинг, скиннинг и анимация => Тема начата: Simon-Phoenix от 10 Май 2020, 20:39:51

Название: Ограничение движения шарнира в одной плоскости
Отправлено: Simon-Phoenix от 10 Май 2020, 20:39:51
Доброго дня.
Есть некий футуристический доспех, есть сочленение брони голени и брони ступни. Нужно, чтобы кольцо, которое свободно крепится некой спицей к голени жестко сидело на втулке, закрепленной на ступне, т.е. конструкция кольцо-спица могло вращаться только по оси втулки.
Есть ли возможность граничить вращение только локальной плоскостью, либо как-то в свойствах объекта указать запрет на пересечение с другим объектом?
Пробовал через limit rotation, но там ограничения по осям, а не плоскостям. Т.к. объект не выровнен строго по осям (ступни же не смотрят строго вперед), то при ограничениях по локальной оси нужно задавать диапазон углов от и до, поскольку поворот по любой из осей автоматически изменяет углы и по другим. Но в таком случае получаем люфт и пересечение объектов. Если сбросить локальные координаты к мировым, то, опять же ввиду отсутствия выравнивания объекта по сетке, поворот будет не в плоскости объекта.
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Николай Николаев от 10 Май 2020, 21:16:49
это без арматуры и rigid body?
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Simon-Phoenix от 10 Май 2020, 21:29:48
это без арматуры и rigid body?
Да мне хоть как-нибудь. Первый раз такое делаю, а какие-либо материалы под такую задачу найти не могу. Вот и интересуюсь как такое реализовать вообще.
Арматура есть, голень к ней привязана. Кольцо является потомком голени, т.е. будет поворачивать за ней. Нужно лишь ограничить свободу поворота одной локальной плоскостью. Т.е. либо как-то жестко задать свободу поворота в одной локальной плоскости, либо как-то запретить объекту кольца пересекаться с объектом втулки. Ни то, ни другое не знаю как сделать.
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Николай Николаев от 11 Май 2020, 07:40:29
... так еще одну кость добавь для кольца и установи ограничитель ...
... и если есть желание - выложи модель и попробуем прямо по модели внести изменения ...
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Simon-Phoenix от 11 Май 2020, 14:04:50
... так еще одну кость добавь для кольца и установи ограничитель ...
... и если есть желание - выложи модель и попробуем прямо по модели внести изменения ...
А в чем будет принципиальная разница ограничителя на кости от ограничителя на объекте? Или у кости есть возможность ограничения не осью, а плоскостью?
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Simon-Phoenix от 09 Июнь 2020, 20:11:39
... так еще одну кость добавь для кольца и установи ограничитель ...
... и если есть желание - выложи модель и попробуем прямо по модели внести изменения ...
Вернулся к этому делу :)
Да, выложить файл будет проще всего для предметного рассмотрения, но в процессе подготовки, чтобы более-менее понятны привязки были, возникли проблемы.
Есть, например, ступня, она состоит из нескольких деталей. Есть голень тоже из нескольких деталей. Если я через ctrl+P делаю привязку деталей ступни, допустим, к кости непосредственно ступни, то при движении они движутся за соответствующей костью, но в разнобой, как разные части. Если привязывать только одну деталь к кости, а остальные как потомков к ней, то фокус не работает - двигается только непосредственно привязанная к кости деталь и все.
Если же я через ctrl+P привязываю деталь к Armature Deform With Empty Groups, а потом через раскраску весов делаю привязку конкретной детали к конкретной кости (в виде группы вершин), то движутся группы привязанные к одной кости монолитно, как и нужно, но в процессе раскраски весов позиционирование деталей изменяется (поворачиваются немного или ужимаются).
Как этого избежать?
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Николай Николаев от 09 Июнь 2020, 20:25:40
>> ни движутся за соответствующей костью, но в разнобой, как разные части
... покажи видео на котором бы была очевидна проблема  ...
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Simon-Phoenix от 09 Июнь 2020, 20:53:12
>> ни движутся за соответствующей костью, но в разнобой, как разные части
... покажи видео на котором бы была очевидна проблема  ...
Разобрался с проблемой. У части деталей была привязка по пустым группам, у части нет. Видимо из-за этого. С деформацией при раскрасе весов немного позже разберемся :)
Файл в приложении.
Собственно возвращаемся к изначальной задаче.
Есть втулка Boot_left_hinge, есть две спицы с кольцами Leg_lower_left_hinge1 и Leg_lower_left_hinge2, которые на втулке должны крутиться. Втулка привязана к ступне (кость foot.L), а спицы привязаны к голени (кость shin.L). Соответственно спицы должны поворачиваться вместе с голенью (прокручиваться на втулке вперед и назад), но при этом оставаться на оси втулки и не пересекать ее границы (влево, вправо).
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Николай Николаев от 10 Июнь 2020, 04:10:39
сразу не удалось полностью посмотреть модель, но мне думается что всё можно реализовать через кости (существующие или дополнительные, только нужно всю схему прорисовать)
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Николай Николаев от 14 Июнь 2020, 06:15:03
>> Есть втулка Boot_left_hinge, есть две спицы с кольцами Leg_lower_left_hinge1 и Leg_lower_left_hinge2, которые на втулке должны крутиться. Втулка привязана к ступне (кость foot.L), а спицы привязаны к голени (кость shin.L).

... у костей foot.L и shin.L есть мнимый шарнир ...
... если кости будут находиться в соприкосновении в этом мнимом шарнире, то нужно чтобы центры вращения втулки и спиц тоже находились в этом мнимом шарнире ...
Название: Re: Ограничение движения шарнира в одной плоскости
Отправлено: Simon-Phoenix от 14 Июнь 2020, 20:09:01
Убрал метариг, воткнул кости руками. Движения стали поадекватней. Через вкладку Инверсной кинематики достаточно удобно управлять ограничениями поворота костей, но есть существенное НО - оно в глобальных координатах. Есть возможность делать эти ограничения в локальных? :)