我想要一个可以动画的网格物体。我正在从一个文件加载网格,包括关键帧。我想将所有帧放入VBO中,并在顶点着色器中在GPU上组合其中两个。所以我想将帧传递给GPU和一些统一,这将允许从这两个
创建一个结果帧有可能吗?如果是这样,我该怎么做?
答案 0 :(得分:3)
您将拥有更多顶点属性。通常,您可能有:
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
的属性绑定到第二个变形目标的问题。法线也是如此。然后你正常渲染。