首页 > 其他分享 >unity 皮肤材质效果实现分析

unity 皮肤材质效果实现分析

时间:2023-01-30 19:31:34浏览次数:52  
标签:贴图 高光 效果 皮肤 散射 unity https 材质


相关资料

​https://therealmjp.github.io/posts/sss-intro/​​​ 里面讲解了次表明散射的概念原理,以及发展过程。到了实时渲染,早期的基于纹理空间的扩散,到现在经常会应用于移动端的预积分的次表明散射(就是有一张图的表,从上面取色,还需要一个曲率的东西去控制),然后就是屏幕空间的次表明散射(为了生成更好的曲率)。
https://www.iryoku.com/stare-into-the-future
讲解了如何渲染真实的皮肤效果
要说皮肤渲染,还是得看ue4,接下来看一下ue的相关
https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/Materials/HowTo/Human_Skin/
这个是直接告诉你了怎么在ue里面实现皮肤材质
https://docs.unrealengine.com/4.26/en-US/Resources/Showcases/PhotorealisticCharacter/
https://docs.unrealengine.com/4.26/en-US/Resources/Showcases/DigitalHumans/
https://texturing.xyz/pages/saurabh-jethani-creating-realistic-skin-in-ue4

渲染特性

次表面散射

我们正常渲染pbr物理材质brdf,只是做了表面效果,表面漫反射,表面高光。次表面散射就是光线进入物体内部,在物体内部进行反射后,又反射出来,带有一定内部的颜色的效果。

第一种方法是,基于屏幕空间的次表明散射(sssss),这种效果也是在ue里面使用到。原理就是不模拟物理上的真实的散射,而是根据当前位置和光线入射点的位置去计算出一个差不多的效果。这种效果需要一个Diffusion Profiles(扩散配置文件)来描述次表面散射行为中光线与散射距离的关系。

unity 皮肤材质效果实现分析_虚幻


扩散配置纹理里面会配置滤波器的总宽度(散射范围),每个颜色的衰减,以及进入到皮肤内的光线的多少(越年轻的可以调的越大)。然后在屏幕空间中获取深度,采集周围的像素深度计算出曲率,来设置效果渐变。如果曲率越大,散射效果越弱。第二种方法就是使用预先积分的次表明散射,和屏幕次表明散射的区别在于,不使用Diffusion Profiles(扩散配置文件)而是修改为使用一张LUT贴图来描述当前的散射效果。图如下,

unity 皮肤材质效果实现分析_虚幻_02


通过法向和光线的点积确定横向坐标位置,通过曲率确定纵向。曲率可以通过软件烘焙出来,比如Knald,或者直接在shader中计算得出一个曲率。如果达到一个好的效果,推荐直接使用屏幕空间深度计算来获取,虽然耗性能,大家还是根据效果和性能折中即可。

为了达到质感柔和的效果,我们需要通过使用不同模糊的法线贴图,来进一步模拟Diffusion Profiles(扩散配置文件)。

unity 皮肤材质效果实现分析_材质_03


高光的法向贴图就是默认贴图,红色透性最强,所以,它的贴图的模糊也最高,蓝色的最小,模糊度也最低,(红色的可以通过mip层级获取,蓝色和绿色可以通过红色和默认的lerp操作获取)然后我们把这些法向贴图获取到的高光进行融合,获取到一个更加不错的效果。

高光

双层高光进行混合,增加皮肤质感,第一层主要控制,占85%,第二层次要,占15%。它们也要给予能量守恒。
高光颜色强度 F0 (在ue里面有这个接口,值默认是0.5)默认是通用的0.04,皮肤的需要设置成 0.35,对应高光的起始值就是 0.028 。

细节贴图

细节贴图要实现皮肤的细节,就是有毛孔的效果的皮肤,然后和默认的法向贴图融合,实现一个细节的模拟。

粗糙度

粗糙度建议从0.4开始调整。贴图建议不用表现太多细节,只用来划定区域,值低的范围的就是光滑度高,值高的地方,就混合细节贴图高一些,也显得皮肤更加真实。

CavityMap

用来表现皮肤微观细节的ao信息,这个主要用来表现高光部分细节,在高量的部分展现更多的细节。所以,可以用来控制高光反射强度。

AO

环境光遮蔽,首先就是烘焙的贴图,然后需要屏幕空间ao,混合得出。

涂层 ClearCoat

用来实现脸部化妆的效果。腮红,唇膏等等。

unity 皮肤材质效果实现分析_配置文件_04


涂层是在光进入的时候,首先进行了涂层的反射,一般为镜面反射,然后再进入表面,制作的时候注意能量守恒。


标签:贴图,高光,效果,皮肤,散射,unity,https,材质
From: https://blog.51cto.com/u_15948039/6027764

相关文章

  • unity urp 衣服渲染
    正常衣服的布料分类:棉,羊毛,绒丝绸尼龙皮革还有一些特殊的比如富贵的貂那种绒毛,还有一些闪闪发光的那种。首先说一下基础的棉类的衣服。质地偏软,和之前默认的硬表面有很......
  • unity URP前向渲染流程以及获取屏幕空间UV和深度
    前向渲染流程cpu上进行剔除和排序,剔除为,相机的视椎体剔除,将相机视角外的模型剔除掉,不再渲染。遮挡剔除,将视椎体内不可见的模型剔除掉,不再渲染。排序为了保证性能,不透明为从......
  • unity urp 实现车漆效果
    车漆的效果除了基础的pbr效果,上面还可以添加两层额外的效果。一层是清漆的效果,另一层就是薄膜干涉的效果。这个就是薄膜干涉的效果,可以明显的看出来颜色被分散开来。这里......
  • unity urp 实现衣服上面片的效果
    在看模特秀的时候,有时候身上会有那种布灵布灵的面片效果。下面两张是我在丝绸的时装秀里面截取的两张模糊图,凑合看一下吧。如果需要在渲染里面去实现这种效果,该如何实现呢......
  • 35 Three.js的融合材质
    简介在上一节,使用three.js的60版本,我们成功的实现了THREE.MeshDepthMaterial的案例。但是,我们没有办法修改它的材质的颜色。而一切都是由材质的默认属性决定的,但是Three.js......
  • 在unity 2020 urp版本中实现 LensFlare功能
    这个官方里面没有支持,只能自己去解决。效果请查看地址:https://www.bilibili.com/video/BV1w24y1o7pY/下面说一下我的实现过程。找来找去,我找到了一篇不错的解决方案,还带源......
  • unity中实现ue眼球的渲染
    此图取至ue官方网站在shader里面我们还是需要使用英文,中英文对照:巩膜:sclera角膜缘:limbus虹膜:iris瞳孔:pupil角膜:cornea渲染效果。模型方面:使用一个突出的眼球模型来......
  • Unity 热更新方案
    一、Lua:内置一个Lua虚拟机。典型的框架有xLua,uLua。 二、ILRuntime:内置一个.net字节码解释器,解释执行.net字节码。三、puerts:内置一个JavaScript/TypeScrip......
  • The GPG keys listed for the "MySQL 5.7 Community Server" repository are already
    报错TheGPGkeyslistedforthe"MySQL5.7CommunityServer"repositoryarealreadyinstalledbuttheyarenotcorrectforthispackage.Checkthatthecorrec......
  • 图集Sprite作为材质贴图显示
    效果使用的图集 测试shader注意:如果Sprite带有透明度,注意使用Blend,否则透明部分将显示为黑色Shader"My/SpriteToMatTex"{Properties{_MainT......