求助,unity3d 5.4 3s材质能不能做出3s材质的效果

Arnold&3s材质详细使用教程
一、先讲aiSkinSss shader:
1、AiSkinSss的参数面板:
AiSkinSss的参数并不算多,使用一段时间后觉得其设计思路非常清晰,很容易就能知道参数设置的意义及用法,下图1是AiSkinSss的参数面板及个人注释:
2、Sss实现原理:
Arnold默认采用点云的方式来实现3s效果(光线追踪方式的3s计算方式见本文第三部分),对模型表面点云进行球形着色,而Radius则就是模型表面点云中每个点上的球形着色半径,也就是说,半径足够大或者点云足够密的情况下,3s效果看起来是均匀的(因为球形相互叠加),但如果半径过小或者点云稀疏就会导致颗粒感,如下图2,左边是默认的aiSkinSss,右边改了下3s全局半径乘数:
Arnold for
Maya自带的shader中有两个可以实现次表面散射效果,一个是做皮肤专用的aiSkingSss,另一个是通用材质球aiStandard。这俩材质球在Arnold中的定位类似于Mentalray中的misss_fast_skin_maya和mia_material_x_passes。
从图2可以看到,左边的3s效果感觉深入皮肤很深,右边的3s效果变浅很多,如果是希望做成右边的浅3s效果,又不想颗粒感太强,需要调节物体shape节点下的SSS
Spacing(3s点云采样间距)参数,该参数默认是0.1。我们刚才把全局半径缩小了10倍,那么为了实现同样光滑的结果,可以把SSS
Sample Spacing也减小10倍,如图3:
3、关于三层次表面散射分量的关系:
Shallow Scatter、Mid Scatter、Deep
Scatter,实际上是同样的东西,可以理解aiSkinSss材质球包含三层次表面散射,区别就在于可以定义不同的Radius,通过改变Radius,可以把Shallow
Scatter变成Deep Scatter,Deep Scatter变成Mid
Scatter,等等。下图4中三层sss半径完全一致,分别给了R、G、B纯色,结果能够一定程度解释三层sss的关系:
4、关于Primary Reflection和Secondary
Reflection的关系:实际上就是两套反射与高光,比一套放射与高光更多控制而已,能做出比一套反射与高光更细腻的效果,例如一套采用光滑反射,另一套采用模糊反射等等。注意在Arnold中“高光”包含了传统意义上的高光以及Skydome
light作为HDR环节贴图的反射。Arnold中的“反射”更多指的是场景物体见的反射。
5、关于AOV(RenderPass)及合成:
AiSkinSss可以很方便的输出后期合成所必须的aov,包含了三层3s分量、两层反射-高光分量,一层直接漫反射照明分量和一层间接漫反射照明分量,见图5:
AiSkinSss输出AOV并在Nuke中的合成测试如图6:
从图6可见直接渲染图与AOV通道合成后的效果几乎无差别,合成师只要根据效果增加校色节点继续加工即可。
附aiSkinSss材质球测试渲染的图7-9,记住两张图中不仅有3s效果,同样有diffuse、reflection和specular。
图7:SSS Radius Multiplier=1.5
图8:SSS Radius Multiplier=4.5
图9:SSS Radius Multiplier=9
二、再讲aiStandard:
1、参数及释疑
如果说aiSkinSss
shader是arnold中专门用来做高可控性3s的材质的话,那么aiStandard就是兼职来做点带3s效果的材质球。AiStandard
shader中有关3s的参数很少,基本上就是aiSkinSss中三层3s分量的简化版,如图10:
表面上参数是少,不过要注意的是Radius参数有RGB三个值,分别对应aiSkinSss shader中的shallow
Scatter、Mid Scatter和Deep Scatter,也就是三个3s分量的半径!这三层3s在aiStardard
材质球中也只有半径这个参数可以单条了,其他的例如Weight和Color参数,都是共用的,因此这个材质球不如aiSkinSss能调的那么细,但是调一般的带3s属性的简单物体足够了。
高半径(高透度)测试如图11:
接着我尝试用aiStandard材质球尽可能的模拟aiSkinSss材质球的效果,对比见下图12:
图12:左图渲染时间4分21,右图渲染时间1分44
可见aiSkinSss实现的效果在颜色上还是细腻一些,不过aiStandard已经能做到比较接近。
2、关于AOV:
AiStandard的aov中针对3s效果的通道只有“sss”一个,图我就不截了,参考图5的aov面板,因此在后期合成灵活性上不如aiSkinSss----当然这仅仅说的是制作3s效果。
三、光线追踪方式的3s计算方法
Arnold中还存在另一种计算漫反射3s效果的方法,即Bidirectional Scattering Surface
Reflectance Distributed
Function(Function双向散射表面反射率分布函数),简称BSSRDF。
名字看着蛋疼不过没关系,有兴趣的同学可以看我后文所给出的知识链接。
BSSRDF计算3s的方法在arnold for maya的开启方式很简单,如下图13:
关于BSSRDF,火星时代summerraygl发的帖子说的很好:
“BSSRDF是Bidirectional Scattering Surface Reflectance Distributed
Function双向散射表面反射率分布函数的缩写。
说到BSSRDF就不得不先说BRDF。BRDF是Bidirectional Reflectance Distributed
Function双向反射率分布函数的缩写。
要完备地描述真实世界中的材料的反射性质,就必需描述在各个方向入射到材料上的光线在各个方向的反射强度按反射方向的分布情形。这就是所谓的“双向反射率分布”。其中完全镜面折/反射光强按折/反射角的分布情形是由物理学家A.J.Fresnel(菲涅耳)总结出来的,被称为菲涅耳公式。而计算机图形学中长久以来使用的光照模型(如,phong,lambert,blinn等)就是物理学范畴中的BRDF的近似。
然而,即使是物理学范畴中的BRDF都有不完备之处------它是在假定光线的入射和反射发生在材料表面同一点的前提下进行统计的。而光在射入真实世界中的绝大多数材料表面时都会扩散到材料内部,然后再经过各不相同的路径反射出来,总而言之不是限定在材料表面同一点发生。这样一来恐怕只有金属才是严格的BRDF,其它能发生或强或弱散射的材料都可归为BSSRDF。云,大理石,葡萄,牛奶,人体的各种生物组织都是明显表现半透明的材料,都是因高度散射造成的。要表现这些特性用BRDF显然力不从心。而BSSRDF却能兼容所有材料的属性,包括BRDF。可见不能忽视BSSRDF。
我在CG里更是重视半透明材料的表现。
BSSRDF还有一大优点就是它从一开始就是基于分布式光线追踪采样的,广泛用到Monte
Carlo估计手法,利于与常规光线追踪兼容,也能很好地与基于分布式光线追踪的GI和caustic协同工作。”
如果说Point
Cloud和BSSRDF都是用来“模拟”自然界中光线通过半透明介质所产生的效果的话,那么BSSRDF要比Point
Cloud方法更加物理一些,因此BSSRDF也是一种非常理想的计算3s的方法。只是…. BSSRDF方法太慢了,见下图14:
图14:左图渲染时间5分56,右图渲染时间5分21
Point Cloud vs. BSSRDF实现3s的优缺点对比:
Point Cloud
默认采样方式动画易闪
低精度噪点很明显
过渡平滑无噪点
如果有足够高的渲染力,BSSRDF方法是个不错的选择,不用花心思去避免闪烁。不过一般情况下还是Point
Cloud比较实惠,尤其做静帧。
有关更多Arnold及BSSRDF的相关知识请参考以下链接:
有关BSSRDF
Arnold杂谈
蒙特卡洛光线追踪
Monte-Carlo算法
-----全文完----
ps:附上Arnold人头渲染测试一张,模型及贴图素材均取自Eat3D的Mentalray皮肤材质渲染教程:
分辨率2k*2k,可接受的抗锯齿级别,渲染时间6分59秒
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。unity3d 怎么做出这样的金属效果_百度知道

参考资料

 

随机推荐