Вниз
Скачать: CL | DM;

Морфинг   Найти похожие ветки 

← →
Зм1й ©   (2005-06-29 11:39) [0]

Подскажите пожалуйста, есть ли в OpenGL средства для проведения над объектами такой операции, как морфинг? Если стандартных средств нет, у кого какие будут идеи по реализации сабжа?


← →
Dredd ©   (2005-06-29 15:34) [1]

нет, все вручную


← →
A22 ©   (2005-06-29 16:01) [2]

Вершинный шейдер, устанавливается 2 StreamSource"а (я говорю в терминах Direct3D и HSLS, sorry), + передается коэффициент морфинга. Далее обычная линейная интерполяция позиции, нормали и т.д. перед преобразованиями. В принципе, все

Если шейдеры не поддерживаются - просто создай два массива данных и перед вызовом glVertex(), glNormal() и других пересчитывай соотв. данные той же интерполяцией

P.S. на всякий случай: для морфинга в 2 моделях должно быть одинаковое кол-во вершин. это я так, мало ли :)


← →
Зм1й ©   (2005-06-29 18:54) [3]


> A22 ©   (29.06.05 16:01) [2]

Я конечно извиняюсь, но я начинающий, поэтому про шейдеры и интерполяцию ничего не понял. Пересчитывать координаты перед каждым выводом конечно просто, но ведь наверно тормознуто будет? :) Это ведь надо сначало каждую координату из одного масива сравнить с соответствующей из другого, потом её увеличить или уменьшить!.. Думаю игра после этого вообще не пойдёт :)

> для морфинга в 2 моделях должно быть одинаковое кол-во вершин

это то я знаю


← →
XProger ©   (2005-06-29 20:07) [4]

Имеешь две модели (Model1, Model2). Второй объект это тот же первый, вершины которых в другом положении.
Есть время Time за которое необходимо интерполировать вершины.
Для каждой вершины (i) нужно высчитать вектор
v = Model1.Vertex[i] - Model2.Vertex[i]

Затем создаём новую модель Model3 (текущую)
И для каждой вершины этой модели будет расчитывать её положение
Model3.Vertex[i] = v * CurTime/Time (скалярное произведение)
где CurTime - текущее время


← →
Зм1й ©   (2005-06-29 21:30) [5]


> XProger ©   (29.06.05 20:07) [4]

Два вопроса:
1) С нормалями поступать также, как с координатами положения?
2) А тормозить не будет, если вершин много?


← →
A22 ©   (2005-06-29 22:07) [6]

с нормалями поступать так же
тормозить вероятно будет, только неизветсно на каком количестве вершин начнет :)
а вообще. лучше все-таки шейдером, попробуй как-нибудь потом, как процессорный вариант сделаешь


← →
Зм1й ©   (2005-06-30 11:57) [7]

Всем спасибо за ответы!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
10-1107512444
sapsi
2005-02-04 13:20
2005.11.13
Поиск-замена в Word средствами делфи


2-1129816409
проходил_мимо_решил_зайти
2005-10-20 17:53
2005.11.13
Мемо и печать


2-1129793263
chili
2005-10-20 11:27
2005.11.13
Асоциативный масив с именами полей как сделать


14-1129931799
LordOfRock
2005-10-22 01:56
2005.11.13
FlashGet VS GeRet Deluxe


2-1130281304
bogdan
2005-10-26 03:01
2005.11.13
создания окон нестандартной формы, delphi




   Наверх