网页功能: 加入收藏 设为首页 网站搜索  
图象特效-等离子体(Plasma)
发表日期:2007-01-16作者:[转贴] 出处:  

   Plasma是个原理极其简单的特效,被广泛的应用于DEMO中,大量的DEMO都会来上一段柔和的,粘稠的,象什么浆汁一样流动的PLASMA伴随强劲的音乐,产生少许恶心的效果。你注意看某些电视广告的背景是幻变的背景,那是由专用视频硬件产生的类似Plasma效果,我们把那叫做电子背景。不论硬件软件,效果原理都类似。

请看效果插图:

哇,好酷啊!你知不知道是怎么完成的?

先让我来分析一下: 从现象上分析得以下要求:

1.Plasma是个平面内的函数图象z=f(x,y)。( x向右爪子(0,xres), y向右爪子(0,yres),0>=z<=255) (向右爪子打不出来:( )

2.看起来平滑,一定是个连续的函数,函数值没有发生跳变。

3.易于生成,但是又要看起来没有规律和某种模式。

4.要有平滑的调色版动画。

解决问题的思路是:

1.平滑的最易得的函数是三角函数sin,cos,而且可以保证结果在一定范围内平滑变化。由x,y按某一规律算出角度代入sin,cos函数。(老赫猜想产生电子背景的硬件里一定有三角函数发生器,拆开研究研究???)

2.要看起来没有模式和规律就需要把几个函数加和起来,形成新的函数。(我认为这也是Perlin函数的基本思想之一,Particle System,Perlin Noise理论基础都不是很复杂,但正说明老外创新和举一反三的能力很强。)

3.平滑的调色板动画同样需要调色板RGB值平滑变化,不发生跳变,sin,cos函数来生成也是很好的选择。

4.不能去实时的计算sin,cos。其实是先做好几个函数图象的Buffer,再往结果缓冲区叠加。要Plasma好看,规律性不明显,则需要叠加函数要有相近的波长。

实现原理图如是:由两个虚拟的窗口在各自的空间移动,移动规则自己定,老赫的规则是在做带碰撞的匀速运动

以上两个图象的公式分别为:

lpScanLine1[j]=64+63*sin(hypot(i,j)/8.0);

lpScanLine2[j]=64 + 63 * cos( i/(27.0+15*cos(j/34.0 ) ) ) * sin( j/(12+21*sin(i/67.0))) ;

你可以调整系数或者自己写其他的公式,而不拘泥于以上。

好了,难度完全消失了。注意函数混合后的值是0-255,那么两个未混合的函数值范围应该是0-127,再遇到的问题最多是在取值时缓冲区边界移出了原缓冲区而把程序Crash掉(Off by one error)。 /*=============================================================

以下是对DX用户的提醒:

1. 由于是查表,函数值缓冲区建立在数组里就可以了,没有必要建在Surface里。省去了Lock,Unlock(理论上应该会快些!但肯定感觉不到)。

2.叠加结果缓冲区是Surface还是程序员自己的RAM Buffer ?

由于它马上要送上屏幕,要做Blit,所以从性能考虑,应该是Surface。用自己的Buffer,则要用占CPU时间的memcopy。

3..叠加结果缓冲区在Video RAM还是SYS RAM?

当然是SYS RAM!在循环里按像素打交道,Video RAM慢死你!所谓直接写屏其实并不是最快的办法!最快的方法是写RAM Buffer,DMA到Video RAM。(有硬件支持情况:Blit是微软对DMA Transfer的封装)

=============================================================*/

综上所诉,可知:

1.Plasma非常的容易编程,所用的知识也是初中学生也学过的。

2.性能比较好,即使是用Java这种蜗牛级的语言来写也可以有较满意的效果。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 图象特效-等离子体(Plasma)
本类热点文章
  Particle Fire [粒子火焰]
  wu反走样(Anti-aliased)直线
  反走样技术之一 —— Wu像素
  粒 子 系 统
  3D 粒子系统
  Real-time Cloth Deformation [实时变形..
  Ripple [水波]
  碰撞检测和粒子的交互作用
  Particle System Overview [粒子系统概..
  wu像素
  图象特效-等离子体(Plasma)
  制作爆炸效果
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00327