当前位置:网站首页>unity 头发的渲染
unity 头发的渲染
2022-08-05 07:27:00 【暮志未晚Webgl】
光照模型
Kajiya-Kay 一般使用的光照模型
为不透明的完美圆柱体。
只考虑反射,没有考虑透射,没有考虑内部反射,没有考虑吸收。
Marschner 基于物理的渲染
理论模型:头发不是完美的圆柱体,头发是堆叠的圆锥体。每一根头发纤维由角质层cuticle(外面的堆叠)以及内部的皮层cortex组成
R 为反射路径,反射出来的管线颜色为原始光源颜色
TRT 光线进入头发纤维内部,部分能量被吸收,所以最终反射出的光线具有头发纤维的颜色。
TT 透射后然后透射路径你,TT出来的光线也是有色的,但是颜色比TRT的饱和度要抵,只经过一次折射。
Alpha处理 处理头发最麻烦的问题在于对头发的半透明排序的问题处理,所以一般渲染头发不选择使用半透明进行头发渲染。使用AlphaTest然后加上TAA抗锯齿边缘处理。
和物理材质不同的接口:
scatter 替代了物理材质里面的metallic属性。
scatter控制有多少光穿过整个头发。浅色的头发,scatter数值偏高,深色的头发,scatter数值偏低。此处遵循了物理规则,深色的头发会吸收更多的光。
修改头发的颜色,不单单要修改颜色或者漫反射贴图,还需要修改scatter属性。
tangent 替代了normal属性,渲染头发使用的是切线而不是法线。用于代表头发生长的方向。或者使用一张flowmap贴图。不会使用物理材质中的法向。
制作流程:
首先绘制头发发丝的形状贴图,然后烘焙出图集。
生成头发纹理图集
效果最好的使用maya的Xgen + Arnold/xNormal
Fiber Shop
Blender Hair Tool
Hair Stand Designer Tool
Hair&Fur plugin制作头发的面片



面片也可以做成交叉型的,更有立体感
通过引导线去生成,视频可以看到使用Xgen去生成引导线。这种方式不需要手动摆放发型,但是还是需要调整。
查看视频:https://www.bilibili.com/video/BV1sJ411S7xu
- 手动摆放位置和调整 分层叠加
生成的发线的数据,注意头发一般都是从上到下的顺序表现在贴图上面,如果不是,那么需要使用一张FlowMap或者DirectionMap生成。
id代表发丝的位置,比如0.1代表一种发丝 0.2代表另一种通过此修改uv去获取。
flowmap用于纠正头发的方向信息。
ue的头发渲染方案
Albedo贴图 存储头发的颜色
AlpahMap 存储头发面片的透明度
Root Map/Gradient Map 头发根到发梢的渐变信息 可以实现头发变色效果
Depth Map 深度纹理贴图,用于表现当前面片的头发层次。可以以此修改头发颜色和阴影值,镜面反射。
UNique ID Map ID纹理只是为给定头发几何体上的每根头发提供唯一的0-1的值。用于处理头发的细微变化。
flowMap / DirectionMap 主要用于对头发的各向异性高光的纠正。
边栏推荐
猜你喜欢

Use of thread pool (combined with Future/Callable)

It turns out that Maya Arnold can also render high-quality works!Awesome Tips

Redis数据库学习

Redis常用命令

Mysql 死锁和死锁的解决方案

每月稳定干2万

Redis 全套学习笔记.pdf,太全了

TRACE32——通用寄存器查看与修改

MobileNetV2架构解析

After working for 3 years, I recalled the comparison between the past and the present when I first started, and joked about my testing career
随机推荐
Summary of Text Characterization Methods
行业应用软件项目经理三步曲
Algorithm Supplements Fifteen Complementary Linked List Related Interview Questions
Flink Learning 11: Flink Program Parallelism
Hash these knowledge you should also know
RNote108---Display the running progress of the R program
mysql使用in函数的一个小问题
Redis数据库学习
DeFi 前景展望:概览主流 DeFi 协议二季度进展
栈与队列的基本介绍和创建、销毁、出入、计算元素数量、查看元素等功能的c语言实现,以及栈的压入、弹出序列判断,栈结构的链式表示与实现
【instancetype类型 Objective-C】
U++ UE4官方文档课后作业
AI+视频技术助力保障校园安全,校园智能安防平台该如何建设?
唤醒手腕 - 微信小程序、QQ小程序、抖音小程序学习笔记(更新中)
专用机终端安装软件后报IP冲突
2022熔化焊接与热切割操作证考试题及模拟考试
Cannot compare or sort text, ntext, and image data types
MySQL: join query | inner join, outer join
TRACE32——通用寄存器查看与修改
U++ 创建UI