人的皮肤之所以看上去比较柔和自然,主要是由于各层皮肤对光线的散射,通过实验测试表明,光线接触到皮肤时,有大约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!

转载于:https://www.cnblogs.com/skyman/archive/2008/04/21/skinrender.html

皮肤的实时3S渲染(OpenGL + GLSL)相关推荐

  1. 实时渲染、离线渲染、实时云渲染、混合渲染是什么?

    渲染,就是将 3D 模型转换成 2D 图像,并最终呈现在屏幕上的过程.虽然这里只有一句话,但是这一句话里面包含了太多的数学.物理和计算机方面的知识,它描述了我们用计算机来虚拟化真实世界的基本逻辑.渲染 ...

  2. OpenGL GLSL Shader Subroutines函数的实例

    OpenGL GLSL Shader Subroutines函数 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <shader.h> ...

  3. 美摄云非编系统——网页端实时编辑渲染方案

    美摄云非编是一款新型网页端非线性编辑工具,应用WebAssembly技术实现网页端直接渲染图像.本次LiveVideoStackCon 2020线上峰会我们邀请到了北京美摄网络科技有限公司的研发总监黄 ...

  4. OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式

    (原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html) OpenGL, GLSL, DirectX, ...

  5. 【专访蓝景科技】5G+实时云渲染赋能数字孪生,共建元宇宙

    2021年伊始,元宇宙 概念不断扩展探讨与深入,国内外科技巨头扎堆布局元宇宙. 元宇宙第一股------ROBLOX 上市.字节跳动 90亿收购国内TOP1VR厂商PICO.FACEBOOK改名为ME ...

  6. 专访深职院XR专家 | 实时云渲染赋能虚拟仿真实训,打造5G+XR智慧教育平台

    "职业教育与普通教育是不同教育类型,具有同等重要地位,是国民教育体系和人力资源开发的重要组成部分,是培养多样化人才.传承技术技能.促进就业创业的重要途径."--<中华人民共和 ...

  7. 一个实用的实时毛发渲染及着色方法

    一个实用的实时毛发渲染及着色方法 Thorsten scheuermann ATI Resarch,Inc. 翻译:潘曦 (译文里的(pancy:XXX)为译者注) 介绍: 我们提出了一个使用多边形模 ...

  8. 实时云渲染和本地渲染的区别

    不少用户不能理解,为什么要选用实时云渲染,而不用本地的电脑进行渲染显示?本文将通过各个方面来对比两种模式的优劣支持,帮助您更全面了解实时云渲染和本地渲染. 一.便携性对比 由于GPU对机箱空间有要求, ...

  9. 实时云渲染有哪些优势?

    随着元宇宙的兴起,作为六大核心技术之一的实时云渲染技术引发了剧烈的讨论.很多还在使用传统实时渲染的小伙伴们就有点蠢蠢欲动,试了到底是不是真的好用?每当新事物出现时,总有人会迟疑,但是越是迟疑越可能赶不 ...

最新文章

  1. Windows MySQL8.0安装出错解决方案(Start Server 失败)
  2. python 包管理工具poetry
  3. 【杂谈】有三AI知识星球最近都GAN了哪些内容?
  4. Atlassian和Slack达成战略伙伴合作关系
  5. 【ZZ】详解哈希表的查找
  6. 关于jQuery对象(类数组对象)以及DOM对象相互转化问题——[object Object]和[object HTMLInputElement]
  7. php关注 取消关注事件,微信公众平台开发关注/取消关注事件例子
  8. android外接键盘打汉字,Android在外接物理键盘时,如何强制调用系统软键盘
  9. 详解HelloWorldBasic实例
  10. 强大的Spring Boot启动监听器事件-初始化系统账号密码
  11. 【LA3487】最小割-经典模型 两种方法
  12. springcloud配置负载均衡 及方式_Springcloud-Ribbon负载均衡NODO
  13. mysql 要完 知乎_必知必会 MySQL笔记(未完)
  14. 基于ffmpeg+SDL的加密视频播放器的开发(一)
  15. 贴片铝电容识别及型号_贴片式铝电解电容常用型号封装
  16. 2022年计算机保研记录(计算所、浙大、华科、东南、北航)
  17. PRi——自行车码表
  18. 企业印章使用与管理办法
  19. 【CAN】PCAN连线
  20. 机器学习之金融信贷风控(一)互联网金融业申请评分卡的介绍

热门文章

  1. 【Linux】Linux中vim的使用
  2. 教你怎么在vi和vim上查找字符串
  3. 运行mysql数据库的命令_mysql 数据库常用命令
  4. Leetcode题库 145.二叉树的后序遍历(递归 C实现)
  5. TCP传输-出现差错的解决办法
  6. mysql 数据库dbhelp_C# VS连接数据库DBhelp
  7. 将台式机组成云服务器_云桌面是什么?用了两年云桌面的真实感受
  8. go channel 缓冲区最大限制_[Go区块链基础]go channel
  9. 证券回购市场repo market
  10. Android -ui控件