Как использовать 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
атрибут второй цели морфа. То же самое касается нормалей. Тогда вы делаете как обычно.