Unity毛发系统TressFX Exporter

2023-10-29

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 毛发系统使用说明 而来,并且成功跑通,下面引用毛发系统的特别声明。


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity毛发系统TressFX Exporter 的相关文章

  • c#获取cpu序列号

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste
  • 游戏开发常见操作梳理之角色选择一

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐

  • SpringBoot整合SpringSecurity遇到的SESSION验证问题

    前言 项目是之前的老项目springmvc jsp项目改的 因为需要对框架做改动 功能没有大改动 所以没有采用前后端分离的方式 后端采用springboot spring security前端还是jsp 所以还是session验证的方式登录
  • 删除打开eclipse时workspace列表中你不希望保存的workspace项

    删除打开eclipse时workspace列表中你不希望保存的workspace 正文 嗯 强迫症使世界更美好 正文 说自己用 idea 开发的请去旁边做一下 这我们先说eclipse的 有些时候 我们需要使用 Eclipse 来开发不同的
  • SpringBoot基本知识汇总

    xl echo编辑整理 交流学习请加1280023003 百战不败 依不自称常胜 百败不颓 依能奋力前行 这才是真正的堪称强大 为什么要用springboot 传统项目配置文件过于臃肿 传统项目依赖版本之间兼容问题 传统项目整合步骤相对繁琐
  • 安装python的ta-lib包遇到的问题及解决

    pip brew均不成功 可以试试下面的命令 conda install c conda forge ta lib
  • 网络传输知识:HTTP协议

    计算机网络体系结构的通信协议 1 物理层 以太网 调制调节器 电力线通信 SONET SDH 光导纤维 同轴电缆 双绞线等 2 数据链路层 Wi Fi IEEE 802 11 WiMAX IEEE 802 16 ATM 令牌环 PPP L2
  • zookeeper面试专题及答案

    1 ZooKeeper 是什么 ZooKeeper 是一个分布式的 开放源码的分布式应用程序协调服务 是 Google 的 Chubby 一个开源的实现 它是集群的管理者 监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作 最终
  • db2解除死锁实例

    背景 在团队协作的开发环境下 难免会遇到多个成员同时访问一张表的情况 在断点调试时 又非常容易加事务的长连接 引发死锁 下面实例讲解解锁过程 解锁过程 查找节点 解锁之前 需要知道数据库所在节点 db2 gt LIST NODE DIREC
  • Pyqt5实战修炼之label图像动态自适应窗口大小

    Pyqt5之动态label窗口大小 问题描述 当我们需要在界面上显示结果图片或者是可视化表达一些数据的时候 通常使用label控件 进行显示 但是因为不确定图片的大小导致显示不全或者当窗口大小变化的时候不能自适应调节label的大小 问题分
  • 农业数据爬虫:Python爬虫获取农产品价格和农业技术信息

    目录 第一部分 选择目标网站 第二部分 分析网站结构和查询参数
  • long包中的八大基本包装类

    一 long包 包装类 八大基本包装类 整数 包装类 byte Short Int Integer Long 除了那两个写出来的 其他的包装类都是把原始类中的首字母大写 小数 float double 字符 char Character 布
  • 【从零开始学c++】——C++动态内存管理

    C 动态内存管理 1 C C 内存分布 2 c 中的动态内存管理 3 operator new和operator delete 4 什么是内存泄露 5 malloc free和new delete的区别 1 C C 内存分布 接下来我们来看
  • RecyclerView流式布局StaggeredGridLayoutManager,重排序问题

    RecyclerView天然支持流式布局 只需要设置layoutManager为StaggeredGridLayoutManager 不过如果item中有图片 由于图片异步加载 会导致item布局变化 这倒也没什么 关键是在holder复用
  • java导出PDF(freemarker模板导出word,再把word使用aspose-words-15.8.0-jdk16转成PDF)

    import com aspose words Document import com aspose words License import freemarker template Configuration import freemar
  • 2023213-popover弹窗框中的teleported属性--Element-plus踩坑日记

    popover弹窗框中的teleported属性 Element plus踩坑日记 今天在做项目时 有一个地方用到了弹窗框 但是有需求需要修改弹窗的阴影部分 比如下方的 我想对阴影进行修改 但是很是纳闷 各种标签选择器都不生效 很奇怪 按照
  • Markdown中如何实现内容折叠操作

    Markdown中如何实现内容折叠操作 实现 效果 感谢 markdown 写作不可避免的会使用到折叠效果的 让结构更清晰 这里使用HTML实现 实现 使用 html 代码可以实现内容折叠的效果
  • 评论机器人测试--“欢迎评论”

    Python评论机器人 最近一直在写Python 爬虫相关的代码 今天突然想做个评论机器人玩一玩 主要步骤有 登录网页 解析现有评论状态 截取最新回复 回复上传到机器问答库 返回机器人回答内容 上传回答结果 欢迎大家在评论区评论测试 顺面让
  • 微信小程序的组件间三种传值方式

    前言 小程序直接的传值 第一种 全局传值 注意要创建实例 步骤一 在全局app js文件中定义数据 App globalData map 步骤二 组件1给全局变量赋值 var app getApp app globalData map th
  • _5LeetCode代码随想录算法训练营第五天-C++哈希表

    5LeetCode代码随想录算法训练营第五天 C 哈希表 242 有效的字母异位词 349 两个数组的交集 202 快乐数 1 两数之和 LeetCode 242 有效的字母异位词 LeetCode 349 两个数组的交集 LeetCode
  • 李开复:算法的力量

    算法是计算机科学领域最重要的基石之一 但却受到了国内一些程序员的冷落 许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解 认为学计算机就是学各种编程语言 或者认为 学习最新的语言 技术 标准就是最好的铺路方法 其实大家都被这
  • Unity毛发系统TressFX Exporter

    Unity 数字人交流群 296041238 一 在Maya下的TressFX Exporter 插件安装步骤 1 下载Maya的TressFX Exporter插件 下载地址 TressFX Exporter 链接 https githu