如何使用 VBO 进行变形?
Posted
技术标签:
【中文标题】如何使用 VBO 进行变形?【英文标题】:how to use VBO for morphing? 【发布时间】:2011-09-27 06:22:30 【问题描述】:我想要一个可以动画的网格。我正在从文件中加载网格,包括关键帧。我想将所有帧放入 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
的属性绑定到第二个变形目标。法线也一样。然后你照常渲染。
【讨论】:
以上是关于如何使用 VBO 进行变形?的主要内容,如果未能解决你的问题,请参考以下文章
两个不同的对象 OpenGL。 VAO VBO IBO 网格变形问题
使用 VBO 使用 LWJGL 对 3D 立方体进行纹理处理