Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > OpenGL, разрыв на сгибе


Автор: Moid 13.2.2007, 12:47
Я нарисовал в 3dsMax руку... Потом 3D конвертором перевел ее в координаты OpenGL...
Переводил каждый сустав отдельно...(т.е. палец разбил на з части по сгибам и каждую часть перевел в коорлинаты и записав в отдельную процедуру для этой чсти руки координаты).
Все это делалось для того, что бы можно было шевелить пальцами руки и сгибать-разгибать кисть.... 
В итоге все работает почти как надо... только вот на месте изгиба получается не плавный изгиб, а резкий(как будто отламываем и сгибаем)... В принципе оно так и должно получиться т.к. координаты у меня фиксированы КОНСТАНТНЫМИ значениями... 

Как мне сделать, чтобы на месте сгиба был плавный переход на фалангах пальцев и в исгибе кисти?
Это можно как-то сделать, но вот как?

P/S
Если кто хочет предложить каждую координату передвигать, то это глупо... т.к. их там 54000 точек.

Автор: Snowy 13.2.2007, 12:58
Сделать дополнительно фалангу и запястье.
Эмитация не такое простое действие.
Здесь действует не один объект, а система.
Сгибаем запястье, сгибается кисть, фалагни и суставы.
Просто соединительные объекты нужно сделать отдельно.
И чем их больше, тем плавнее будет выглядеть.

Автор: Moid 13.2.2007, 13:38
А как же в играх делают плавные сгибы руки... Думаешь там тоже рисуют дополнительные части....
Может есть еще какой способ...?

Автор: Coriolis 13.2.2007, 14:05
Конечно, есть способ. Имя ему - скелетная анимация.
Цитата

Если кто хочет предложить каждую координату передвигать, то это глупо... т.к. их там 54000 точек.

Нет, это не глупо, т.к. это и есть суть скелетной анимации.
Итак: у тебя есть сетка твоей руки, и есть кости. На каждую вершину могут влиять несколько костей - есть такое понятие в скелетке - коэффициент воздействия - это величина от 0 до 1 которая отображает на сколько трансформация данной конкретной кости влияет на данную конкретную вершину. Сумма коэффициентов влияния всех костей на данную вершину всегда = 1.
Обычно на вершину действует одна кость, тогда для этой кости у вершины коэффициент будет равен одному. Но на изгибах (на суставах в твоём случае) у вершин будет по две влияющие на них кости. И коэффициенты будут соответственно распределены между этими костями (не поровну естественно, а плавно).
Кость - это на самом деле матрица трансформации. Т.е. в редакторах она отображается как призма, или цилиндр, но значимая информация - это иерархия костей и матрица трансформации каждой кости.
Т.е. для вершины хранятся индексы костей, которые на неё влияют и коэффициенты влияния для каждой из этих костей.
54k вершин - это конечно много. Но если у тебя на экране только это и без просчета физики - вполне можно замутить. Раньше модели со скелетной анимацией именно просчитывали на CPU (с учетом текущего положения скелета и коэффициентов влияния костей трансформировали сетку объекта), теперь это делают на GPU с помощью шейдеров. Поэтому ты имеешь все шансы на вполне сносную скорость.
Вот неплохая статья с GameDev.ru
http://www.gamedev.ru/users/wat/articles/SkelAnim1

Автор: Moid 13.2.2007, 14:19
Но чёта я не пойму как в OpenGL реализовать механизм костей...
Может в нем есть процедуры, функции или методы какие-нибудь для работы с костями...

Или нужно для начала прочитать эту статью прежде чем задавать глупые вопросы? smile

Автор: Qu1nt 13.2.2007, 15:17
Вот тебе решение ;)
http://xproger.mirgames.ru/?id=1&page=2&doc=anim3d

Автор: Moid 13.2.2007, 16:36
О... кажется то что надо... 

Спасиба!!!

Автор: Moid 2.3.2007, 14:59
Цитата

Вот тебе решение ;)
http://xproger.mirgames.ru/?id=1&page=2&doc=anim3d

Ссыка интересная, но сдесь только теория. 

экспортировать анимированные движения кисти из макса мне не нужно. Всю анимацию я делаю
в делфе.

Задача так и не решилась. 

Может кто-нибудь скинет пример. Подобной анимации...

Автор: Sovereign 3.3.2007, 11:47
По поводу сгиба приеры есть в GLSCENE, в Demos\extrusion\bendingcyl, посмотри как там сделано

Автор: Moid 5.3.2007, 12:12
Посмотрим ...

Автор: Moid 6.3.2007, 09:40
Не могу откомпилить этот пример. Поставил я все наборы компонентов GLSCENE кроме 2-х:
1)GLS_Python.dpk требует Python
2)GLS_DWS7.dpk требует dws2Runtime

Я так и не смог прописать нужные пути в патче, чё туда надо писать для этих наборов пакетов?

Автор: Sovereign 6.3.2007, 13:26
там в папке help есть GLSceneTraining.chm, в нем посмотри Library installation, там установка расписана, ты по ней делал?

Автор: Moid 6.3.2007, 14:05
Нет... Я сам дирректории указывал на которые файлы ссылались при ошибки компиляции и прописывал те пути. А у этих вот не показывает ни каких файлов...
За хелп спасибо

Автор: Moid 9.3.2007, 11:06
Цитата

там в папке help есть GLSceneTraining.chm, в нем посмотри Library installation ...

У меня нет такого файла. В этой папке лежит только GLScene.chm (хелп по компонентам).
А у тебя какая версия GLScene?

Автор: Moid 9.3.2007, 11:30
Если у кого такие же проблемы, то тут нашел описание инсталяции и пути для патча. Сам еще не пробовал...
http://caperaven.co.za/gls/onlinedocs/documents/installation.htm

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)