/LGC图形渲染/旗帜(waving texture)特效的实现
来源:互联网 发布:网络教育秋季报名时间 编辑:程序博客网 时间:2024/05/02 06:46
旗帜(waving texture)特效的实现
作者: 刘鹏
日期: 2010-10-26
本文详细介绍了如何实现3D的旗帜(waving texture)特效。
简介
旗帜特效是一张图实时波动,像旗帜飘扬一样,截图如下所示:
旗帜效果3D 方法
实现旗帜(waving texture)特效需要从两个方面考虑:
- 网格的生成算法;
- 实时波动效果的实现。
本质上将,旗帜效果的网格模型是一个正弦曲面(见下图),随着时间的改变实时调整波峰的位置即可实现旗帜飘扬的特效。
正弦波图像网格的生成算法伪代码如下所示,通过一个 GRID_WIDTH/GRID_HEIGHT 循环计算x,y,z 生成网格,其中 z 决定曲面的弯曲程度,由 sinx 求得。
for (int x = 0; x < GRID_WIDTH; x++) {
for (int y = 0; y < GRID_HEIGHT; y++) {
points[x][y][0] = (float)x / (float)TILE_COUNT_LINE;
points[x][y][1] = (float)y / (float)TILE_COUNT_COL;
points[x][y][2] = Amplitude * (float)sin(Period * points[x][y][0]/360.0f * PI * 2.0f);
}
}
其中振幅 Amplitude 决定了波峰、波谷的大小,Period 决定了波动周期。
当图片连续波动时,需要逐帧调整波的位置,只需将网格的顶点数据逐列循环右移即可,伪代码如下所示:
for (int y = 0; y < GRID_HEIGHT; y++){
hold = points[0][y][2];
for (int x = 0; x < GRID_WIDTH - 1; x++) {
points[x][y][2] = points[x+1][y][2];
}
points[GRID_WIDTH-1][y][2] = hold;
}
Reference
- Nehe Lesson 11
- /LGC图形渲染/旗帜(waving texture)特效的实现
- nehe第十一课飘动的旗帜waving texture实现原理
- /LGC图形渲染/倒影(reflection)特效的实现
- /LGC图形渲染/翻页(folding)特效的实现
- /LGC图形渲染
- /LGC图形渲染/COS426
- /LGC图形渲染/图形学系列 -- 粒子系统概述及其实现
- /LGC图形渲染/framebuffer 简介
- /LGC图形渲染/图形学系列 -- 关于计算机图形学的学习
- /LGC图形渲染/访问 Linux 下的鼠标设备
- /LGC图形渲染/Android 图形系统剖析
- /LGC图形渲染/OpenGL ES 概述
- /LGC图形渲染/OpenGL ES 系列教程
- /LGC图形渲染/OpenGL 概念建立
- /LGC图形渲染/OpenGL 资源汇编
- /LGC图形渲染/OpenGL 性能优化
- /LGC图形渲染/OpenGL Performance Optimization
- /LGC图形渲染/Image Processing with gluas
- 怎样在日常生活中预防保健胃出血疾病?
- VC++ 6.0的一些使用技巧---IDE的使用
- 关于Rijndael算法的加密
- 人生感悟:丢掉宝石的孩子
- 代码发布的问题
- /LGC图形渲染/旗帜(waving texture)特效的实现
- WPF的资源续集
- Simple Guide to use the gdb tool in Android environment
- ASP.NET web.config配置大全
- C#中string.Format的格式参数问题
- 新加入
- c# winform 文字滚动问题
- c#图片路径设置
- Unable to locate tools.jar. Expected to find it in C:/Program Files/Java/jre