Главная страница
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.037 c
9-1119604921
Dennis
2005-06-24 13:22
2005.11.13
Синтез трехмерных моделей по фотографиям


2-1129886781
syte_ser78
2005-10-21 13:26
2005.11.13
в чем разница?


1-1130091452
Motorin
2005-10-23 22:17
2005.11.13
Что то типа карты москвы...


3-1128496966
dreamse
2005-10-05 11:22
2005.11.13
Как получить результат запроса ADOQuery ?


2-1130172359
Dudee
2005-10-24 20:45
2005.11.13
TString