Unity毛发系统TressFX Exporter

这篇具有很好参考价值的文章主要介绍了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\

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 3. 加载插件

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

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 4. 导出TFX发行曲线文件

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙


二:在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中进行渲染调节设置

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

课程中: 官方告诉我们可以使用任意头发梳理工具来制作想要的发型曲线,然后用我们的插件将其转换为TFX文件。

比如可以使用 Maya XGen 工具来制作你的发型曲线,也可以使用Zbush软件制作你的发型曲线(关于如何使用头发梳理工具来制作发型曲线,不是本教程的重点)

以下是一些关于如何使用XGen工具来制作发型曲线的教程:https://80.lv/articles/80-level-ratings-10-great-tutorials-on-hair-creation-using-xgen/

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

接下来我们可以将上一步骤中所制作的头发的引导线导出为 Maya MEL 文件(如下图中左上角颜色所示,以及红框设置

MEL 文件重新导入 Maya 场景后,我们可以看到我们创建的引导线会变为一条条蓝色的曲线(如右下角颜色所示)

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

如下图所示:我们以短发发型为例来给大家讲解下,如何使用TressFX Export Plugin导出头发组;

这里的短发发型引导线主要分为四组制作,分别是Bangs刘海、Top头顶头发、Back头背头发、Flyways碎发;

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 我们依次导出这四组头发:

首先我们选中Bangs组 →然后在顶部菜单中找到TressFX菜单,选择TressFX->Export Hair/fur窗口,然后选择Number of vertices per strand / 每股的顶点数。像这样的短发我们一般选择4或者8,对于长辫子,官方推荐: 16

注意:Invert X-axis of Hair 选项默认为启用

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

点击Export! 会弹出对话框,这里我们设置完成文件名Bangs,点击Save后,我们就可以在对于的文件夹下找到这个后缀为.TFX的文件了;

接下来我们依次导出其他三组头发(将头发组保存为 TFX 文件的步骤与导出Bangs的步骤相同),导完之后就可以在 Unity 中使用它们了;

unity导入毛发,Unity,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.

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

//---------------------------------------------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导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

注意:

如果,之后进入Unity如果报错如下提示(包括:超时、解析错误)

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

解决方案:

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

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 在Asset下创建一个HairFX Profile文件,Profile创建完成后对可以其进行重命名;

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

 接下先来观察和了解下这个Unity Hair Profile文件的参数以及含义:

Unity Hair Profile文件的参数以及含义

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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(头发厚度)(下边介绍这个参数)四项设定。

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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

发梢长度的调节

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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(摆动幅度)的大小;unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙
  4. 将之前创建的Bob HairFX Profile,添加到HairFX Profile组件中的Hair Profile中;unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙
  5. Unity Hair Profile 可以连接多个 Unity Hair Assets,也就是我们从Maya导出的 .TFX 文件。如右图所示,我们为Bob ProfileUnity Hair Profile 文件添加 Back、Bangs、Top、Flyways四个Asset资产;如果你还想继续添加其他Asset资产,可以点击“+”号按钮。unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙
  6. 将头发导出为不同的 TFX 文件的原因是为了我们可以自由地对头发的不同部分进行不同的模型效果的设置和模拟发丝物理效果的设置。unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙
  7. 我们可以为头发的各个分组指定不同的材质,但材质的数量必须与头发资产的数量相同。
    如下图所示,以Bob发型为例,我们需要在Inspector>Mesh Renderer>Materials List下添加四个材质分别对应于Bob发型的四个Asset资产 Back、Bangs、Top、Flywaysunity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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

  1.  在Asset下点击Create创建Material,重命名为Asian Cherry
  2. 材质的Shader我们设置为URP>SG_PhysicalHair
    unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙
  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材质,从而达到如下效果;
    注意这里是四个材质,不是四种材质,当然你也可以添加四种不同材质来表现头发不同部分的不同效果;

    unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙
  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,0unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

    如果你想编写自己的着色器是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

    unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙

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

 unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙


五:特别声明

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

unity导入毛发,Unity,unity,游戏引擎,数字人,毛发系统,元宇宙


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

唠家常

今日分享结束啦,小伙伴们你们get到了么,你们有没有更好的办法呢,可以评论区留言分享,也可以加QQ:841298494,大家一起进步。文章来源地址https://www.toymoban.com/news/detail-781672.html

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

今日推荐

  • 博客杂货铺
  • GoF23 种设计模式的分类和功能

到了这里,关于Unity毛发系统TressFX Exporter的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity游戏开发】动画系统(三)按钮动画

    动画系统是一个比较重要的系统,因为我们做游戏是离不开这个东西的,但是我们又不用自己做动画,而动画系统就是管理美工做的动画,我们加以修饰,使之适配我们的游戏 而按钮动画也是一个点,当然重不重要其实还是你说了算,而按钮动画适配我们的2D和3D游戏 用于

    2024年02月09日
    浏览(40)
  • Unity—对话系统&&GalGame游戏文字对话制作

    每日一句:人间总有一两,填我十万八千梦 目录 对话系统 文本逐字打印功能 GalGame游戏(美少女游戏)文字对话 被触发物体(挂载脚本)下UI,先不激活 public   class   TalkButton  : MonoBehaviour {      public  GameObject tipshow; //提示UI      public  GameObject talkUI; //对话UI     

    2023年04月22日
    浏览(33)
  • 游戏开发小结——Unity 2.5D 平台游戏:跳墙(新输入系统)

    到目前为止,在这个项目中,我已经介绍了如何创建具有双跳功能的物理基础角色控制器。我添加了动态平台、收藏品和事件驱动的电梯。 今天我将回到角色控制器脚本(Player)并添加墙跳功能。这将允许玩家检测墙壁的表面并从一堵墙跳到另一堵墙。 场景设置 我的场景有

    2024年02月01日
    浏览(32)
  • B2:Unity制作Moba类游戏——聊天系统

    一场游戏对局中,和队友进行 友好的有礼貌的有效的沟通 可以极大提升对局胜率。在LOL国服,打字和队友聊天沟通战术是非常常见的行为: 语言的力量是无限的,甚至可以和外国小伙伴效沟通战术:       聊天系统制作起来非常简单,只要熟练掌握C#的TCP通讯协议即可,然

    2024年02月10日
    浏览(26)
  • 3D Gaussian Splatting(高斯飞溅3D算法) Windows系统部署(简版) |导入到Unity

    目录 前言 1、安装python (1)下载地址 (2)添加环境变量 2、安装CUDA         3、安装git (1)下载地址 (2)检查是否安装成功 4、安装visual studio 5、安装COLMAP (1)下载地址 (2)添加环境变量 6、安装ffmpeg (1)下载地址 (2)添加环境变量 (3)检查是否安装成功 7、安

    2024年01月15日
    浏览(31)
  • Unity3D学习之UI系统——用NGUI制作游戏登陆界面

    会省略一些东西,可以看我的NGUI的博客 设置UI分辨率自适应 设置Root 的层级 和摄像机渲染的层级为UI 主摄像机不渲染UI 一般都是美术给一个示意图,然后按示意图上拼面板 3.1.1 制作图集 制作两个新图集 3.1.2 拖面板 检查DrawCall 3.1.3 面板基类 创建面板基类, 首先设置成单例

    2024年02月19日
    浏览(63)
  • 【Unity_Input System】Input System新输入系统(三)——在游戏中更换按键绑定

    Binding只由一个部分组成,一般绑定单个按键或者摇杆 CompositeBinding由两个以上部分组成,一般是用于将多个按键组成虚拟轴 更换按键绑定时,Binding和Composite Binding需要分别处理,对Composite Binding需要循环各个部分进行修改。 可以用InputBinding.isComposite来判断是否是Composite Bind

    2024年02月04日
    浏览(39)
  • Unity实战(2):模型导入Unity

    目录 前言: 一、模型说明 二、模型导出 三、导入Unity 本文记录的是将模型导入Unity的方法,以SketchUp的模型为例 示例模型为一个立方体,拖入一张贴图作为材质,调整大小和缩放等,赋给该立方体 导出模型时选择fbx格式,如果是obj会导致材质丢失。 导出文件内容如图所示

    2024年02月11日
    浏览(32)
  • 游戏思考17:寻路引擎recast和detour学习三:客户端角度学习(unity专题导航系统,阶段三完结)

    1)导航系统作用 帮助角色进行AI智能移动:朝目标移动,绕过障碍物,上下台阶… 2)导航系统包括 ①导航网格(NavMesh):下图的蓝色地形,可以行走的表面 ②导航网格代理组件(NavMesh Agent):模拟人物移动和寻路 ③导航网格障碍物(NavMesh Obstacle):定义物体为障碍物,这样导航网

    2023年04月12日
    浏览(47)
  • 【Unity】Unity导入fbx文件无贴图问题(白模)

    1.先使用3dmax打开fbx模型,打开后会在文件所在目录下生成一个.fbm文件夹(重要),这个后续会用到。 2.直接将模型导出,设置里勾选 “嵌入的媒体” 3.将重新导出的fbx模型和第1步中的fbm文件夹一起放入unity中,在fbx模型设置处点击“Extract Materials”,选择对应的fbm文件夹。

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包