|
С# Средство разработки на платформе .Net |
02.12.2009, 22:52
|
#1
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Скелетная анимация
Есть задача: имеется скелет считанный в виде линейного массива с индексами парентов. Каждый Joint имеет свой offset что дает возможность складывая координаты построить каркасную модель начальной позиции скелета. Есть кадры анимации, записанные локальным вращением для каждого Joint'а. Необходимо для каждого кадра посчитать новую позицию всех Joint'ов.
Подскажите в каком порядке необходимо вести расчеты позиций Joint'ов
|
(Offline)
|
|
02.12.2009, 23:06
|
#2
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Скелетная анимация
Родитель->дети
|
(Offline)
|
|
03.12.2009, 08:35
|
#3
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Скелетная анимация
Сообщение от Knightmare
Родитель->дети
|
Да я понимаю, что родитель->дети, но не получается. В каком порядке применять трансформации к детям и каким образом? Хотябы в двух словах, но не "Родитель->дети"
|
(Offline)
|
|
03.12.2009, 08:53
|
#4
|
|
Ответ: Скелетная анимация
PAX
у тебя есть локальная матрица трансформации кости, просто перемножаешь локальную матрицу на родительскую глобальную (или родительскую глобальную на локальную, в зависимости какую GAPI кушает матрицу) и получаешь глобальную матрицу кости, ну а дальше идешь по всем детям текущей кости
локальная матрица трансформации это матрица_размера * матрица_поворота * матрица_перемещения
собственно именно по-этому нужно чтобы костная иерархия была деревом, если у нас несколько деревьев то нужно представить "нулевого родителя" с единичной глобальной матрицей (в дереве для главного родителя глобальная матрица = локальная матрица)
ps. вот тут простой код анимации скелета который используется в enesea
http://code.google.com/p/enesea/sour...e/jeSkeleton.h
|
|
|
Сообщение было полезно следующим пользователям:
|
|
03.12.2009, 09:05
|
#5
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Скелетная анимация
Спасибо.
Еще вопрос: чтобы расчитать положения костей, необходимо взять их translation компоненту? Мне необходимо нарисовать скелет с помощью точек и линий.
|
(Offline)
|
|
03.12.2009, 09:16
|
#6
|
|
Ответ: Скелетная анимация
PAX
вроде как просто нужно домножить глобальную матрицу кости на вектор (0, 0, 0, 1) и получишь точку кости (хотя да, такая операция возвращает translation кости), соединяешь точки линиями исходя из иерархии и всё
всё самое интересное когда ты анимацию захочешь
|
|
|
Сообщение было полезно следующим пользователям:
|
|
03.12.2009, 11:05
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Скелетная анимация
Да кадры анимации у меня есть, и мне и надо только скелет
А матрица размера это translation или scale матрица?
|
(Offline)
|
|
03.12.2009, 14:59
|
#8
|
|
Ответ: Скелетная анимация
PAX
scale
|
|
|
Сообщение было полезно следующим пользователям:
|
|
03.12.2009, 15:03
|
#9
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Скелетная анимация
Не забываем, что для корректного скиннинга нам еще необходимо множить вершины на обратную матрицу бинд-позы. А то далее пойдут вопросы типа:
OMG!!! WTF!!! Почему у моего перса голова взорвалась при анимации?!!11адинадин
|
(Offline)
|
|
03.12.2009, 20:47
|
#10
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Скелетная анимация
Спасибо всем, проблему решил, удачно построил каркас скелета, скининг меня пока не интересует
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:33.
|