位置: 编程技术 - 正文
推荐整理分享unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
最近逃课做游戏,逃的有几门都要停考了,呵呵呵,百忙之中不忘超炒冷饭,感觉之前的人皮效果还是不够好,又改进了一些东西
首先上图
放大看细节
显而易见的比上次的效果要好很多,此次我把模型用3dmax进行了细化,模型裂缝情况有所好转,但是嘴唇等处还是有明显裂缝(没办法,网上没有比这个再细致的贴图了) 去除了之前所有大量的rim,换成了SSS次表面散射之前一篇文章详细讲过,SSS次表面散射的参数真心难调= =;漫反射换成了基于物理的Oren Nayar反射模型specular高光反射与之前一篇相同,这里简单介绍下 BRDF首先由Fred Nicodemus在年提出 L是辐射率,或射线方向中立体角的能量,E是辐照度,或每单位角度的辐照能,theta_i是法线与wi的夹角,i表明是入射光incident light,r表明是反射光reflected light。 Cook-Torrance模型 F(l,h)是菲涅尔函数,D(h)为分布函数,这个函数负责表面的光滑度,高光的形状与大小,也与粗糙度相关,可以达到完美镜面反射。G(l,v,h)是几何函数,diffuseOren–Nayar 反射模型由 Michael Oren和 Shree K. Nayar研发,是依据粗糙表面的漫反射模型,可以模拟很大范围的物体,混凝土,塑料,沙子等。它是基于物理的反射模型。现在大多数情况都在用Lambertian 模型,包括unity的diffuse,编写surface shader的都知道,有lambert光照。Lambertian 模型在所有方向均匀的反射所有光线,这种方法模拟的diffuse不怎么真实,没有根据roughness 粗糙度来计算漫反射。 真实图像与Lambertian和Oren–Nayar的比较 Oren–Nayar和Lambertian 的亮度曲线具体求法和wiki中的一样Sigma是表面粗糙度E0是正面照射时的辐照度Rho是表面反射中间的步骤比较简单 最终公式为 风之旅人journey 中的沙子渲染也用了这种方法 次表面散射(Subsurface Scattering) 光经过哪,就带一部分那里的颜色,可以发现光从入射到出射,位置和方向都变了光走的路径数量是无穷大,光反射回来的都为漫反射,油脂表面的透明度也都是不一样的,这就产生了次表面散射具体算法公式在这里此处不再赘述相要变得更真实还可以加一些noise进去加了bloom效果之后:
感觉此次效果还不是很完美,随着学习的深入还会继续改进;全部代码已上传至github
----by wolf
AddForceAtPosition方法:增加刚体点作用力 基本语法1、publicvoidAddForceAtPosition(Vector3force,Vector3position);2、publicvoidAddForceAtPosition(Vector3force,Vector3position,ForceModemode);其中参数force为扭矩向量,参数positio
unity3d特效延迟播放的脚本问题 特效很多情况下需要延迟播放,当然你可以直接在特效编辑的时候就有delay的时间设置,但有些时候我们需要自己控制这个时间。比如人物pause的时候,
Unity3d 调用 C++ DLL之 DLL回调Unity3d (C++ DLL回调 C#函数) 上篇Unity3d调用CDLL(Win平台)介绍了简单的Unity3d调用CDLL的方法,但是这样是不够的,这里再讲下通过函数指针让CDLL中回调Unity3d的方式。转自
标签: unity3d Human skin real time rendering plus 真实模拟人皮实时渲染 plus篇
本文链接地址:https://www.jiuchutong.com/biancheng/375733.html 转载请保留说明!上一篇:Unity3d 调用C++ DLL (Win平台)(unity调用c++封装的dll)
友情链接: 武汉网站建设