不久前去看了Pixar今年的大作《Toy Story 3》。这一集整体感觉不错,精彩的故事加上3D效果,还是很值得观看的。影片质量好于第一集,与第二集不相伯仲,这一集的优势在于Pixar的技术相比与制作第二集时已进了许多。 我在此梳理一下《Toy Story 3》中那些方面技术有了改进。 Subsurface Scattering的广泛应用。在这一集中,所有的软塑料角色都加入了subsurface scattering,最明显的是Woody和Buzz的脸部,已经不像前两集那样生硬,而是柔和了许多,这种效果更像是软塑料玩具。电影中这种效果还有一个明显的出现地方是黑夜中的探照灯从背面照到一个橘红色路障时,路障泛出淡淡的橘色,这是一个最明显的subsurface scattering例子。还有就是Andy等任务的身体,也已经不再生硬,有了柔和的感觉。这中技术是从《Ratatouille》开始逐渐使用的,这一集中更是大规模地“普及”了。 毛发渲染技术。这个应该也是从《Ratatouille》开始的,但是为了体现大大的毛毛熊Lotso毛茸茸的感觉,Pixar开发了专门方便的工具来渲染Lotso。Andy的头发也是一个进步,30多块独立的头发粘在一起构成。同时Pixar也改进了渲染毛发时的光照和着色系统。 布料模拟技术。这项技术的改进是为了使Ken的衣柜中各种不同类的衣服更加逼真。Pixar从《UP》开始,为衣服的模拟专门开发了方便强大的系统,让动画师或者美工可以非常方便高效地设计不同材料的衣服,而不用再像以前那样一块一块地去拼出一件衣服了。 我之前的文章介绍过,Pixar的技术看起来真得很强大,虽然他们也使用了不少的各种各样的小技巧(trick),但能够做出更好的效果,又何尝不可呢。
其实我很土,刚刚学会用photoshop。 今天看这篇文章的时候,发现原来photoshop cs3可以拼接全景图,其中一步叫做“ Auto Blend Layers”,加速这种融合的算法正是这篇siggraph 2007 paper的方法。步骤在这里,我用这个功能拼出来一个大连某某光场的全景图,如下。 更大的图片从这里可以看到。 看看人家,做个产品,还能发个siggraph;或者说发个siggraph,还能用到产品里面。
体数据的绘制已经被研究了很多年,也包括很多方面,比如怎么渲染比较好看(我就想说说这个),怎么可以交互式渲染,怎么可以快速渲染大规模的体数据等等…… 从大的方面来说,体数据的渲染分为两类: 半透明体渲染(translucent) 等值面渲染(isosurface) 关于第2类渲染,简单说就是找到体数据中的等值面,然后把这些面绘制出来,用户可以移动这些等值面来查看体数据,就像是地图上面的等高线。进来[1]提出了一种绘制画线的绘制方法,不过也是基于等值面的哦。虽然等值面的方法不错,但是对于反映体数据内部的值还是不够直观,所以我比较喜欢使用半透明体渲染的方法。 半透明体渲染的方法比较多,大体分为4种 光线投掷(Ray Casting):这是一个阉割版的光线跟踪,去掉了很多光线跟踪复杂特性,参考[2]。不过这种方法对于渲染半透明体数据的的渲染效果比较好。 泼墨法(Splatting):这种方法就是你把体数据当作一团墨往屏幕上面扔,然后渲染结果就是所有的数据扔完以后屏幕的样子,很像画家的某种作画方法。 Shear-warp:我不知道这个怎么翻译,也不了解这种算法,很遗憾:-) 使用3维纹理:这是目前最通用的方法,也比较简单,因为现在的图形芯片都支持啊。 我目前比较倾向用3维纹理做,简单,效果也不差。具体来说就是绘制很多平面,不过要检测用户视角方向来放置这些平面,才能保证渲染结果没有瑕疵。 ——— [1]:http://www.cs.princeton.edu/gfx/pubs/Burns_2005_LDF/index.php [2]:http://en.wikipedia.org/wiki/Ray_casting
刚刚写下上一篇blog,准备为我的纯OpenGL UI做准备,就在Sourceforge上面找到了一个项目: OpenGLUI. 我看了看这个项目,觉得和我最出的想法不谋而合,所以就免去了我直接写起的痛苦了,我决定在这个项目基础上进行修改。OpenGLUI是一个平台无关的开源项目,虽说无关,但是还是只能在Windows和Linux上面使用,不能在Mac上面用哦。 所以第一步,就是把它移植到Mac上面!