Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 02.12.2009, 22:52   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Вопрос Скелетная анимация

Есть задача: имеется скелет считанный в виде линейного массива с индексами парентов. Каждый Joint имеет свой offset что дает возможность складывая координаты построить каркасную модель начальной позиции скелета. Есть кадры анимации, записанные локальным вращением для каждого Joint'а. Необходимо для каждого кадра посчитать новую позицию всех Joint'ов.

Подскажите в каком порядке необходимо вести расчеты позиций Joint'ов
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 02.12.2009, 23:06   #2
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Скелетная анимация

Родитель->дети
(Offline)
 
Ответить с цитированием
Старый 03.12.2009, 08:35   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Скелетная анимация

Сообщение от Knightmare Посмотреть сообщение
Родитель->дети
Да я понимаю, что родитель->дети, но не получается. В каком порядке применять трансформации к детям и каким образом? Хотябы в двух словах, но не "Родитель->дети"
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 03.12.2009, 08:53   #4
jimon
 
Сообщений: n/a
Ответ: Скелетная анимация

PAX
у тебя есть локальная матрица трансформации кости, просто перемножаешь локальную матрицу на родительскую глобальную (или родительскую глобальную на локальную, в зависимости какую GAPI кушает матрицу) и получаешь глобальную матрицу кости, ну а дальше идешь по всем детям текущей кости

локальная матрица трансформации это матрица_размера * матрица_поворота * матрица_перемещения

собственно именно по-этому нужно чтобы костная иерархия была деревом, если у нас несколько деревьев то нужно представить "нулевого родителя" с единичной глобальной матрицей (в дереве для главного родителя глобальная матрица = локальная матрица)

ps. вот тут простой код анимации скелета который используется в enesea
http://code.google.com/p/enesea/sour...e/jeSkeleton.h
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (03.12.2009)
Старый 03.12.2009, 09:05   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Скелетная анимация

Спасибо.
Еще вопрос: чтобы расчитать положения костей, необходимо взять их translation компоненту? Мне необходимо нарисовать скелет с помощью точек и линий.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 03.12.2009, 09:16   #6
jimon
 
Сообщений: n/a
Ответ: Скелетная анимация

PAX
вроде как просто нужно домножить глобальную матрицу кости на вектор (0, 0, 0, 1) и получишь точку кости (хотя да, такая операция возвращает translation кости), соединяешь точки линиями исходя из иерархии и всё

всё самое интересное когда ты анимацию захочешь
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (03.12.2009)
Старый 03.12.2009, 11:05   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Скелетная анимация

Да кадры анимации у меня есть, и мне и надо только скелет

А матрица размера это translation или scale матрица?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 03.12.2009, 14:59   #8
jimon
 
Сообщений: n/a
Ответ: Скелетная анимация

PAX
scale
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (03.12.2009)
Старый 03.12.2009, 15:03   #9
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Скелетная анимация

Не забываем, что для корректного скиннинга нам еще необходимо множить вершины на обратную матрицу бинд-позы. А то далее пойдут вопросы типа:
OMG!!! WTF!!! Почему у моего перса голова взорвалась при анимации?!!11адинадин
(Offline)
 
Ответить с цитированием
Старый 03.12.2009, 20:47   #10
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Скелетная анимация

Спасибо всем, проблему решил, удачно построил каркас скелета, скининг меня пока не интересует
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация ArtemkA 3D-программирование 12 02.02.2009 23:31
Скелетная анимация из файла Stalnoy_Gvozd' 3D-программирование 3 11.11.2008 10:17
анимация Jenya 3D-программирование 2 22.06.2007 01:42
Скелетная анимация KRIK 3D-программирование 5 13.05.2007 09:32
Скелетная Анимация axel186 3D-программирование 3 15.01.2007 17:20


Часовой пояс GMT +4, время: 06:33.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com