Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
Зм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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.053 c
2-1129617492
TruthMan
2005-10-18 10:38
2005.11.13
Запись в таблицу через сервер Word


1-1129714837
Mamed
2005-10-19 13:40
2005.11.13
Perevod so Ci na paskal


6-1122488131
nippo
2005-07-27 22:15
2005.11.13
IMarkupServices::ParseString Method


4-1126694897
Донской
2005-09-14 14:48
2005.11.13
ЗАпуск приложения от имени...


8-1118224081
Gydvin
2005-06-08 13:48
2005.11.13
изменить wmf в делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский