首页 | 教程 | 人才 | 资源 | 视频 | 外包 | 培训 | 论坛  
游戏教程 美术基础 3D设计 平面软件 影视后期 建筑效果 网站设计 精选教程
 
网络学堂   3ds max   Maya   LightWave   softimage   zbrush   Poser   理论   其它
 您现在的位置:首页 > 教程频道 > 3D设计 > 3ds max
     如果制作爆炸效果

如果制作爆炸效果
编辑:游戏兵工厂 发布时间:2016-12-16 查看:416 次   

爆炸效果是各种游戏中不可或缺的。产生这种效果的方法多种多样,本文介绍一种较为简单的算法,以期抛砖引玉:)这里仅给出必要代码,请理解后自己编程。如果你有更好的算法,也请E给云风一份:)~  
注:为了提高速度,题头演示画面为40x40x32帧。而下面算法将产生80x80x64帧的图象。        

首先,你必须创建一个调色版,我们需要使用到16种颜色(如下)


 
下面不是一个可用的程序,你所要作的工作是要将它读懂:)   

#define 画面帧数  64


#define 画面大小  80


#define 粒子数  32

 

/* 粒子数越多,爆炸画面中的亮块面积将越大 */

void 创建爆炸效果()
{
  unsigned char 画面[画面大小][画面大小];
/* 画面这个数组里最终将存放 0~15 间的整数,对应上面调色版里的16种颜色 */
  long int c, c2, x, y, xx, yy, color;

  struct {
    long int x, y, xc, yc; } hot[粒子数]; for (c=0; c<粒子数; c++) { hot[c].x = hot[c].y = (画面大小/2)<<16; hot[c].xc = -0x7FFF 到 0x8000 之间的随机数; hot[c].yc = -0x7FFF 到 0x8000 之间的随机数; } for (c=0; c<画面帧数; c++) { 清空画面; color = ((c<16) ? c*4 : (80-c)) >> 2; for (c2=0; c2<粒子数; c2++) { for (x=-6; x<=6; x++) { for (y=-6; y<=6; y++) { xx = (hot[c2].x>>16) + x; yy = (hot[c2].y>>16) + y; if ((xx>0) && (yy>0) && (xx<画面大小) && (yy<画面大小)) { 画面[yy][xx] += (color >> ((ABS(x)+ABS(y))/3)); if (画面[yy][xx] > 63) 画面[yy][xx] = 63; } } } hot[c2].x += hot[c2].xc; hot[c2].y += hot[c2].yc; } for (x=0; x<画面大小; x++) { for (y=0; y<画面大小; y++) { c2 = 画面[y][x]; if (c2 < 8) 画面[y][x] = 0; else 画面[y][x] = c2/4; } } } 储存画面到爆炸动画第 c 帧; }

 

一点建议:你可以在程序一开始,使用这个算法生成爆炸的动画。在需要使用时,循环播放。

相关文章:
本月教程排行
全部教程热点 全部推荐教程
· 老外的经典(少女贞德)从.
· Zbrush的行业应用之游戏篇.
· 3DMAX汽车三视图建立到使用.
· ZBrush3官方中文教程
· 3ds MAX基础教程:碗和杯子.
· MAYA材质教程:制作天鹅绒.
· 经典简单室内建模方法(新手.
· 用3ds max结合photoshop制.
· 【painter 8 手绘教程】《.
· Painter 8实例:时尚插画绘.
· Maya教程_3D制作足球模型教.
· 3ds MAX教程:室内空间夜景.
· 3D MAX教程:楼梯间的立体.
· 3dsMAX基础教程 直筒水杯的.
· 《山海经》奢比兽的制作
· PS 绘画 性感美女(国外)教.
· 美术基础--原画底稿上色篇.
· [分享]结构素描
· 贴图教程_PS滤镜快速制作草.
· 原动画运动规律基础教程(翻.
DOGAME游戏兵工厂 | 交流论坛 |关于我们| 广告联系 | 联系我们
DOGAME游戏兵工厂2009-2014HNYU GAME 京ICP备13045305号