|
|
电影魔戒首部曲前一刻钟中有这么一幕: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,徘徊了好多天。现在总算有了个雏形,心中还是比较开心的。只是有时候,晚上调程序,睡不着,看看电视放松一下脑子,结果那几天影响了一位室友的睡眠,在此表示歉意。
这阵子还看了两本科普书,一本是许峰雄写的“深蓝揭密”,一本是沃森写的“双螺旋”,都是在买到后,一个晚上一口气读完的。两本书有一个共同的特点,都是科学家撰写自己亲身的科研历程,披露了很多国外一流大学学习生活的细节。(待续)
DEMO(“Target-Driven Smoke Animation”的GPU实现)下载:
http://www.net638.com.cn:638/download/tdsmoke_gpu_demo.rar
这些DEMO均使用“October 2005 DirectX SDK Update”,要求GPU支持PS2.0
----------------------------
太傻BLOG, http://www.cnblogs.com/szlongman |
|