Unity毛发系统TressFX Exporter

Unity 数字人交流群296041238

一:在Maya下的TressFX Exporter 插件安装步骤:

1. 下载Maya的TressFX Exporter插件

下载地址:TressFX Exporter  

链接:https://github.com/Unity-China/cn.unity.hairfx.core/tree/main/Maya_TressFX_Exporter~

(注意:与 Maya 2022 不兼容,目前支持Maya版本为2019)

2. 移动文件

复制plug-ins文件夹C:\User\YOUR_USER_NAME\Documents (文档) \maya\

 3. 加载插件

打开Maya,在顶部菜单中会出现TressFX Tool 菜单选项;(如果没有出现,在顶部菜单中找到Windows>Settings/Preferences>Plug-in Manager,然后勾选TressFX_Exporter.pyLoaded选项卡,重新启动Maya

 4. 导出TFX发行曲线文件


二:在Maya中使用TressFX Exporter

既然已经在maya中安装完成了AMD TressFX plugin,那么接下来按照官网课程, 就要给大家介绍下如何使用AMD TressFX plugin了; 

大致分为以下3个步骤:

  1. 使用任意头发梳理工具来制作想要的发型曲线(如Maya Xgen、Zbush…)
  2. 使用AMD TressFX plugin for Unity进行导出
  3. 将导出的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 中使用它们了;


三:在Unity中创建HairFX Profile文件

官方这里是以高清渲染管线HDRP为例:

  1. 创建一个HDRP的Unity工程,这里我使用的Unity 版本是Unity 2021.3.4f1c1,并导入我们的角色模型贴图等素材;
  2. 创建好工程后,打开该Unity新建项目的文件夹,找到Packages文件夹下的manifest文件,为工程添加HDRP / URP HairFX Shader Package

注意: URPHDRP的操做基本一致, 不过我这边用的Unity版本是Unity 2021.3.6f1c1.

//---------------------------------------------HDRP
"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
"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如果报错如下提示(包括:超时、解析错误)

解决方案:

        打开GitHub Desktop软件,然后分别从网址上拷贝下来,接着通过Package Manager的左上角+号,从本地导入,点击Add package from disk...之后,找到你拷贝下来的文件夹,选择其中的package.json,稍作等待之后,包体就被加入到了Unity

 

此时,你的该Unity新建项目的文件夹,找到Packages文件夹下的manifest文件,其大致内容为下图所示。

这里官方以《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

 在Asset下创建一个HairFX Profile文件,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

发梢长度的调节

Global Simulation Settings

发丝全局模拟设置

Location Stiffness

位置刚度

Shape Stiffness

形状刚度

Root Rigidness

发根坚硬程度  ( 非官方翻译,如有不准请见谅 )

Acceleration Constraints

头发加速度约束  ( 非官方翻译,如有不准请见谅 )

Length Constraints

长度约束  ( 非官方翻译,如有不准请见谅 )

Damping

阻尼调节

Gravity Magnitude

发丝重力大小调节

Tip Separation

发梢分开(蓬松感)

Length Offset

长度偏移  ( 非官方翻译,如有不准请见谅 )

在头发方面,官方建议我们保留大部分默认设置

我们经常调整的是Location Stiffness(位置刚度)、Shape Stiffness(形状刚度)和Damping(阻尼)。

对于松散的头发,我们会将Location StiffnessShape Stiffness设为相似的数值,短发数值更大、长发数值更小。

而对于发辫,Location Stiffness数值与散发一致,Shape Stiffness则会被保留为1来保持辫子的形状。

Damping设定了头发随头部动作运动的快慢。对于普通干发,Damping数值一般为0.04 ~ 0.06。若想让头发像在水底或衣物那样运动,可以将Damping提高到0.1 ~ 0.15


四:如何使用Unity China HairFX Profile设置头发

  1. 在角色Soldier下创建Hair Styeles空物体;
  2. 将角色头部Mesh命名为Bob,并设置为Hair Styeles的子物体;
  3. 选中Bob,在Inspector面上点击Add Compent添加 HairFX Groom、HairFX Simulation两个脚本; HairFX Groom相当于HairFX Profile的容器;HairFX Simulation脚本的作用是控制头发物理效果的模拟,比如这里有关于Wind settings风动设定用于控制Wind Magnitude(风力)和Pulse Magnitude(摆动幅度)的大小;
  4. 将之前创建的Bob HairFX Profile,添加到HairFX Profile组件中的Hair Profile中;
  5. Unity Hair Profile 可以连接多个 Unity Hair Assets,也就是我们从Maya导出的 .TFX 文件。如右图所示,我们为Bob ProfileUnity Hair Profile 文件添加 Back、Bangs、Top、Flyways四个Asset资产;如果你还想继续添加其他Asset资产,可以点击“+”号按钮。
  6. 将头发导出为不同的 TFX 文件的原因是为了我们可以自由地对头发的不同部分进行不同的模型效果的设置和模拟发丝物理效果的设置。
  7. 我们可以为头发的各个分组指定不同的材质,但材质的数量必须与头发资产的数量相同。
    如下图所示,以Bob发型为例,我们需要在Inspector>Mesh Renderer>Materials List下添加四个材质分别对应于Bob发型的四个Asset资产 Back、Bangs、Top、Flyways

这里我们为Bangsl刘海为例为大家演示如何创建头发材质;

  1.  在Asset下点击Create创建Material,重命名为Asian Cherry
  2. 材质的Shader我们设置为URP>SG_PhysicalHair
  3. 修改Hair Color、Root Color、Tip Color的颜色;看个人喜好自己设置就可以,也可以不设置。
  4. 同样的步骤我们创建Asian Green头发材质;颜色还是按照个人喜好而来。
  5. 接下来我们Bob Gameobject的Mesh Renderer的材质列表中设置材质;

    示例中分别为Bob的四个Asset资产 Back、Bangs、Top、Flyways设置了Asian Green、Asian Cherry, Asian Green、Asian Cherry材质,从而达到如下效果;
    注意这里是四个材质,不是四种材质,当然你也可以添加四种不同材质来表现头发不同部分的不同效果;

  6. 官方教程中使用的是HDRP内置的头发着色器。如果你想编写自己的着色器,请一定要按以下参数进行设置:

    Graph Settings

    ● Material : Hair

    ● Material Type: Physical

    ● Advanced Options/ Geometry Type: Strands

    Master Stacks

    ● Custom Function node:

    ○ Name: GetExpandedVertex

    ○ Source: VertexStrsndGroom (hlsl file)

    ● Hair Strand Direction: 1,0,0

    如果你想编写自己的着色器是URP的,也请一定要按以下参数进行设置:

    Graph Settings

    ● Material : Physical Hair

    ● Geometry Type: Strands

    Master Stacks

    ● Custom Function node:

    ○ Name: GetExpandedVertex

    ○ Source: VertexStrsndGroom (hlsl file)

    ● Hair Strand Direction: 1,0,0

  7. 到此,本节课程已经基本完成,剩下的就需要我们自己去探索,去摸索了,希望数字人,元宇宙相关产业越来越好吧,也希望我们更好。

 


五:特别声明

本文参考Unity China HairFX 毛发系统使用说明 而来,并且成功跑通,下面引用毛发系统的特别声明。


希望大家:点赞,留言,关注咯~    
😘😘😘😘

唠家常

今日分享结束啦,小伙伴们你们get到了么,你们有没有更好的办法呢,可以评论区留言分享,也可以加QQ:841298494,大家一起进步。

  • 客官,看完get之后记得点赞哟!
  • 小伙伴你还想要别的知识?好的呀,分享给你们😄

今日推荐

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
### 回答1: Unity社区中有一个称为UnityFBXExporter的工具,它允许开发者将Unity项目中的模型和动画以UnityPackage的形式进行导出。 UnityPackage是Unity的一种打包格式,用于共享和分发Unity项目中的内容。通过使用UnityFBXExporter,我们可以将Unity中的模型和动画转换为FBX格式,然后将其打包为UnityPackage,方便其他开发者在不同的Unity项目中使用。 UnityFBXExporter提供了简单易用的界面,通过几个简单的步骤,开发者可以选择要导出的模型和动画,选择导出的FBX选项(如轴向、坐标系等),然后指定导出的目标文件夹和文件名。 使用UnityFBXExporter导出的UnityPackage可以包含多个模型和动画,在导入到其他Unity项目时,可以轻松地选择和使用其中的内容。导入UnityPackage后,开发者可以直接在Unity编辑器中使用导出的模型和动画,无需重新创建或导入资源。 UnityFBXExporter对于需要与其他开发者共享或分发Unity项目中的模型和动画的情况非常有用。它简化了导出和共享Unity资源的过程,节省了开发者的时间和精力。 总而言之,UnityFBXExporter是一个能够将Unity项目中的模型和动画转换为FBX格式,并以UnityPackage形式进行导出的工具,方便开发者在不同的Unity项目中共享和分发这些资源。 ### 回答2: Unity3D是一款非常流行的游戏开发引擎,开发者可以使用该引擎创建各种类型的游戏和应用程序。UnityFBXExporterUnity的一个插件,它允许开发者将Unity场景中的3D模型,材质和动画导出为FBX文件格式。而UnityPackage则是一种Unity特有的文件格式,用于导出和共享Unity项目。 UnityFBXExporter插件的作用是为了方便开发者与其他建模软件(例如Maya或Blender)之间的工作流程,开发者可以在Unity中制作和编辑3D模型,并使用UnityFBXExporter插件将其导出为FBX文件。这样,开发者就可以在其他建模软件中进一步处理和修改模型,然后再将其导入到Unity中进行使用。这个插件可以帮助开发者提高工作效率和灵活性。 而UnityPackage可以理解为存储Unity项目的一种压缩文件,其中包含了Unity项目中的所有资源以及其配置信息。开发者可以创建一个UnityPackage,并将其分享给其他开发者或在不同的Unity项目中使用。UnityPackage可以包含各种类型的资源,如场景、脚本、材质、纹理、声音等。通过使用UnityPackage,开发者可以轻松地共享和复用自己的项目,也可以从其他开发者那里获取他们创建的资源。 总的来说,UnityFBXExporterUnityPackage是Unity开发者在工作中使用的重要工具和文件格式。UnityFBXExporter插件使得Unity与其他建模软件之间的工作流更加方便和高效,而UnityPackage则是一种用于共享和复用Unity项目资源的文件格式。这些工具和文件格式的使用帮助开发者更好地进行游戏开发。 ### 回答3: UnityFBXExporterUnity中的一个插件,它的主要功能是将Unity中的游戏资源以FBX格式进行导出。FBX格式是一种通用的交互式3D文件格式,广泛用于不同3D建模和动画软件之间的数据交换。UnityPackage是Unity的打包文件格式,可以将Unity项目中的资源、脚本和设置打包成一个整体,方便在不同项目之间进行共享和导入。 使用UnityFBXExporter插件可以方便地将Unity中的模型、动画、材质等资源以FBX格式进行导出,以供其他3D建模软件使用。导出后的FBX文件可以保留Unity中的层级结构、动画数据、材质设置等信息。这对于需要在Unity之外进行渲染、动画制作、模型修改等工作的人来说非常有用。 另外,UnityPackage是Unity的打包格式,可以将Unity项目中的各种资源整合在一起,方便进行导入、共享和备份。UnityPackage可以包含场景、模型、材质、贴图、脚本、动画等资源。导出UnityPackage后,其他人可以轻松地导入到他们的项目中,无需手动拷贝和配置资源路径。 简而言之,UnityFBXExporter插件用于将Unity中的资源以FBX格式导出,方便在其他3D建模软件中使用。而UnityPackage是Unity的打包文件格式,用于整合和共享Unity项目中的各种资源。这两者都提供了便利性,使得在不同软件和项目之间进行资源交换更加方便快捷。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫磊落长歌行

觉得小黑这篇文章不赖,打赏哟~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值