太傻

szlongmanblog@126.com 江山笑 烟雨遥 涛浪淘尽红尘俗事几多骄

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

        电影魔戒首部曲前一刻钟中有这么一幕:111岁的Bilbo与魔法师甘道夫正谈论着烟草,突然Bilbo吐出一个大烟圈,而甘道夫更是了得,笑着吹出一艘美丽的帆船,航行穿过了Bilbo烟圈。接着镜头便转向了一个巨大的焰火宴会。美国的电影特技公司是如何实现这一效果的,不得而知。不过SIGGRAPH2004中的一篇文章“Target-Driven Smoke Animation”却是公开了一种烟雾动画控制技术(smoke animation control),达到了与电影中类似的效果。此论文是以色列人撰写的(The Hebrew University of Jerusalem),SIGGRAPH2003中“Keyframe control of smoke simulations”引起了他们对此方向的兴趣,提出了新的思想,方法不复杂,但是最后的结果倒是出奇的好。通过查阅文献,最初公开发表研究"烟雾动画控制技术"的论文是个中国留学生(Object Modeling and Animation with Smoke),Lin Shi,复旦的本科,现在美国读博士,成果累累。中国的精英在国外有许多,一旦有了吸引这些有真才实学的学者回国的机制,我想实现科技的腾飞是指日可待的。
      原文的实现全部使用了CPU,运用精度很高的二阶偏微分数值解法,时间步长也较小,因此最后形成的动画图像非常细腻。我使用了GPU(ATI 9600),采用了大步长,一阶隐含数值解法,能实时实现二维的烟雾动画(比如一个图像遵循流体的运动定律演化为另一种图像),当然从视觉效果上要比论文上的差很多。原来一直打算找时间写三维形式烟的模拟,可是自从看到那论文后,心里就开始构思如何实现文中的算法,只是碰到点编程上的BUG,徘徊了好多天。现在总算有了个雏形,心中还是比较开心的。只是有时候,晚上调程序,睡不着,看看电视放松一下脑子,结果那几天影响了一位室友的睡眠,在此表示歉意。
      
-------------------------------

    这阵子还看了两本科普书,一本是许峰雄写的“深蓝揭密”,一本是沃森写的“双螺旋”,都是在买到后,一个晚上一口气读完的。两本书有一个共同的特点,都是科学家撰写自己亲身的科研历程,披露了很多国外一流大学学习生活的细节。沃森在他25岁时就发现了DNA的双螺旋结构,以此成果荣膺了日后的诺贝尔奖。他在一本书中自述:故事开始的时候我25岁,还没有结婚,考虑女孩(girls)多于基因(genes)。表述很大胆也很有意思。
        ......

        又过了好多天,一直想对上面那个DEMO做优化,但是好象没了那股精气神,结果一点也没进展。两三天前的一个晚上,看了会电视,喝了杯价值一块钱的咖啡,突然来了精神,把想到的优化方法付诸实现了。用了浮点数纹理,精度一下子提高了,从效果上接近原论文一阶微分数值解法的视频。昨日晚上又将GRID SIZE加到256,图像品质大为改善。

改进版DEMO(“Target-Driven Smoke Animation”的GPU实现)下载:
http://pan.baidu.com/s/1mgnzola


可以改变源与目标的图片(在/images目录下),以观察到不同的效果
比如:在Source Image Filename框中录入“char.jpg”,在Target Image Filename框中录入“char1.jpg”;
然后按一下“Inverse Start”会看到一个中文的“图”字以烟雾状化为另一个中文字“画”;
再按一下“Inverse Start”会看到一个中文的“画”字以烟雾状化为另一个中文字“图”。

这些DEMO均使用“October 2005 DirectX SDK Update”,要求GPU支持PS2.0





 

posted on 2006-03-26 23:35  太傻  阅读(2640)  评论(21编辑  收藏  举报