Главная страница
    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.034 c
14-1130162100
Zacho
2005-10-24 17:55
2005.11.13
Дата-кабель для Сименс


14-1129875825
MBo
2005-10-21 10:23
2005.11.13
Пятничные задачки. Покумекаем? ;)


14-1129712837
Andy BitOff
2005-10-19 13:07
2005.11.13
Для уставших от программирования =)


9-1120030753
Зм1й
2005-06-29 11:39
2005.11.13
Морфинг


4-1126100827
Unit1
2005-09-07 17:47
2005.11.13
WM_MOUSEMOVE





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский