太傻

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

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  39 随笔 :: 0 文章 :: 280 评论 :: 0 Trackbacks

2006年3月26日 #


     半透明物体(Translucent materials)在我们周围随处可见。大理石、玉器、皮肤、牛奶等等就属于这一类。半透明物体的绘制必须考虑到次表面散射(subsurface scattering),表面的入射光线除了反射以外,还有大量光线经入射点进入物体,在物体内部传输的过程中不断被吸收,不断被散射,最后在入射点附近穿出(BSSRDF)。
     DIRECTX SDK中早在2004年便把subsurface scattering包含进了PRT的API中。DIRECTX SDK的例子中一直有一个PRT DEMO的例子,也展示
了subsurface scattering的效果,我当时对着几个参数捣鼓了好一阵,出来的半透明效果平淡无奇,一点也没有国外论文中所附样图的风采。是不是我用的模型面数太少啊?是不是PRT中带的SSS技术不适用半透明物体啊?是不是还有什么未知的东西啊?
     带着这些疑问过了好几年。期间,曾经在MSN上碰到这方面的一个专家,来想问他些问题,但是又不好意思说,怕打扰了他的工作,只是向
他讨要了他的博士论文(可惜后来在电脑中丢了)。
     2008年初,我写EMAIL给了曾在微软研究院做过实习生的赵爽(上海交大的学生,我查到了他的主页,上面有EAMIL,SIGGRAPH 2008有一篇
论文,他是第二作者),向他讨教了几个问题。赵爽真是很“爽快”,第二天就给我回了信,谈了几点他自己的看法:“PRT 简单地说,是利用光源输入和物体的亮度具有线性关系(也就是说,光源亮度提高1倍,那么物体亮度也提高1倍)这一性质,预先以一些特定的基函数为光源,计算物体的appearance。然后对于任意光源,通过投影到该基函数上,并将预先计算好的 apperance 相加,即可得到物体在当前光源下的appearance。因此 PRT 是可以应用在半透明材质的渲染上的。至于你说的按 vertex 计算这一问题,的确这是 PRT框架的一个一般性问题,和是否是半透明材料无关。相反,对于很多半透明材料,尤其是 homogeneous 的材料,它们的 appearance相对比较低频,vertex 采样率反而可以低一点。至于微软 SDK 里面的渲染效果,其实我并不清楚微软 SDK 里面是如何渲染半透明物体的”。由此可见,模型面数少一些对半透明效果的影响并不大,也不是决定性因素。
     后来,我看到了清华博士生徐昆(他也在微软研究院做过实习生,我发现做半透明物体这方面论文的都在那儿做过Research Intern。与
英雄呆在一起,不知不觉也会变成英雄,不知道这样的比喻恰不恰当。)在EUROGRAPHICS2007上发表的论文“Real-time homogenous translucent material editing”,这篇论文讲了可变半透明物体材质的实时绘制,还带了一段非常棒的DEMO VIDEO。这文章又燃起了我熄灭好久的探寻半透明物体绘制奥秘的希望。特别是其中一句话提醒了我为什么DIRECTX SDK中的PRT DEMO的半透明物体效果比较差劲。“Since human perceives glossy surfaces more translucent than surfaces without glossy, for increased realism, we add a specular component to the final rendering. ”也就是说,人眼看有光泽的物体表面更能感受到半透明质地,所以加上高光,半透明的真实感更能体现出来。嗯,找到了问题的关键。
      我在DIRECTX SDK的PRT DEMO上做了个小修改,增加了几个点光源的Specular Lighting。引入些许高光,渲染的图像立刻与以往不同了,效果出奇的好。请看如下图片。材质使用的是预定义的MARBLE。原想把程序传上来,可是目前我无FTP可用,BLOG中以往的连接都失效了,如有哪位网友能提供我BLOG用的FTP,不胜感谢。




 


 
 


 
posted @ 2008-05-29 21:55 太傻 阅读(537) | 评论 (11)编辑

    SIGGRAPH 2007 刚开完,那些COURSE NOTES全文已开始由他们的作者陆续在网上公布了。我整理了一份siggraph 2007 course notes(online)的清单,还缺一些,如有谁能在网上找到相应的在线COURSE NOTES,请通过留言通知我一下,以便及时更新。希望我的劳动能给学习图形学的人们提供一点方便。 

siggraph 2006 course notes(online) 官方发布
http://www.siggraph.org/s2006/main.php?f=conference&p=courses&s=notes


siggraph 2007 course notes(online)

1. Computational Photography
http://www.merl.com/people/raskar/photo/

2. Mesh Parameterization: Theory and Practice
http://alice.loria.fr/php/article.php?pub=../publications/papers/2007/SigCourseParam

3. Sketch-Based Interfaces: Techniques and Applications
暂未找到

4. State of the Art in Massive Model Visualization
http://www.sci.utah.edu/~abe/massive07/

5. Introduction to Direct3D 10
http://www.microsoft.com/downloads/details.aspx?FamilyID=96CD28D5-4C15-475E-A2DC-1D37F67FA6CD&displaylang=en

6. Anyone Can Cook: Inside Ratatouille's Kitchen
http://graphics.pixar.com/indexAuthorShah.html

7. Introduction to SIGGRAPH and Computer Graphics
暂未找到

8. High-Quality Rendering Using Ray Tracing and Photon Mapping
http://graphics.ucsd.edu/~henrik/papers/

9. From "Shrek" to "Shrek the Third": Evolution of CG Characters in the "Shrek" Films
暂未找到

10. An Interactive Introduction to OpenGL Programming
暂未找到

11. Practical Least-Squares for Computer Graphics
http://graphics.stanford.edu/~jplewis/lscourse/

12. "Surf's Up": The Making of an Animated Documentary
http://www.185vfx.com/2007/08/surfs-up-course-at-siggraph/

13. A Gentle Introduction to Bilateral Filtering and Its Applications
http://people.csail.mit.edu/sparis/siggraph07_course/

14. Urban Design and Procedural Modeling
暂未找到

15. Example-Based Texture Synthesis
http://www.cs.unc.edu/~kwatra/SIG07_TextureSynthesis/index.htm

16. Practical Global Illumination With Irradiance Caching
http://moon.felk.cvut.cz/~xkrivanj/papers/2007-caching_course/index.htm

17. Spatial Augmented Reality: Merging Real and Virtual Worlds
http://www.uni-weimar.de/medien/ar/SpatialAR/Siggraph07.htm

18. Résumés and Demo Reels: If Yours Don't Work, Neither Do You!
暂未找到

19. Sorting in Space: Multidimensional, Spatial, and Metric Data Structures for Computer Graphics Applications
暂未找到

20. Visualizing Quaternions
暂未找到

21. Database Techniques With Motion Capture
http://www.cs.cmu.edu/~christos/TALKS/SIGGRAPH-07-tutorial/

22. LucasArts and ILM: A Case Study in Film and Game Convergence
暂未找到

23. Geometric Modeling Based on Polygonal Meshes
http://www.agg.ethz.ch/publications/course_notes

24. GPGPU: General-Purpose Computation on Graphics Hardware
http://www.ninjaprox.info/index.php?q=d3d3LmdwZ3B1Lm9yZy9zMjAwNy8%3D&hl=1ed

25. Mobile 3D Ecosystem
暂未找到

26. The Morphology of Digital Creatures
暂未找到

27. Anyone Can Make Quality Animated Films! The Eight Basic Steps to Success
暂未找到

28. Advanced Real-Time Rendering in 3D Graphics and Games
http://www.valvesoftware.com/publications.html

29. Crossing The Line: Moving From Film to Games (and Possibly Back)
暂未找到

30. Digital Art Techniques
暂未找到

31. Fluid Simulation
http://www.cs.ubc.ca/~rbridson/fluidsimulation/

32. Interaction Tomorrow
http://www.interactiontomorrow.org/coursematerial.html

33. Strands and Hair: Modeling, Animation, and Rendering
http://gamma.cs.unc.edu/SIG07_HAIR/

posted @ 2007-08-18 13:21 太傻 阅读(2468) | 评论 (10)编辑

    "Physically Based Modeling and Animation of Fire"(SIGGRAPH 2002)是最为逼真再现火焰的SIGGRAPH论文之一。也是以后基于物理模拟FIRE的经典参考文献。该论文很复杂,实时实现难度很大。但是引用论文其中一部分思想,牺牲一些视觉效果,实时地生成火焰倒也相对容易。我花了两个晚上把3d smoke的程序改为3d fire,主要的时间用在调公式中的参数,尽量接近真实的火焰。12点了,终于调了一个自己认为还算马马虎虎的版本放在网上。过几天有空的话,还要进一步做些改进工作。


三维的火焰(CPU版)
http://www.net638.com.cn:638/download/3d_fire(cpu版).rar

posted @ 2007-02-05 00:29 太傻 阅读(1160) | 评论 (20)编辑

     BLOG好久没更新了。为了生计,远离了自己的爱好。
     Course notes "Real-Time Volume Graphics", Course #28, Siggraph 2004.介绍了许多利用三维纹理进行实时体绘制的方法。该文是可免费下载的,写得很精彩,图文并茂。许多自然景物的模拟(比如云、烟)在生成可视模型后,都是通过体绘制技术来展现在大家的眼球前。从文献上查到最早提出用具备纹理映射的硬件来进行体绘制是94年的一篇论文“Accelerated volume rendering and tomographic reconstruction using texture mapping hardware”。可能是该文的发表时间较早,GOOGLE找不到免费电子版了,所以至今也没看到过原文,不过这并不妨碍我们对该技术的理解。网上OPENGL的体绘制例子很多,但是DIRECTX版本很难找到。我自己写了一个DIRECTX版的,用了TeddyBear的数据模型,可显示一头憨憨的玩具熊,其样子让我想到我那未满周岁的儿子。学习Volume Rendering的主要目的还是为绘制三维的烟雾,下面给出的DEMO,是用CPU完成3D Fluid的求解,用体绘制技术来实现可视化。由于CPU无法并行运算,速度较慢,所以使用的三维格子是16X16X16,比较粗糙。下一步准备改用GPU,可望在ATI9600上实现较高精度的实时3D Fluid。

玩具熊的体绘制DEMO:
http://www.net638.com.cn:638/download/volume Rendering.rar

三维的烟雾(CPU版)
http://www.net638.com.cn:638/download/3d smoke(cpu版).rar



posted @ 2007-01-22 23:41 太傻 阅读(1078) | 评论 (17)编辑

    太平天国忠王府自解放后一直是苏州老博物馆的所在地。博物馆有个偏门,门口有一对年代久远的“门当”(所谓“门当”原指大宅门前的一对石鼓,有的抱鼓石坐落于门础上,信其能避邪),光滑异常。儿时常在忠王府门口玩耍,到了夏日,常骑于石鼓之上,觉得一种透心的凉爽。2006年10月,贝聿铭先生设计的新博物馆落成了,再去新馆参观时,路过老馆偏门,老石鼓却已破损不堪,两侧糊以水泥,再也没有往日的神韵了。
    苏州的博物馆事业一向落后,文物之前要么送上海,要么送南京。新建的博物馆,请来了贝聿铭先生来设计,终于迎来了扬眉吐气的时候。这次老百姓来新博物馆主要目的有两个,一则欣赏一下贝氏设计的园林式建筑,二来想亲眼目睹一下向沈阳博物馆临时借来的国家一级文物《姑苏繁华图》。《姑苏繁华图》原名《盛世滋生图》,是清代宫廷画家徐扬受《清明上河图》启发描绘苏州风物的巨制,清末时被溥仪盗携出宫,散佚于东北,上世纪50年代初由当时的东北博物馆即今天的辽宁博物馆收藏并改为现名,为国家一级文物。也就是说这张展现苏州旧时风情面貌的画卷,绘成以后还从未与苏州人民见过面。此图摆放在新馆的地下室,门口摆起了长龙,由于同去的人催着我离开,最后终于还是未看成此画。
    画虽未看成,却使我想起一事,年初时曾用Image Quilting技术对《清明上河图》的一小段图片做过一个实验,“创作”了一副新画。请看下面两幅图。
(原图)


(对原图经过纹理合成后的新图)


(待续)

posted @ 2006-10-22 21:35 太傻 阅读(1548) | 评论 (17)编辑

前几天,将 "Target-Driven Smoke Animation" on the GPU投给了WWW.GAMEDEV.NET的每日一图.(Image of the Day )。
http://www.gamedev.net/community/forums/topic.asp?topic_id=392793

收到的评论还不错。摘其中一条:
It looks amazing. Definately something that has potential. I tried the link to your website, and it didn't work. I googled it, and it came up, but it was in chinese... is there an english version? Having google translate it didn't work out too well

--------------------------

My goal was to simulate the Navier Stokes equations using GPU and then extend that approach to implement "target driven smoke animation"(siggraph 2004) in 2D. Given a sequence of target images, the method can generate a smoke simulation in which the smoke is driven towards each of these targets in turn, while exhibiting natural-looking interesting smoke-like behavior.For 2D simulations on a 256X256, my animation runs at 30 FPS rate on the NVIDIA 6600GT GPU.

You can download the demo at http://www.net638.com.cn:638/download/tdsmoke_gpu_demo(20060502).rar

Changing the Pictures will allow you to see different effects.

1. Enter "char.jpg" in the "Source Image Filename" edit box.
2. Enter "char1.jpg" in the "Target Image Filename" edit box.
3. Click "Inverse start" button

or

1. Enter "3456.jpg" in the "Source Image Filename" edit box.
2. Enter "abcd.jpg" in the "Target Image Filename" edit box.
3. Click "Inverse start" button

or

1. Enter "righttick.jpg" in the "Source Image Filename" edit box.
2. Enter "wrongtick.jpg" in the "Target Image Filename" edit box.
3. Click "Inverse start" button

or

1. Enter "face.jpg" in the "Source Image Filename" edit box.
2. Enter "horsechar.jpg" in the "Target Image Filename" edit box.
3. Click "Inverse start" button

Try it. Have a fun. 
posted @ 2006-05-23 11:32 太傻 阅读(1040) | 评论 (2)编辑

        电影魔戒首部曲前一刻钟中有这么一幕: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

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

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

改进版DEMO(“Target-Driven Smoke Animation”的GPU实现)下载:
http://www.net638.com.cn:638/download/tdsmoke_gpu_demo(20060502).rar

可以改变源与目标的图片(在/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 @ 2006-03-26 23:35 太傻 阅读(1312) | 评论 (21)编辑