专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »游戏开发 » vertexshader:利用Vertex Shader实现关键帧动画 »正文

vertexshader:利用Vertex Shader实现关键帧动画

来源: 发布时间:星期四, 2008年9月25日 浏览:75次 评论:0

一般来讲,在D3DOpenGL中最简单的动画实现方式就是对模型进行矩阵变换,改变模型的各个组成部分的相对位置以及在世界坐标系中的绝对坐标。在许多初级的OpenGL教程中,往往以这种动画为例子来说明矩阵变换的含义,但是这种动画制作方式,只适合于刚体运动的描述,所为极为有限,当需要产生难以进行数学描述的模型扭曲变形动画时,就变得很难实现。通常对于这种情况我们使用不断修改顶点缓冲区数据的方法来完成从一个关键桢到另外一个关键桢的模型变形过程,当模型数据量比较大的时候,这种方法是很低效的,而在DirectX9中我们可以很容易的利用Vertex ShaderTweens技术来完成。

下面是笔者写的例程中的几幅截图:

原理

实现关键桢动画的生成原理都是相同的,就是差值。实际上所谓Tweens就是差值的意思。所以原理很简单,可用下图表示

假设我们已知在KeyFrame1 顶点 VertexA = VertexValue1,

KeyFrame2中顶点 VertexA = VertexValue2,所以当生成动画时我们只需让

VertexA = VertexValue1*(1-Weight) +VertexValue2*Weight Weight 0 ——>1变化)就可以实现动画效果了。当所有的顶点都按规则变化模型的变形动画就产生了。

实现

我们知道Vertex shader能够在渲染前能够对顶点进行逐个变换和修改,利用这一点很容易我们就可以实现关键桢动画的生成。具体操作如下:

1、确定Vertex Shader的输入

两个顶点数据流,索引号可假设为0(作为KeyFrame1)和1(作为KeyFrame2),分别指向顶点缓冲区pVBKeyFrame1pVBKeyFame2,分别存储顶点在两个关键帧中的值

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: