netlib.narod.ru< Назад | Оглавление | Далее >

Представление скелета и костей

Прежде чем рассматривать, как работать со скелетной анимацией в XNA, важно, чтобы вы понимали как конструируется скелет модели и как представляются и хранятся кости.

Есть два различных способа хранения скелета модели. Первый из них использует кости, а второй использует суставы. Например, 3ds Max представляет скелет, используя его кости, а Maya представляет скелет, используя его суставы. Однако, когда модель экспортируется в совместимый с XNA формат (формат X или FBX), различий между ними нет и скелет представляется его костями. В этой главе для представления и хранения скелета вы используете кости, где у каждой кости есть позиция начала и ориентация, а размер каждой кости определяется как расстояние между ее позицией начала и позицией начала дочерней кости. Такое представление костей вызывает необходимость наличия конечной кости (нулевого размера) для определения конца скелета.

Ориентация и позиция начала кости определяют ее конфигурацию. На рис. 11.3 показано представление скелета руки с использованием костей. Обратите внимание на необходимость наличия конечной кости после кости ладони для определения размера кости ладони и конца скелета руки.


Рис. 11.3. Кости скелета руки

Рис. 11.3. Кости скелета руки. Иерархия начинается с корневой кости и заканчивается определением конечной кости, где каждая кость является потомком предыдущей кости. Все кости начинаются с позиции отмеченной квадратом, и заканчиваются в начальной точке следующей кости (следующий квадрат)


Местоположение и ориентация каждой кости задаются относительно ее предка. Например, ориентация и местоположение ладони определяются в соответствии с ориентацией и местоположением запястья, которое, в свою очередь, определяет свое местоположение и ориентацию относительно предплечья, и это процесс повторяется до тех пор, пока не будет достигнута корневая кость. Взяв на вооружение эту концепцию вы увидите, что модификация любой кости оказывает влияние на всех потомков этой кости. Если перемещается кость левого плеча, все ее потомки перемещаются тоже.

Чтобы хранить скелет вам необходимо хранить конфигурацию (ориентацию и местоположение) каждой кости и иерархию этих костей в скелете. Иерархия необходима для вычисления абсолютной конфигурации костей в любое заданное время. Вы можете хранить конфигурацию кости как матрицу, а иерархию скелета в виде списка со ссылками на предка каждой кости.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz