Ищем самую верхнюю кость в риге при помощи Blender Python API

При работе со сложным ригом, бывает необходимо быстро найти самую верхнюю кость. Так как все кости в риге связаны между собой через систему родитель-ребенок, можно написать простой скрипт, который пройдет по всей иерархии, начиная от текущей активной кости, и найдет самую верхнюю кость.

Пусть у нас имеется сложный риг и на нем активна одна из дочерних костей.

Для наглядности переключимся в режим редактирования. Так мы сможем сразу видеть все выделения в иерархии рига, и плюс, не нужно будет обновлять состояние для выделенных костей.

Текущая активная арматура.

И текущая активная кость на ней.

Все кости в риге соединены по принципу родитель-ребенок. В каждой кости есть список указателей на дочерние кости, а также указатель на ее родительскую кость. Он нам и нужен.

Организовав цикл While по этому указателю от текущей кости на родительскую для нее, мы можем пройти вверх по ригу до самой верхней кости.

Для наглядности мы выделяем каждую последующую родительскую кость по пути следования.

После того как цикл завершится, в переменной active_bone останется указатель на самую верхнюю кость рига, ту, у которой отсутствует родительская кость.

Самая верхняя кость так же будет выделена.

Если нужно просто найти самую верхнюю кость в риге, не выделяя весь путь, операции выделения внутри цикла While можно опустить.

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные