Как использовать VBO для морфинга?

Я хочу иметь сетку, которую можно анимировать. Я загружаю сетку из файла, включая ключевые кадры. Я хочу поместить все кадры в VBO и скомпоновать два из них на GPU в вершинном шейдере. Поэтому я хочу перейти к кадрам на GPU и некоторой униформе, которая позволит создать один результирующий кадр из этих двух

Является ли это возможным? Если так, как я могу это сделать?

1 ответ

Решение

У вас просто будет больше атрибутов вершин. Обычно вы можете иметь:

in vec3 position;
in vec3 normal;
in vec4 color;
in vec2 texCoord;

Для целей морфинга вам понадобится:

in vec3 position0;
in vec3 position1;
in vec3 normal0;
in vec3 normal1;
in vec4 color;
in vec2 texCoord;

Фактическая позиция в пространстве модели будет линейной интерполяцией между position0 а также position1, То же самое относится и к нормальному (я думаю). Получив их, вы проходите через обычные преобразования. Координаты цвета и текстуры, по-видимому, не меняются, но если они меняются, то они тоже должны иметь 0 а также 1 версии.

Фактический рендеринг довольно прост. Предположительно, у вас будут все позиции для целей морфинга в одном буфере. Так что это вопрос обязательности position0атрибут первой цели морфа, и position1атрибут второй цели морфа. То же самое касается нормалей. Тогда вы делаете как обычно.

Другие вопросы по тегам