热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

unity给头发添加物理_U3D实时渲染教程之角色头发各向异性表达(上)

Hello.大家好,我这次带来了完整的手游写实角色渲染合集,我是麦田。本次是写实头发的各向异性表达——Kajiya-Kay光照模型。一起来看这篇U3D实

Hello . 大家好,我这次带来了完整的手游写实角色渲染合集,我是麦田。本次是写实头发的各向异性表达——Kajiya-Kay光照模型。一起来看这篇U3D实时渲染教程之角色头发各向异性表达(上)。

这个系列主要分为三个部分:

1.头发的渲染

2.皮肤的渲染

3.眼睛的渲染

每个分为2个文章,第一篇讲基础理论,第二篇讲实际操作,最后的工程文件分别是Shader代码和Shader图表两种形式。

一、观察

在游戏内,出于性能的考虑。引擎不会做到和DCC软件使用离线渲染器渲染出来一样的毛发效果,如Maya的XGen这种质感。这时候我们就有了替代方案,即:使用面片头发。这就涉及到了如何去表达头发的质感问题。

毛发的各异

螺纹不锈钢的各异

二、分析

我们先从美术角度分析一下头发:

我们可以看到头发上的高光和传统的球体的高光不一样,头发的高光更近似一个不规则的条状(如果放置在一个平面上)。

而且条状的上下似乎有一定的渐变规律,暗-亮-暗。金属器皿上的高光波纹近似。我们着重介绍头发的理论基础。

上图圈1的区域是亮的,圈2是暗色,这里我们从观察可以得出头发的高光形状与明暗的变化。如果观察的仔细的话,可以回忆一下,生活中,看到姑娘的头发,会跟随看的方向和光产生偏移,以及透光性(散射)。

三、总结

从美术角度总结一下:

1.需要用面片做出好看的头发模型。

2.头发想要好看必须要有一个这种形状的高光,并且有明暗过度。

3.能受到灯光的影响,表达出她的透气感。

我们再从程序的角度分析一下头发:

找案例,Render Doc截帧,Profile,Frame Debug ,review源码,一气呵成(哈哈,开个玩笑)

既然说到这里,我们就引入GDC2004的那片PDF的内容吧——Kajiya-Kay模型传送门:

(注:worldBinormal就是我们要的副切线,这里写做了副法线)

可以看出利用cross(叉积)来得出向量,然后再乘上tangentSign得到最终确定方向的副切线。所以说副切线的方向主要是由tangentSign来决定的,而tangentSign是由v.tangent.w* unity_WorldTransformParams.w计算得出的。

这里的法线切线副切线的基础内容,在知乎的Taecg的一片文章介绍的非常详细了。我这里只是拾人牙慧简单捋一遍。传送请走:https://zhuanlan.zhihu.com/p/103546030

五、回归到公式理解

T,即为上文讲到的切线。但是这里是副切线,H是什么呢?H是光入射方向L和视口方向V的中间向量,通常也称之为半角向量(Half),半角向量被广泛用于各类光照模型如Blinn—Phong。

为什么会有这个H呢?我们来回想一下Blinn-Phong的光照模型和示意图:

Blinn-Phong和Ponng的区别就在于多了一个H

当视线正好与反射向量对齐时,半程向量就会与法线完美契合。所以当观察者视线越接近于原本反射光线的方向时,镜面高光就会越强。

获取半程向量的方法很简单,只需要将光线的方向向量和观察向量加到一起,并将结果归一化(Normalize)就可以了。

在引入半向量H之后,我们现在应该就不会再看到Phong光照中高光断层的情况了。下面两个图片展示的是两种方法在镜面光分量为0.5时的对比:

除此之外Blinn-Phong就没什么好说的了,Blinn-Phong与Phong唯一的区别就是,Blinn-Phong测量的是法线与半程向量之间的夹角,而Phong测量的是观察方向与反射向量间的夹角。

绕了一堆,不就是Blinn—Phong高光的计算公式么!

我们知道了这两个数值,回到公式,我们再看一下,是不是了然了?

哦!就是副切线和LightingDir+ViewDir的和,然后点积,然后平方,然后用1减去这个值后再开方!最后想要到这个效果我们再平方。

六、实践光照模型

我们用Graph复原一下逻辑,验证一下想法!

Graph逻辑图

这个高光模型我们给到一个球上观察,OK,基本的环状效果已经有了,剩下的就是加入comb map 来细化了。

观察

CombMap采样

写在后面:头发的光照模型我感觉更加近似一个经验值模型,是基于观察近似的算法而非基于理论模拟。我们可以在这个理论模型的基础上进行一些改进,让它更加符合我们想要的一个效果。原理虽然枯燥,但确实很重要。具体的改动,会在实操的第二章节介绍。

头发卡我卡得最难受的地方可能就是半透排序的方式了。思路是从模型下手加上双Pass解决。

七、完整内容效果

八、完整内容预习

以下是完整的Graph图表和Shader代码部分(手撸),有兴趣的朋友可以先看一下。具体工程下一篇讲完的时候放出来。

理解透彻光照模型后,具体实现的细节很容易了,下回见!

来源:Thepoly公众号



推荐阅读
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • 中科院学位论文排版指南
    随着毕业季的到来,许多即将毕业的学生开始撰写学位论文。本文介绍了使用LaTeX排版学位论文的方法,特别是针对中国科学院大学研究生学位论文撰写规范指导意见的最新要求。LaTeX以其精确的控制和美观的排版效果成为许多学者的首选。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 高效提取PDF页面的实用技巧
    在学习和工作中,我们经常需要与他人共享PDF格式的资料。然而,有时只需要分享部分内容,而不仅仅是整个文档。本文将介绍如何使用福昕阅读器领鲜版高效地提取PDF页面,以提高文件传输效率和查阅便捷性。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 本文介绍了MindManager在项目管理中的强大功能,特别是其内置的甘特图工具。通过该工具,用户可以轻松创建和管理项目计划,优化任务分配,并与其他软件无缝集成。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文介绍了在Java环境中使用PDFBox和XPDF工具从PDF文件中提取文本内容的方法。重点讨论了处理中文字符集及解决相关错误的技术细节,特别是针对某些特定格式的PDF文件(如网上填写的报名表和下载的论文)遇到的问题及解决方案。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
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社区 版权所有