Форум: "Игры";
Текущий архив: 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