云澹澹,水悠悠,一声横笛锁空楼

Idea Is More Important Than Action
posts(36) comments(50) trackbacks(1)
  • 博客园
  • 联系
  • 订阅 订阅
  • 管理

公告

EMail:jun.skyman2001'at'gmail.com

与我互动

  • 给我发短消息

常用链接

  • 我的参与
  • 我的新闻
  • 最新评论
  • 我的标签

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

我参与的团队

  • 计算机图形学(0/351)

我的标签

  • skin rendering(9)
  • sss(8)
  • Subsurface Scattering(6)
  • video(2)
  • shadow mapping(1)
  • glsl(1)
  • cartoon rendering(1)
  • celshading(1)
  • fresnel(1)
  • chromatic dispersion(1)
  • 更多

随笔分类

  •  GPU(7)
  •  PV3D
  •  翻译
  •  人文(1)
  •  思想
  •  研究(21)
  •  优化(1)
  •  杂项(2)

随笔档案

  • 2008年5月 (6)
  • 2008年4月 (10)
  • 2008年3月 (2)
  • 2008年2月 (2)
  • 2007年10月 (3)
  • 2007年9月 (3)
  • 2007年8月 (2)
  • 2007年7月 (8)

Friends

  • LongGi
  • 一个搞Linux上的OGL的同志

搜索

  •  

最新评论

  • 1. re: Skin Demo优化之一
  • 说得有道理,在效果和性能之间要取个最佳的平衡点。
  • --Skyman
  • 2. re: 今天看到“黑涩会MM”了
  • 照片有空贴上来啊
  • --Skyman
  • 3. re: 今天看到“黑涩会MM”了
  • 你们是什么公司啊?
  • --ChenA
  • 4. re: 今天看到“黑涩会MM”了
  • PP呢?
  • --Jeason
  • 5. re: 今天看到“黑涩会MM”了
  • 照片呢?
  • --才子£鸣

阅读排行榜

  • 1. Flash 3D Demo - 《兔女郎》(1107)
  • 2. 实时水墨渲染探究(566)
  • 3. 卡通渲染初探(561)
  • 4. 用DDA Convolution和Perlin Noise来模拟水粉画笔触(485)
  • 5. Shadow Mapping Using GLSL(477)

评论排行榜

  • 1. Flash 3D Demo - 《兔女郎》(11)
  • 2. 喝一碗孟婆汤,走一回奈何桥(FLASH转载)(4)
  • 3. 实时皮肤SSS效果渲染Demo(4)
  • 4. 今天看到“黑涩会MM”了(4)
  • 5. 实时皮肤SSS效果渲染Demo的改进(3)

60天内阅读排行

  • 1. Shadow Mapping Using GLSL(477)
  • 2. 带贴图的卡通渲染(HLSL实现)(333)
  • 3. 皮肤的实时3S渲染(OpenGL + GLSL)(269)
  • 4. 今天看到“黑涩会MM”了(266)
  • 5. Real Head Demo(244)

View Post

皮肤的实时3S渲染(OpenGL + GLSL)

人的皮肤之所以看上去比较柔和自然,主要是由于各层皮肤对光线的散射,通过实验测试表明,光线接触到皮肤时,有大约96%被皮肤各层散射了,只有大约4%被反射。下面就是光线经过皮肤散射和反射的示意图(摘录自Gary J. Katz的"Skin Rendering"):

这种皮肤各层对光的散射就是次表面散射效果(SubSurface Scattering),简称3S效果。这种效果的一种计算模型是Jensen的BSSRDF模型。BSSRDF中计算Rd的方程如下:

次表面散射分为2种:Single Scattering和Multiple Scattering,因为皮肤散射是以Multiple Scattering为主,所以这里我只计算皮肤的Multiple Scattering效果。我这里采用的方法是Carsten Dachsbacher和Marc Stamminger的论文"Translucent Shadow Maps"中描述的方法,就是以光源为视点来计算得到Irradiance Map, Depth Map和Normal Map,分别用来存储Incoming Irradiance , Depth和Normal(以光源为视点)。这里比较关键的是如何从Camera Space转换到Light Space,窃以为Paul's Project的关于空间转换的示意图很是经典,清晰明了,让人一看即明白,现摘录如下:


我这里使用OpenGL+GLSL来实现Translucent Shadow Maps,首先用FBO来渲染3张Texture:Irradiance Map, Depth Map和Normal Map,然后通过获取每个Fragment的Irradiance, Depth和Normal,根据上面所讲的公式来计算Rd,然后通过hierarchical filtering(通过MipMaps)来模拟Multiple Scattering,这里采用的是"Translucent Shadow Maps"论文中的21采样点过滤法,如下图所示:

最后的实现效果截图如下:



上图左边的3张图分别是:Depth Map, Irradiance Map和Normal Map(以光源为视点)。

下一步工作:

1。优化,提高效率;
2。支持纹理贴图;
3。支持动画。

欢迎广大同好交流、批评和指正,any comment will be welcomed!

---------------------------------------------------
Author: Skyman (吴俊)
版权所有,未经允许,不得转载
---------------------------------------------------
Tag标签: Subsurface Scattering,skin rendering

posted on 2008-04-21 03:24 Skyman 阅读(269) 评论(1)  编辑 收藏 所属分类: 研究

View Comments

#1楼    回复  引用  查看    
顶!
2008-04-21 10:17 | [ IceSharK - PP.Poet ]      
新用户注册  刷新评论列表  

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-21 10:03 编辑过
 
所属分类的其他文章:
· Realtime Subsurface Scattering Skin Rendering On the GPU 视频
· SSS Skin Rendering Improvement: Brighter Shading
· Fast Realtime Subsurface Scattering Skin Rendering
· Real Head Demo
· Skin Demo优化之一
· 实时皮肤SSS效果渲染Demo的改进
· 实时皮肤SSS效果渲染Demo
· 皮肤的SSS渲染效果改进
· 皮肤的实时3S渲染(OpenGL + GLSL)
· Fresnel效果和颜色色散简介
博客园首页  社区
 
 
Powered by:
博客园
Copyright © Skyman