表情动画
来源:互联网 发布:城门cp 知乎 编辑:程序博客网 时间:2024/04/28 04:35
多表情动画
实现方法
1.转换X文件为OPENGL容易读出的格式,是方便程序,我自定义格式MOR(MORPH的前三个字母)格式。
输出的mor文件结构
1 HEADER文件头 文件标志 = "morph01" 网格数量 ( unsigned ) 顶点数量 ( unsigned ) 材质数量 ( unsigned )2 信息列表 2.1 网格名称列表 网格名称1(32字节) 网格名称2 ... 网格名称meshNum 2.2 纹理名称列表 纹理名称1( 32 byte ) 纹理名称2 .. 纹理名称matNum 2.3 三角形集数量列表 三角形集1数量( unsigned ) 三角形集2数量 .. 三角形集matNum数量3 顶点与三角形索引 3.1 顶点列表; 网格1的位置列表 (float*3*verNum) 网格1的法向列表 (float*3*verNum) ... 网格meshNum的位置列表 网格meshNum的法向列表 3.2 纹理坐标列表;(float*2*verNum) 3.3 三角形索引列表 材质1对应的三角形索引(unsigned * 3 *三角形集1的数量) 材质2对应的三角形索引 ... 材质matNum对应的三角形索引
2.我这里采用了5个拓扑结构相同的网格模型,其中一个为基底模型,将基底模型的的纹理,法向,位置,三角形索引数据列表以及其它四个网格模型的位置法向列表输入到顶点缓冲中。
3.顶点着色。这里GLSL 实现
混合渐变动画顶点着色代码:
attribute vec3 verpos1;attribute vec3 verpos2;attribute vec3 verpos3;attribute vec3 verpos4;
attribute vec3 vernor1;attribute vec3 vernor2;attribute vec3 vernor3;attribute vec3 vernor4;
uniform vec4 bf;
void main(){ vec3 pos = (verpos1 - gl_Vertex.xyz) * bf.x; pos += (verpos2 - gl_Vertex.xyz) * bf.y; pos += (verpos3 - gl_Vertex.xyz) * bf.z; pos += (verpos4 - gl_Vertex.xyz) * bf.w; pos += gl_Vertex.xyz;
vec3 nor = (vernor1 - gl_Normal) *bf.x; nor += (vernor2 - gl_Normal) *bf.y; nor += (vernor3 - gl_Normal) *bf.z; nor += (vernor4 - gl_Normal) *bf.w; nor +=gl_Normal;
vec3 posView = (gl_ModelViewMatrix * vec4(pos,1.0)).xyz;
vec3 normal = gl_NormalMatrix * nor; normal = normalize(normal); vec3 lightDir = vec3(0.0,0.0,0.0) - posView; lightDir = normalize(lightDir); float lum = dot(normal, lightDir); gl_Position = gl_ModelViewProjectionMatrix * vec4(pos,1.0); gl_FrontColor = vec4(lum,lum,lum,1.0); gl_TexCoord[0] = gl_MultiTexCoord0;}
实现环境:VC6.0,OPENGL2.0,显卡X600,显寸128M
- 表情动画
- 表情动画渲染结果
- Unity3d之表情动画--眨眼
- 3dsmax表情动画的导出
- 3dsmax表情动画的导出
- 微信 动画表情 骰子 猜拳
- UV动画贴图——更换表情
- UGUI(一)序列图,表情动画
- 表情
- 表情
- 表情
- 表情
- MSN / QQ 中的CRichEditCtrl (一) —— 动画表情
- MSN/QQ中的CRichEditCtrl:动画表情的实现
- 在RichEdit控件中插入GIF动画表情
- delphi RichEdit控件中插入GIF动画表情
- Delphi RichEdit的实现MSN / QQ 中的动画表情
- 教您如何让Gif动画动起来(表情)
- Velocity介绍-入门之二 语言本身介绍
- .net中for与foreach的比较及使用。
- 网络相关记录
- 端午节流水帐
- 源代码__图形显示方式屏幕的保存和恢复
- 表情动画
- 我的BB开发环境(黑莓软件)
- 用Eclipse,Axis和Tomcat构建Web Services
- js容易出错的正则表达式
- 深圳到香港
- 32位代码段不能写显存吗?==里面提到怎么在汇编使用16位,32位标志
- ubuntu配置
- CString常用操作种种
- Java SE 6 新特性系列