| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
Конечно, есть способ. Имя ему - скелетная анимация.
Нет, это не глупо, т.к. это и есть суть скелетной анимации. Итак: у тебя есть сетка твоей руки, и есть кости. На каждую вершину могут влиять несколько костей - есть такое понятие в скелетке - коэффициент воздействия - это величина от 0 до 1 которая отображает на сколько трансформация данной конкретной кости влияет на данную конкретную вершину. Сумма коэффициентов влияния всех костей на данную вершину всегда = 1. Обычно на вершину действует одна кость, тогда для этой кости у вершины коэффициент будет равен одному. Но на изгибах (на суставах в твоём случае) у вершин будет по две влияющие на них кости. И коэффициенты будут соответственно распределены между этими костями (не поровну естественно, а плавно). Кость - это на самом деле матрица трансформации. Т.е. в редакторах она отображается как призма, или цилиндр, но значимая информация - это иерархия костей и матрица трансформации каждой кости. Т.е. для вершины хранятся индексы костей, которые на неё влияют и коэффициенты влияния для каждой из этих костей. 54k вершин - это конечно много. Но если у тебя на экране только это и без просчета физики - вполне можно замутить. Раньше модели со скелетной анимацией именно просчитывали на CPU (с учетом текущего положения скелета и коэффициентов влияния костей трансформировали сетку объекта), теперь это делают на GPU с помощью шейдеров. Поэтому ты имеешь все шансы на вполне сносную скорость. Вот неплохая статья с GameDev.ru http://www.gamedev.ru/users/wat/articles/SkelAnim1 |
| Автор: Moid 13.2.2007, 14:19 |
| Но чёта я не пойму как в OpenGL реализовать механизм костей... Может в нем есть процедуры, функции или методы какие-нибудь для работы с костями... Или нужно для начала прочитать эту статью прежде чем задавать глупые вопросы? |
| Автор: 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 | ||
Ссыка интересная, но сдесь только теория. экспортировать анимированные движения кисти из макса мне не нужно. Всю анимацию я делаю в делфе. Задача так и не решилась. Может кто-нибудь скинет пример. Подобной анимации... |
| Автор: 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 | ||
У меня нет такого файла. В этой папке лежит только GLScene.chm (хелп по компонентам). А у тебя какая версия GLScene? |
| Автор: Moid 9.3.2007, 11:30 |
| Если у кого такие же проблемы, то тут нашел описание инсталяции и пути для патча. Сам еще не пробовал... http://caperaven.co.za/gls/onlinedocs/documents/installation.htm |