赞
踩
所需资源地址
https://learn.u3d.cn/tutorial/Unity-HairFX-Tutorial?chapterId=63562b25edca72001f21cff0#633689dfcf59160020e672f9
1.毛发渲染技术的难点在哪里
毛皮和头发是一个庞大的主题,在三维游戏、动画和数字人的制作中,毛发效果的表现一直是技术突破的难点之一。
导致毛发渲染的难点都有哪些?
首先,毛发的数量巨大(例:人体一般有8W~13W根头发);
其次,头发种类繁多,形式多样,不同颜色的头发对光线的吸收不同;
最后,头发运动的结算效果复杂多变、难以预测;
2.Unity的毛发解决方案有哪些
我们的游戏和垂直客户,横跨移动设备到高端主机平台,他们经常从 Unity 寻求解决方案。 这就需要Unity 有多个并行开发的头发解决方案以满足各种需求。
2.“Enemies” 毛发解决方案
该解决方案是为 Enemies 演示而开发的,目的是针对实际生产需求进行测试,作为(The Heretic、Book Of The Dead 等)的演示团队和(HDRP、Verticals、ShaderGraph)图形研发团队之间的协作,用于导入/创作/模拟/渲染基于头发的全新、全集成的解决方案 ,从高端数字人类和生物到风格化的小型游戏。该产品已经在 SIGGRAPH(8 月 8 日至 11 日)上公布。那么关于“Enemies” 毛发解决方案我也会在后续给大家进行讲解,所以还请大家持续关注。
那么我们今天介绍的是Unity 中国团队开发的 Unity China HairFX 毛发系统;
3.Unity China HairFX 毛发系统的简介
Unity China HairFX 是一个基于束的毛发系统,该头发系统基于开源的 AMD-TressFX 头发框架。 Unity China HairFX 支持通用渲染管线 (URP) 和高清渲染管线 (HDRP)。
支持的Unity版本为 2021.2.13f1 +
支持的URP/HDRP包版本为12.1.4 +
Unity China HairFX 毛发系统主要由两部分组成:
1.Maya_TressFX_Exporter:(在Maya里是做发型,导出引导线去Unity )
2.URP / HDRP HairFX Shader Package: (在Unity 渲染和Simulation )
目前基于 AMD-TressFX 头发框架已经广泛用于游戏场景中,其中比较知名的要数 PC 版古墓丽影 ;我们来看一组效果对比;
4.Unity China HairFX 毛发系统的效果展示
这是 Unity China HairFX 毛发系统在Unity编辑器测试效果;(官方案例)
Play
Mute
Remaining Time -0:00
1xPlayback RatePicture-in-Picture
Toggle theater mode
Fullscreen
这是 Unity China HairFX 毛发系统在真机上上的测试效果;这是在iphone12上的头发画面效果,并且帧率可以稳定在60帧;(官方案例)
Play
Mute
Remaining Time -0:00
1xPlayback RatePicture-in-Picture
Toggle theater mode
Fullscreen
接下来我们来看下 这个是韩国一家数字人公司采用AMD TressFX 使用Unity 做出的效果;(第三方案例)
Play
Mute
Remaining Time -0:00
1xPlayback RatePicture-in-Picture
Toggle theater mode
Fullscreen
那么接下来我们就来揭开 Unity China HairFX 毛发系统神秘面纱,看下我们是如何使用 Unity China HairFX 毛发系统;
5.如何在Maya中安装TressFX Exporter 插件
TressFX Exporter 插件安装步骤:
第一,下载Maya 的 TressFX Exporter 插件:
https://github.com/Unity-China/cn.unity.hairfx.core/tree/main/Maya_TressFX_Exporter~
第二,复制plug-ins文件夹到C:\User\YOUR_USER_NAME\Documents\maya\
(注意:与 Maya 2022 不兼容,目前支持Maya版本为2019)
第三,打开Maya软件,在顶部菜单中会出现TressFX Tool 菜单选项;(如果没有出现,在顶部菜单中找到Windows>Settings/Preferences>Plug-in Manager,然后勾选TressFX_Exporter.py的Loaded选项卡,重新启动Maya)
第四,点击TressFX 菜单选项,选择Export Hair/Fur将选择的发行曲线导出为TFX文件;
6.如何在Maya中使用TressFX Exporter
那么我们已经在maya 中安装完成了AMD TressFX plugin,那么接下来我就给大家介绍下如何使用AMD TressFX plugin;
大致分为3个步骤:
→使用任意头发梳理工具来制作想要的发型曲线(如Maya Xgen、Zbush…)
→使用AMD TressFX plugin for Unity进行导出
→将导出的TFX文件导入Unity并在Unity中进行渲染调节设置
我们可以使用任意头发梳理工具来制作想要的发型曲线,然后用我们的插件将其转换为TFX文件。
比如可以使用 Maya 的 XGen 工具来制作你的发型曲线,也可以使用Zbush软件制作你的发型曲线(关于如何使用头发梳理工具来制作发型曲线,不是本教程的重点)
以下是一些关于如何使用XGen工具来制作发型曲线的教程:https://80.lv/articles/80-level-ratings-10-great-tutorials-on-hair-creation-using-xgen/
→接下来我们可以将上一步骤中所制作的头发的引导线导出为 Maya 的 MEL 文件
→将 MEL 文件重新导入 Maya 场景后,我们可以看到我们创建的引导线会变为一条条蓝色的曲线(如右下角颜色所示)
如右图所示:我们以短发发型为例来给大家讲解下,如何使用TressFX Export Plugin导出头发组;
这里的短发发型引导线主要分为四组制作,分别是Bangs刘海、Top头顶头发、Back头背头发、Flyways碎发;
我们依次导出这四组头发:
→首先我们选中Bangs组 →然后在顶部菜单中找到TressFX菜单,选择TressFX->Export Hair/fur窗口, →然后选择Number of vertices per strand / 每股的顶点数。像这样的短发我们一般选择4或者8,对于长辫子,我一般选择16;
注意:Invert X-axis of Hair 选项默认为启用
我们依次导出这四组头发:
→点击Export! 会弹出对话框,这里我们设置完成文件名Bangs,点击Save后,我们就可以在对于的文件夹下找到这个后缀为.TFX的文件了;
→接下来我们依次导出其他三组头发(将头发组保存为 TFX 文件的步骤与导出Bangs的步骤相同),导完之后就可以在 Unity 中使用它们了;
7.如何在Unity 中创建HairFX Profile文件
这里我们以高清渲染管线HDRP为例:
第一,创建一个HDRP的Unity工程,这里我使用的Unity 版本是Unity 2021.3.4f1c1,并导入我们的角色模型贴图等素材;
第二,创建好工程后,打开该Unity新建项目的文件夹,找到Packages文件夹下的manifest文件,为工程添加HDRP / URP HairFX Shader Package;
第三,打开manifest文件后,将以下内容添加到manifest文件中:
“dependencies”: {
“cn.unity.hairfx.core”: “https://github.com/Unity-China/cn.unity.hairfx.core.git”,
“cn.unity.hairfx.hdrp”: “https://github.com/Unity-China/cn.unity.hairfx.hdrp.git”,
…
}
如果你的项目是URP工程,则需在manifest文件中添加如下依赖:
“dependencies”: {
“cn.unity.hairfx.core”: “https://github.com/Unity-China/cn.unity.hairfx.core.git”,
“cn.unity.hairfx.urp”: “https://github.com/Unity-China/cn.unity.hairfx.urp.git”,
…
}
添加完成后,Unity项目会进行重载,重载完成后我们可以在Package Manager 中看到已经加载完成了HariFX包
这里我们以《Defender》资源包为例来给大家进行演示,该资源包包含多种发型供大家尝试;我们可以在Github上免费下载工具和角色资源包(该工程已经添加HDRP / URP HairFX Shader Package)
HDRP版:https://github.com/UnityTechnologies/HDRP-Defender-Character-Demo
URP版:https://github.com/UnityTechnologies/URP-Defender-Character-Demo
第一:添加HDRP / URP HairFX Shader Package之后,接下来我们就可以在Asset 下创建HairFX Profile文件;
第二: Profile创建完成后对其进行重命名;这里我们以短发为例,所以我们重命名为Bob HairFX Profile文件;
将课时标记为未完成
8.Unity China HairFX Profile文件的参数介绍
对于一种发型,我们通常将其设置为一个 Unity Hair Profile 文件,每个Unity Hair Profile 文件其中包括全局设置、局部设置模块
设置头发模型和头发模拟两个部分;
我们接下先来观察和了解下这个Unity Hair Profile文件的参数以及含义;
Hair Status:头发的状态统计
Guide Strands 引导线股数;
Guide Vertices 三角面数
Total Strands 总头发的股数
Global Geometry Settings:全局头发股数设置
Hair Count 发丝的数量
Hair Offset 头发偏移(发丝间的距离)
Tessellation Per Strand:每束发丝细分:用于调整发丝柔顺度。低数值能让游戏运行更流畅,高数值能让头发更加柔顺。你可以在优化时寻找最合适的中间点。
Lock Hair Tip 是否锁定发梢
每次修改完成后点击Apply 应用
对于头发模型的整体,我们一般只调整Hair Count(头发数)、Hair Offset(头发偏移)、Tessellation Per Strand(每束发丝细分)及Hair Thickness(头发厚度)(下文介绍这个参数)四项设定。
Global Geometry Settings:头发实体的全局设置
Enable LOD :是否开启LOD
LOD Distance:LOD距离设置
LOD Distance Range :设置LOD的距离
LOD Strand Reduction: LOD 发丝股数减少系数
LOD Hair Width Multiplier: LOD 发丝宽度调节系数
Enable Thin Tip:是否开启发梢变薄
Hair Thickness:发丝厚度
Tip Length:发梢长度的调节
每次修改完成后点击Apply 应用
Global Simulation Settings:发丝全局模拟设置
Location Stiffness:位置刚度
Shape Stiffness:形状刚度
Damping:阻尼调节
Gravity Magnitude:发丝重力大小调节
Tip Separation:发梢分开(蓬松感)
在头发模拟方面,我们通常会保留大部分默认设置。
我们经常调整的是Location Stiffness(位置刚度)、Shape Stiffness(形状刚度)和Damping(阻尼)。
对于松散的头发,我们会将Location Stiffness和Shape Stiffness设为相似的数值,短发数值更大、长发数值更小。
而对于发辫,Location Stiffness数值与散发一致,Shape Stiffness则会被保留为1来保持辫子的形状。
Damping设定了头发随头部动作运动的快慢。对于普通干发,Damping数值一般为0.040.06。若想让头发像在水底或衣物那样运动,可以将Damping提高到0.10.15。
将课时标记为未完成
9.如何使用Unity China HairFX Profile设置头发
以HDRP Demo 为例:
第一,在角色Soldier下创建Hair Styeles空物体;
第二:将角色头部Mesh命名为Bob,并设置为Hair Styeles的子物体;
第三: 选中Bob ,在Inspector面上点击Add Compent 添加 HairFX Groom、HairFX Simulation两个脚本; HairFX Groom相当于HairFX Profile的容器; HairFX Simulation脚本的作用是控制头发物理效果的模拟,比如这里有关于Wind settings 风动设定用于控制Wind Magnitude(风力)和Pulse Magnitude(摆动幅度)的大小;
第四:将之前创建的Bob HairFX Profile,添加到HairFX Profile组件中的Hair Profile中;
Unity Hair Profile 可以连接多个 Unity Hair Assets,也就是我们从Maya导出的 .TFX 文件。如右图所示,我们为Bob Profile的Unity Hair Profile 文件添加 Back、Bangs、Top、Flyways四个Asset资产;如果你还想继续添加其他Asset资产,可以点击“+”号按钮。
我们将头发导出为不同的 TFX 文件的原因是为了我们可以自由地对头发的不同部分进行不同的模型效果的设置和模拟发丝物理效果的设置。
我们可以为头发的各个分组指定不同的材质,但材质的数量必须与头发资产的数量相同。
如右图所示,以Bob 发型为例,我们需要在Inspector>Mesh Renderer>Materials List下添加四个材质分别对应于Bob发型的四个Asset资产 Back、Bangs、Top、Flyways。
这里我们为Bangsl刘海为例为大家演示如何创建头发材质;
1.在Asset下点击Create创建Material,重命名为Asian Cherry;(这里我为刘海设置樱花粉颜色
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。