热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【翻译】CryEngine3下的HumanSkinShader

HumanSkinShader1.概述HumanSkinshader是专门用于渲染皮肤表面的。由于皮肤是一个独特外观,并且不能通过常规shading来实现的。一个有趣

HumanSkin Shader

1.       概述

HumanSkin shader是专门用于渲染皮肤表面的。由于皮肤是一个独特外观,并且不能通过常规shading来实现的。一个有趣的特点是,这种shader允许我们基于黑色和红色素重新创建皮肤纹理颜色。这样我们可以获得更多的颜色变化而不需要更多的纹理。

 

使用skin shader的模型例子

2.       Shader参数

Shader 参数

描述

Subsurface multiplier

次表面散射强度乘数

Rim multiplier

边缘光照强度乘数(受环境贴图影响)

Wrinkles blend

设置表情皱纹贴图混合

Specular multiplier

设置镜面反射乘数

Light diffusion amount

光散射量

Rim Power

设置边缘光强度

Melanin

设置黑色度层级

Detail tilling U

设置细节贴图U

Detail tilling V

设置细节贴图V

Detail bump scale

设置细节凹凸强度

Wrinkles bump scale

设置皱纹凹凸强度

Wrinkles diffuse blend

设置皱纹变形与漫反射图混合强度

Inner layer depth

设置表面内层有多深或多近

Outer layer opacity

设置外层表边的不透明度

Inner layer anim frequency

设置内存动画频率(与深度有关)

Inner layer anim phase

移动动画(当前无用)

Inner layer diffuse

设置内层的颜色

 

3.       皮肤属性

它总是非常分散的,并且取决于皮肤的类型和颜色。在深色的皮肤上反射是十分特别的。油性和湿性也会影响皮肤的反射。嘴唇的颜色默认还要跟多的反射。它同样依赖于油性和湿性来变化更多或更少的反射,

根据皮肤表面的厚度我们能看到光线穿透表边并且有很有趣的细节,这个现象在明亮的肤色如耳,鼻,手处更明显。

4.       如何使用Skin Shader

Skin shader考虑了所有上边的属性,并且它简单易用,6个默认参数

Specular Multiplier: 设置镜面反射的强度,请注意这是非常微妙的(0.2以下),对于明亮的皮肤色和比暗色的皮肤色调更强一些

  

没有高光(multiplier {{ 0), subtle specular (multiplier }} 0.1)到极强的高光(multiplier = 1).注意微妙的高光带来的不错的Normal贴图细节,以及极强的高光会把这些细节又破坏掉了

Subsurface Multiplier: 设置次表面有多强,次表面部分来自此表面纹理的输入,越深的纹理越越少的次表面可见,查看次表边散射以获得更多信息。

 

没有次表面到最大次表面(multiplier {{ 0), maximum subsurface amount (multiplier }} 1.0) 注意次表面散射部分,你可以通过次表面纹理来调整此表面散射的强度。

Rim Power: 设置边缘照明的强度,越高变化的越锐利,查询RimLighting来获得更多信息。

  

没有边缘光找到最大边缘光找效果(multiplier {{ 0), medium rim (multiplier }} 0.5), max rim (1.0),注意角色上的边缘光照强度的效果

Hemoglobin: 设置血红色,越高分红色成分越多,越低红色成分越多。我们可以设定不同颜色类型而无需做太多纹理。

  

很少的血红色(-0.6),默认的血红色(0.0),较多的血红色(0.6),注意越少的血红色使的角色看起来更发黄,越多看起来越粉红。

Melanin: 设置黑色素越高,它看起来更暗,可以通过一些不同类型的颜色值来模拟,而不需要更多的纹理。

 

默认的黑色素(0.0) 更多的黑色素(0.5)

附加说明:

      你可以通过设置glossmapdiffuse texture的高光通道你可以去掩盖一些镜面反射和Rim的高光。

      镜面反射的高光是很微妙的,油性皮肤会影响更多,像鼻子,额头,嘴唇的区域。

      请参阅Rim Lighting部分获取更多细节

      请参阅Subsurface Scattering tuorial部分获取细节

      始终在中性条件下去做调整设置。

5.       Rim Lighting(边缘光照)

Rim Lighting 模拟了光在一些大角度位置的反射,这意味着他的轮廓形状会与背景分离的更加明显。

CryEngineSkin shader中支持这个功能,它是基于纹理的。这意味着我们需要mask-out那些我们需要它是边缘的像素。

注释:

           Rim的颜色来自于漫反射颜色和光的漫反射色

           通过设置glossmapdiffuse纹理的透明通道,你可以mask-out边缘的高光

           检查SkinShader上光与边缘照明的参数描述。

光从左侧来,光从右侧来

没有边缘照明                    有边缘照明

6.       Subsurface Scattering(次表面散射)

次表面散射基本上是传输过程中穿透了表面的效果,更具表面的类型和厚度,能见多随着增加或减少。

CryEngine基于shader支持皮肤,冰、植被等近似的模拟。

Skin Shader的次表面散射

使用起来非常简单,能得到最廉价的近似效果。以Wapped Diffuse Shader为基础使用了一个次表明映射来mask-out次表面范围。

你可以通过次表面贴图Mask-out次表面区域。纹理需要一个红色,并且依赖于你想要得到的可视化细节。你可以使用一个低分辨率的纹理,也可以使用一个高分辨率的纹理(如果你想要得到一个显示静脉效果的话)

         次避免需要依赖于diffuse texture颜色,这意味着越黑色的diffuse颜色,你看到次表面上部分越少。

         下面介绍SkinShader中此表面散射参数。

        

           

    一个次表面纹理的例子

        

          

  次表面部分没有次表面纹理      次表面部分应用了sss纹理

  

没有次表面和有次表面的最终效果。

7.       结束语

如果小心使用HumanSkin shader可以达到非常真实的效果。

它非常依赖输入的数据,主要是Diffuse/Normal/subsurface Map制作的是否精细。

 

作者:无花无酒
出处:http://www.cnblogs.com/WanaX/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

 

转:https://www.cnblogs.com/wanax/archive/2009/12/20/1628182.html



推荐阅读
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 汇编语言等号伪指令解析:探究其陡峭的学习曲线
    汇编语言以其独特的特性和复杂的语法结构,一直被认为是编程领域中学习难度较高的语言之一。本文将探讨汇编语言中的等号伪指令及其对初学者带来的挑战,并结合社区反馈分析其学习曲线。 ... [详细]
  • 作为一名 Ember.js 新手,了解如何在路由和模型中正确加载 JSON 数据是至关重要的。本文将探讨两者之间的差异,并提供实用的建议。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本题探讨了在大数据结构背景下,如何通过整体二分和CDQ分治等高级算法优化处理复杂的时间序列问题。题目设定包括节点数量、查询次数和权重限制,并详细分析了解决方案中的关键步骤。 ... [详细]
  • 本文介绍了如何利用Python的高精度计算库mpmath实现π的100种不同计算方法。通过设置更高的精度和优化的数学函数,这些方法能够提供极其精确的结果。 ... [详细]
author-avatar
游泳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有