Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: 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 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.062 c
4-1126174606
jeka_t
2005-09-08 14:16
2005.11.13
Есть ли функция, которая возвращает "Описание" в "Имени компьютер


1-1129813791
markers
2005-10-20 17:09
2005.11.13
Высота и ширина PopUp`a


2-1129644091
Progamer
2005-10-18 18:01
2005.11.13
Добавление значения в комбобокс


3-1128364558
Darkwing
2005-10-03 22:35
2005.11.13
Существует ли исходник BDE, независимый от Delphi и где взять?


4-1126192740
incm
2005-09-08 19:19
2005.11.13
Проблема с таймером