Maya-UE xgen-UE 毛发导入UE流程整理

首先声明:maya建议用2022版本及一下,因为要用到Python 2 ,Maya2023以后默认是Python3不再支持Python2;

第一步:Xgen做好的毛发转成交互式Groom
在这里插入图片描述
第二步:导出刚生成的交互式Groom缓存,需要设置一下当前帧,和写入宽度;到这里其实就可以直接导入到UE了,为了后面能做多颜色毛发和渐变毛发可以继续看,如果不需要,到这一步就可以直接打开UE导入了,按照后面的流程导入UE就可以了!
在这里插入图片描述
在这里插入图片描述

第三步:导入刚刚导出的缓存文件,导入后会根据毛发数量自动分组;
在这里插入图片描述
在这里插入图片描述
第四步:利用官方文档的Python脚本分别重新导出这三个分好组的缓存文件,这一步的目的是为了让缓存文件拥有UV,方便进去UE后根据需求继续调整(举例做渐变毛发和多颜色毛发);可以直接复制,有几个代码需要修改,看说明;

from maya import cmds
from maya import OpenMaya
import osdef create_root_uv_attribute(curves_group, mesh_node, uv_set='map1'):'''Create "groom_root_uv" attribute on group of curves.'''# check curves groupif not cmds.objExists(curves_group):raise RuntimeError('Group not found: "{}"'.format(curves_group))# get curves in groupcurve_shapes = cmds.listRelatives(curves_group, shapes=True, noIntermediate=True)curve_shapes = cmds.ls(curve_shapes, type='nurbsCurve')if not curve_shapes:raise RuntimeError('Invalid curves group. No nurbs-curves found in group.')else:print "found curves"print curve_shapes# get curve rootspoints = list()for curve_shape in curve_shapes:point = cmds.pointPosition('{}.cv[0]'.format(curve_shape), world=True)points.append(point)# get uvsvalues = list()uvs = find_closest_uv_point(points, mesh_node, uv_set=uv_set)for u, v in uvs:values.append([u, v, 0])#print (str(u) + " , " + str(v)  )# create attributename = 'groom_root_uv'cmds.addAttr(curves_group, ln=name, dt='vectorArray')cmds.addAttr(curves_group, ln='{}_AbcGeomScope'.format(name), dt='string')cmds.addAttr(curves_group, ln='{}_AbcType'.format(name), dt='string')cmds.setAttr('{}.{}'.format(curves_group, name), len(values), *values, type='vectorArray')cmds.setAttr('{}.{}_AbcGeomScope'.format(curves_group, name), 'uni', type='string')cmds.setAttr('{}.{}_AbcType'.format(curves_group, name), 'vector2', type='string')return uvsdef find_closest_uv_point(points, mesh_node, uv_set='map1'):'''Find mesh UV-coordinates at given points.'''# check meshif not cmds.objExists(mesh_node):raise RuntimeError('Node not found: "{}"'.format(mesh_node))# check uv_setuv_sets = cmds.polyUVSet(mesh_node, q=True, allUVSets=True)if uv_set not in uv_sets:raise RuntimeError('Invalid uv_set provided: "{}"'.format(uv_set))# get mesh as dag-pathselection_list = OpenMaya.MSelectionList()selection_list.add(mesh_node)mesh_dagpath = OpenMaya.MDagPath()selection_list.getDagPath(0, mesh_dagpath)mesh_dagpath.extendToShape()# get mesh function setfn_mesh = OpenMaya.MFnMesh(mesh_dagpath)uvs = list()for i in range(len(points)):script_util = OpenMaya.MScriptUtil()script_util.createFromDouble(0.0, 0.0)uv_point = script_util.asFloat2Ptr()point = OpenMaya.MPoint(*points[i])fn_mesh.getUVAtPoint(point, uv_point, OpenMaya.MSpace.kWorld, uv_set)u = OpenMaya.MScriptUtil.getFloat2ArrayItem(uv_point, 0, 0)v = OpenMaya.MScriptUtil.getFloat2ArrayItem(uv_point, 0, 1)uvs.append((u, v))return uvsdef abc_export(filepath, node=None, start_frame=1, end_frame=1, data_format='otawa', uv_write=True):job_command = '-frameRange {} {} '.format(start_frame, end_frame)job_command += '-dataFormat {} '.format(data_format)job_command += '-attr groom_root_uv 'if uv_write:job_command += '-uvWrite 'job_command += '-root {} '.format(node)   job_command += '-file {} '.format(filepath) cmds.AbcExport(verbose=True, j=job_command)def main():export_directory = 'D:/Dev/Ref'hair_file = os.path.join(export_directory, 'hair_export.abc')curve_top_group= 'description1|SplineGrp0'uv_mesh='pPlane1'create_root_uv_attribute( curve_top_group , uv_mesh)abc_export(hair_file, curve_top_group)main()

在这里插入图片描述
第五步:由于是分别导出的3个文件,因为三个分别导入UE有些麻烦也没必要,需要重新整合一下;重新开一个新的maya文件,把3个缓存文件重新导入到新的maya里面,再次整体导出一个缓存文件;这里需要添加一个groom_root_UV(说明 :groom_root_uv属性为每根头发指定它所附加到的基础网格uv。该属性是可选的,如果未指定,将使用球形贴图在引擎中自动生成一个根UV)
在这里插入图片描述
第六步:导入UE,需要设置一下项目设置和插件;
在这里插入图片描述
在这里插入图片描述
然后导入窗口的旋转设置一下;
在这里插入图片描述
这里可以设置一下基础属性;
在这里插入图片描述
这里可以开启物理模拟;
在这里插入图片描述可以创建绑定;这样就可以替换默认的头发了,也可以通道添加组件添加到骨骼模型上;
在这里插入图片描述
打开角色蓝图,就可以替换之前的模型资产和材质了;
在这里插入图片描述
材质球设置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里可以通过绘画贴图来实现不同颜色的发色;

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker Mysql-udf-http

1.Mysql-udf-http镜像已上传到dockerhub中 docker pull heidaodageshiwo/mysql-udf-http:v1 2.启动镜像(默认密码root1234) docker run -tid -p 3306:3306 --namemysql-udf-http --privilegedtrue heidaodageshiwo/mysql-udf-http:v1 3.命令 [rootlocalhost ~]# docker im…

Ultra ISO 虚拟光驱修改光盘盘符

windows xp 环境 ultra iso 虚拟光驱修改光盘盘符 method 1. 在ultra iso 中 [选项]->[配置]->[虚拟光驱],在新盘符里选指定盘符 ->[修改] method 2. 打开命令行,进入安装目录,如 "C:\Program Files\UltraISO\drivers"&…

【CF比赛记录】—— Good Bye 2023(A、B、C)

🌏博客主页:PH_modest的博客主页 🚩当前专栏:CF比赛记录 💌其他专栏: 🔴每日一题 🟡 cf闯关练习 🟢 C语言跬步积累 🌈座右铭:广积粮,缓…

2022年全球软件开发大会(QCon上海站)-核心PPT资料下载

一、峰会简介 世界需要更多的软件,但受限于 IT 成本,企业不再盲目扩张 IT 团队,而是转向于从研发效率下手,做出了流程、平台、规范等一系列动作。然而,并不是每个企业和管理者都明白,开发者不是流水线上的…

内网凭据收集

目录 查看已安装软件信息0X1 运维开发Xshell使用SharpXDecrypt使用Ladon SecureCRT加密说明解密 Mobaxterm带管理密码的解密扩展(激活、汉化)无管理密码的解密 FinalshellWinSCP0X2 数据库Navicat方式1:离线解密方式2:在线解密 DB…

Ubuntu系统上TensorBoard使用方式

Ubuntu系统上TensorBoard使用方式 Tensorboard 启动TensorBoard 后台开启TensorBoard访问权限 执行命令:nohup tensorboard --logdirlogs/ >>tensorboard.log & 查看访问链接和登录token 执行命令:cat tensorboard.log,打开ten…

【LMM 003】生物医学领域的垂直类大型多模态模型 LLaVA-Med

论文标题:LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 论文作者:Chunyuan Li∗, Cliff Wong∗, Sheng Zhang∗, Naoto Usuyama, Haotian Liu, Jianwei Yang Tristan Naumann, Hoifung Poon, Jianfeng Gao 作…

学习使用wps将ppt的页面保存为图片的方法

学习使用wps将ppt的页面保存为图片的方法 方案 方案 1、打开ppt,点击文件,另存为,选择文件类型为图片格式,jpg或者png,如下图: 2、点击每张幻灯片

[ffmpeg系列 02] 音视频基本知识

一 视频 RGB&#xff1a;rgb24, AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB… Y&#xff1a;明亮度, Luminance或luma, 灰阶图&#xff0c; UV&#xff1a;色度&#xff0c;Chrominance或Chroma。 YCbCr: Cb蓝色分量&#xff0c;Cr是红色分量。 取值范围&am…

Servlet见解3

13 Cookie和Session http协议是一个无状态的协议&#xff0c;你每一个跳转到下一个页面的时候都是需要先登录才能使用&#xff0c;这样就很麻烦比如淘宝&#xff0c;没有cookie和session的话&#xff0c;用户在首页已经登录上去了&#xff0c;但是需要再次登录才能选择商品&am…

圆梦、取舍、成长—独孤风的2023年回顾

大家好&#xff0c;我是独孤风&#xff0c;一位曾经的港口煤炭工人&#xff0c;目前在某国企任大数据负责人&#xff0c;公众号大数据流动的作者。 2023年马上就要过去了&#xff0c;这一年我们结束了三年核酸检测的生活。一切回归到正常的轨迹。回望这一年可能更多的时候会觉得…

【Maven】工程依赖下载失败错误解决

在使用 Maven 构建项目时&#xff0c;可能会发生依赖项下载错误的情况&#xff0c;主要原因有以下几种&#xff1a; 下载依赖时出现网络故障或仓库服务器宕机等原因&#xff0c;导致无法连接至 Maven 仓库&#xff0c;从而无法下载依赖。 依赖项的版本号或配置文件中的版本号错…