Unity毛发系统TressFX Exporter

news2024/12/24 8:52:02

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

     

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

 


五:特别声明

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


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

唠家常

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

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

今日推荐

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

货仓选址 AcWing(JAVA)

在一条数轴上有 N家商店,它们的坐标分别为 A1∼AN。 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送商品。 为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。 输入格式&#…

Spring Cloud Alibaba--ActiveMQ微服务详解之消息队列(四)

上篇讲述高并发情况下的数据库处理方式:分布式事务管理机制。即使我们做到这一步并发情况只能稍微得到缓解,当然千万级别的问题不大,但在面对双十一淘宝这类的达上亿的并发的时候仅仅靠分布式事务管理还是远远不够,即使数据库可以…

基于Django和vue的微博用户情感分析系统

完整代码:https://download.csdn.net/download/weixin_55771290/87471350概述这里简单说明一下项目下下来直接跑起的方法。前提先搞好python环境和vue环境,保证你有一个账户密码连上数据库mysql。1、pip install requirements.txt 安装python包2、修改mysql数据库的…

Hadoop HDFS的主要架构与读写文件

一、Hadoop HDFS的架构 HDFS:Hadoop Distributed File System,分布式文件系统 1,NameNode 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小一个Block在…

使用物联网进行智能能源管理的10大优势

如今,物联网推动了许多行业的自动化流程和运营效率,而物联网在能源领域的应用尤其受到消费者、企业甚至政府的关注。除了对电力供应链的诸多好处之外,物联网能源管理系统还让位于新的智能电网,并有望实现更高的安全性和效率。基于…

软件架构知识6-高性能数据库集群:读写分离

一、读写分离 读写分离原理:将数据库读写操作分散到不同的节点上: 读写分离的基本实现是: 1、数据库服务器搭建主从集群,一主一从,一主多从都可以; 2、数据库主机负责读写操作,从机只负责读操…

【2023-02-20】JS逆向之翼支付

提示:文章仅供参考,禁止用于非法途径 文章目录前言分析总结前言 真的好久没更了…… 提示:以下是本篇文章正文内容,下面案例可供参考 分析 进到网页,加载两个接口 applyLoginFactor 接口返回一个RSA公钥&#xff0…

vulnhub zico2

总结:脏牛提权 目录 下载地址 漏洞分析 信息收集 木马上传 反弹shell 提权 下载地址 zico2.ova (Size: 828 MB)Download: https://www.dropbox.com/s/dhidaehguuhyv9a/zico2.ovaDownload (Mirror): https://download.vulnhub.com/zico/zico2.ova使用方法&…

机智的Open3D学习生活(第一集):入坑前的准备工作

1、Open3D的开源项目地址: https://github.com/isl-org/Open3D 2、Open3D的官网地址: http://www.open3d.org/ 3、Open3D的文档地址:http://www.open3d.org/docs/latest/tutorial/visualization/cpu_rendering.html 后续我将以此文档作为蓝…

如何单独清除某个网页的缓存(reload)

有时候在自己服务器上调试的时候,刷新一直不更新,样式改了也看不到,就很烦 今天教你一个方法快速清除 F12 控制台情况下右击左上角的刷新 这三个分别代表: ①正常重新加载(Ctrl R): 正常重新加载 此方法,浏览器发送请求时会…

深入Spring底层透析Bean创建过程之拨云见日篇

目录前言一.BeanFactory快速入门1. BeanFactory创建Bean2. BeanFactory和ApplicationContext的关系3. 和ApplicationContext区别(高频问点)4. BeanFactory的继承体系5. ApplicationContext的继承体系二.Bean实例化的基本流程(重点)前言 首先感谢您的阅览&#xff0…

Git复习

1. 引言 现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息: git c…

上海亚商投顾:沪指放量大涨 券商等权重板块全线飙升

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪三大指数今日集体反弹,沪指、深成指单边拉升,午后均涨超2%,上证50大涨超2.7%&…

加入CSDN的一年,我收获了这些……

加入CSDN的一年,我收获了这些……加入CSDN的一年,我收获了这些……加入CSDN的一年,我收获了这些…… 🚀🚀时光如白驹过隙般,飞逝而过。一转眼,我就已经是一名大二的学生了,也已经在…

LeetCode 每日一题2347. 最好的扑克手牌

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

Homekit智能家居一智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

网络高可用方案

目录 1. 网络高可用 2. 高可用方案设计 2.1 方案一 堆叠 ha负载均衡模式 2.2 方案二 OSPF ha负载均衡模式 3. 高可用保障 1. 网络高可用 网络高可用,是指对于网络的核心部分或设备在设计上考虑冗余和备份,减少单点故障对整个网络的影响。其设计应…

猜数字大小 II

力扣链接 力扣 题目描述: 我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字,就会 赢得游戏 。如果你猜错了,那么我会告诉你,我选的数…

SpringBoot 快速入门

SpringBoot简介 SpringBoot 是由Pivotal 团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。 SpringBoot 基础配置 创建一个SpringBoot项目 2.6.6 浏览器访问:http://localhost:8080/user/1 结果如下所示:

从FastJson库的不同版本源码中对比学习绕过方法

1.2.25<fastjson<1.2.41反序列化漏洞。 从这个版本的fastjson中&#xff0c;对前面的漏洞进行了修复&#xff0c;引入了checkAutoType安全机制&#xff0c;默认autoTypeSupport关闭&#xff0c;不能直接反序列化任意类&#xff0c;而打开 AutoType 之后&#xff0c;是基…