Skip to main content

资源工作流程

概述

本文档主要介绍了如何在引擎中导入资源、导出资源,以及一些必要的插件。

插件安装

PhotoShop导出插件安装

适用于Max2016版本和PhotoShop(CS5-CC 2018)版本。

导出插件的安装程序在编辑器文件夹...client\windows\tools\FlexiPluginSetup.exe目录下。

运行程序“FlexiPluginSetup.exe”。

安装项(Installation items)下选中PS插件(PS Plugins),在材质类型(Material Type)下选中PBR金属度粗糙度(PBR (MetallicRoughness)),然后点击安装(Install)完成安装。

image-20230529095133158

资源类型

常见资源类型:

类型格式
纹理贴图(Texture Map)TIF
静态网格体(Static Mesh)XMOD
骨架网格体(Skeletal Mesh)XMOD
动画文件(Animation File)XSKT
特效文件(Effect File)EFFECT
粒子文件(Particle File)PARTICLE
物理(Physics)CHB, NXX
音频 (Audio)WAV

将资源导入Flexi编辑器

模型资源

使用外部程序创建可供引擎使用的内容类型。

导入静态网格体

在外部应用程序中,选择需要的网格体文件导出为FBX格式(文件可以多选)。

在引擎项目面板的资源目录下创建一个文件夹并打开,用以存放资源。拖动需要导入的FBX文件到Flexi的资源预览窗口中。

在弹出的FBX导入选项(FBX Import Options)窗口中进行设置。

image-20230526104547231

编号名称说明
1网格体(Mesh)是否导入网格体。
2转换场景(Convert Scene)是否转换场景,将场景由FBX坐标系转换为Flexi引擎坐标系,其文件单位也会进行匹配。
3导入纹理(Import Textures)是否导入纹理。
4导入全部(Import All)/导入(Import)全部导入或单次导入。

导入FBX时,不支持将模型的子节点进行拆分,导入成功会同时生成同名的.xmodparams文件用于记录导入信息。

通过在关卡(Level)面板中查看导入的网格体来验证资源是否正确导入。

image-20220930105703873

碰撞体制作

碰撞(Collision)在引擎中非常重要,很多交互依赖碰撞,引擎中可以生成物理碰撞,但还是建议在3D软件中创建自定义的碰撞几何体,和渲染网格体一起导出。

碰撞体的命名规则:

网格体前缀和命名说明
FXSP_[RenderMeshName]_##按照球体来生成物理碰撞体。
FXCP_[RenderMeshName]_##按照胶囊体来生成物理碰撞体。
FXBX_[RenderMeshName]_##按照盒子来生成物理碰撞体。
FXCX_[RenderMeshName]_##按照凸包来生成物理碰撞体。
FXTA_[RenderMeshName]_##按照三角形来生成物理碰撞体。

命名习惯需要和关联的渲染网格体命名一致。

##表示数字后缀(如果不想看到RenderMesh,也可以在3D软件中创建空物体,将空物体命名与碰撞体命名相匹配,如3DMAX中可以使用虚拟对象(Dummy)或者辅助对象(Helper)代替,Blender中创建空物体(Empty)代替)。

导入碰撞体FBX文件。将碰撞体FBX文件拖入到引擎资源预览窗口中,在弹出的FBX导入选项(FBX Import Option)窗口中需勾选生成碰撞体(Generate Collider)选项。

2023-05-25_150020

LOD创建指南

如何导入静态网格体LOD:

可从外部3D建模软件(如3Ds Max、Maya或Blender)将静态网格体详细级别(LOD)导入到Flexi引擎。在此使用3Ds Max、Maya和Blender进行演示。

设置静态网格体LOD:

Autodesk 3Ds Max

选中所有网格物体,然后从分组(Group)菜单中选择分组(Group)命令。

image-20220930115241796

在打开的对话框中输入新组的名称,单击 image-20220929205304219 按钮来创建组。

image-20220930130126137

点击 image-20220929205125623 按钮来查看实用程序(Utilities)面板,然后选择详细级别(Level of Detail)实用程序。注意:如果找不到的话,你可能需要点击 image-20220929205142173

image-20220930115406994

选择组后,单击 image-20220929204953918 按钮以创建新的LOD集并将选定组中的网格添加到其中,网格将根据其复杂性自动排序。

image-20220930115600090

3Ds Max中,选择包含LOD集的组合体模型直接导出,导出时,需要勾选平滑组(Smoothing Groups)切线和副法线(Tangents and Binormals)三角算法(Triangulate)

image-20220930115516980

Autodesk Maya

依照LOD的高低级别顺序选择所有网格体(例如LOD0、LOD1、LOD2、LOD3、LOD4…..)。按顺序选择非常重要,后续所创建的组需要根据顺序进行排序。然后从编辑(Edit)菜单中选择LOD(Level of Detail)-> 创建LOD分组(Creat LOD Group)命令。

image-20220930115804946

现在所有的网格体都应该分组到了LOD组下。

在Maya中,选择包含LOD集的组合体模型,直接导出,导出时,需要勾选平滑组(Smoothing Groups)平滑网格(Smooth Mesh)引用的资源内容(Referenced Assets Content)

image-20220930122011352

Blender:

创建网格

Blender中依次点击添加(Add) -> 网格(Mesh) -> 立方体(Cube),添加一个立方体模型。

按照上述方法再依次添加一个棱角球(Ico Sphere)柱体(Cylinder)

将立方体的名称修改为mesh_LOD0,棱角球的名称修改为mesh_LOD1,柱体的名称修改为mesh_LOD2。

注意:

组合体LOD级别与命名无关,只与创建时间顺序有关,先创建的网格(Mesh)LOD级别最高(LOD0),越往后创建的网格(Mesh) LOD级别越低。所以,此时立方体的LOD等级最高(LOD0),柱体的LOD等级最低(LOD2)。

如果这里网格(Mesh)创建的时间顺序不对,最简单直接的方法就是将网格(Mesh)按时间顺序复制粘贴并删除原来的网格(Mesh)

本文档中所创建的网格用作后续展示不同LOD级别效果。

创建空物体

Blender中依次点击添加(Add) -> 空物体(Empty) -> 纯轴(Plain Axes),或者按快捷键Shift + A,新建一个纯轴空物体,空物体命名没有要求。

创建完成:

image-20230310104116607

将LOD模型与空物体绑定父子级

场景集合(Scene Collection)面板中先选中空物体(Empty),再按住Shift并点击mesh_LOD2以全部选中这四项,然后在操作界面鼠标右击打开快捷菜单,依次点击父级(Parent) -> 物体(Object),或者按快捷键Ctrl + P后在弹出的快捷菜单中选择物体(Obejct)空物体(Empty)为父级,三个网格(Mesh)为它的子级,父子类型为物体。

完成:

添加自定义属性

场景集合(Scene Collection)面板中选中空物体(Empty),然后在下方的属性栏中,依次点击物体属性(Object Properties) -> 自定义属性(Custom Properties) -> 新建(New)。点击prop右侧的 按钮,弹出编辑属性(Edit Property)窗口。在类型(Type)栏中将浮点(Float)型改为字符串(String)型,属性名(Property Name) 改为fbx_type, 点击OK按钮。

image-20230310133505763

将fbx_type的值改为LodGroup(大小写要规范,否则可能会出错)。

导出

依次点击菜单栏文件(File) -> 导出(Export) -> FBX(.fbx),选择导出文件的路径,修改导出文件的名称,勾选自定义属性(Custom Properties),将前进(Forward)改为-Y向前(-Y Forward)向上(Up)改为Z向上(Z Up),按需勾选应用变换(Apply Transform),然后选择导出FBX(Export FBX)

133229107077274564

导入静态网格LOD文件至Flexi

将导出的FBX文件拖入到Flexi引擎的资源预览窗口中(可先在项目(Project)面板中选择好该文件所要在的目录)。

在弹出的FBX导入选项(FBX Import Options)窗口中勾选网格体(Mesh)自动生成屏占比(Automatically Generate Screen Ratio)、导入纹理(Import Textures),点击导入(Import)全部导入(Import All)

双击导入生成的XMOD文件,进入模型预览窗口检查LOD是否正确。

Simplygon LOD:

使用Simplygon制作模型的LOD。

初次使用Simplygon请安装两个必要的运行库。

运行\tools\simplygon\vcredist_x64.exe并安装。

运行\tools\simplygon\vcredist_x86.exe并安装。

需要进行一次注册(无需重复注册)。

打开\tools\simplygon\LicenseApplication.exe。

如果没有微软账号,点击创建一个选项来注册账号(建议在网页上预先注册微软账号,这里就可以直接登录。因为网页上注册速度会非常快,比这里的按钮快上许多)。

image-20220930122704406

Active字样表示账号激活,激活成功后启动编辑器,打开模型编辑器在窗口中选择LOD设置。

image-20220930112517383

导入骨架网格体

从外部3D建模应用程序导出骨架网格体。

骨架网格体由两部分构成:

  1. 构成骨架网格体表面的一组多边形。

  2. 用于使多边形顶点产生动画的一组层次化的关联骨骼。

在Flexi引擎中,通常使用Actor代表角色或其他带动画的对象。3D模型、绑定及动画都是在外部建模和动画应用程序(3Ds Max、Maya、Blender等)中创建的,然后通过编辑器的设置把这些资源导入到Flexi引擎。

在资源预览窗口中,拖入导出的FBX文件。

image-20220930092605375

在弹出的FBX导入选项(FBX Import Options)窗口中进行设置。

image-20230526104840982

编号名称说明
1网格体(Mesh)是否导入网格体。
2Y轴角度(Y)用于调整Actor朝向,一般情况下我们需要设置为Y轴旋转180度。
3转换场景(Convert Scene)是否将场景由FBX坐标系转换为Flexi引擎坐标系。其文件单位也会进行匹配。
4导入纹理(Import Textures)是否导入贴图。
5导入骨架(Import Skeleton)是否导入骨架。导入后得到的骨架文件名称为:文件名_tpose.xskt
6导入全部(Import All)/导入(Import)全部导入或单次导入。

通过在内容编辑器中查看导入的网格,来验证资源是否正确导入。

image-20220930095918671

导入动画

在资源预览窗口中,拖入导出的FBX文件。

image-20220930131123674

在弹出的FBX导入选项(FBX Import Options)窗口中进行设置。

image-20230526111050347

编号名称说明
1Y轴角度(Y)旋转。这部分需要与骨架网格体和骨架导入时的参数保持一致。
2转换场景(Convert Scene)将场景由FBX坐标系转换为Flexi引擎坐标系,其文件单位也会进行匹配。
3导入动画(Import Animation)是否导入动画。导入动画时要求必须选择一个动画所匹配的骨架文件,动画导入完成后得到的动画文件名称 为:文件名.xskt
4选择骨架文件(Select Skeleton File)可以从资源预览窗口中拖拽一个骨架文件(XSKT类型文件),或者从下拉框选择一个骨架文件作为导入动画时候的匹配骨架数据。详情结合导入动画功能。(此处导入为测试骨架网格体的Tpose)。这边操作的意义在于判断动画文件1中的骨骼拓扑结构和骨架是否一致。
5导入全部(Import All)/导入(Import)导入全部或导入单个文件。导入全部按钮是针对当拖入多个FBX文件时,可以一次性导入多个FBX数据。

通过资源预览窗口查看导入的动画资源。

image-20220930130843798

验证导入的动画是否正确:

选择导入骨架网格体的文件夹,在资源预览窗口中右键,依次点击创建资源(Create Res) -> 组合体(Actor),在资源预览窗口中查看新建的组合体。

image-20220930101006292

image-20220930101034173

双击新建的组合体,进入编辑窗口。在动作列表下,将动作文件拖拽至区域内,然后查看是否正确导入。

image-20230526111802871

image-20230526111315346

选择蒙皮列表,将文件拖拽至区域内,然后查看是否正确导入。

image-20230526111923460

image-20230526112057579

在动作列表下,点击切换Tpose和导入的动作,查看是否正确。

image-20230526112144521

导入Speedtree资源

Speedtree资源导出

导出时需要关注的是缩放系数的设置,Flexi引擎使用单位是米(m),Speedtree软件默认的单位为英尺(ft),1ft=0.3048m,所以导出时模型的缩放系数要填0.3048,四舍五入为0.305。

Speedtree资源导入Flexi引擎

在项目面板中创建一个文件夹(如:Speedtree)并打开。在系统的资源管理器中找到需要导入的ST文件,选中并拖动到引擎资源预览窗口中(支持拖拽文件夹)。

image-20220930132146614

.st导入引擎面板设置。

image-20220930123923904

编号名称说明
1AO亮度(AO Brightness)调整AO亮度。
2跳过贴图(Skip Texture)是否跳过贴图,开启后不会转储贴图。
3导入碰撞体(Import Collider)是否导入碰撞体。
4导入(Import)导入文件。
5添加(Add)添加多个.st文件。

通过在关卡面板中查看导入的网格,来验证资源是否正确导入。

image-20220930113454862

转换过程中自动处理的其他细节:

  • 原始ST文件中的材质如果有次表面散射属性及贴图的话,转换后的模型材质也会自动带有次表面散射属性。

  • 原始PNG文件中法线贴图的Alpha通道中存储的粗糙度贴图会在转换为TIF文件时自动拆分为“_m”后缀的贴图,其中的B通道存储粗糙度。

  • Flexi引擎支持Speedtree中的AO,存储在顶点的RGB上(可以在Speedtree中对AO进行调整)。

  • Flexi引擎支持Speedtree中制作的碰撞模型(见下图)。

贴图资源

贴图规范:

Flexi引擎支持PBR,贴图方面需要遵循PBR的贴图标准。

常用贴图与后缀命名规则。(PS插件FlexiTIFPlugin导出TIF格式时会根据文件后缀名自动选择相应的贴图类型)。

原始图片(TIF文件)文件名后缀说明
Diffuse Map/Albedo Map/Base Color_DRGB/RGBA
Normal Map_N
Mix Map_MR: Metallic G: Roughness B: Specular level A: Ambient Occlusion
Height Map_HRGBA(来自A通道,初始颜色为128)
Emissive Map_ERGB
SubSurface Strength_SSS
Flow Map_FM
Mask_Mask
ImageSequence_Sequence贴图MipMap仅保留前5级
从Substance Painter导出

Substance Painter导出设置:

从Photoshop导出

在Photoshop中制作完成贴图资源后,使用安装好的Photoshop插件导出贴图。

颜色设置:

贴图的输出:

贴图输出的路径及文件名不允许出现中文。

美术在完成贴图绘制之后对进行保存,格式选择FlexiTIFPlugin (*.TIF;.TIF)

在弹出的面板中选择相应的贴图类型以及对尺寸进行调整。

点击文件 -> 另存为 ,选择格式FlexiTIFPlugin (*.TIF),保存。

Photoshop插件弹窗设置面板。

image-20220930124348070

编号说明
1选择贴图类型。
2选择相应平台可以进行单独设置。
3更改贴图尺寸。
4选择Ok导出TIF文件,选择Export DDS导出DDS文件。

将资源从Flexi编辑器导出

通过引用关系将资源导出到指定文件夹

选择需要导出的资源文件,右键选择资源导出(Resource Export),在选择目录(Select Directory)窗口选择导出路径,点击OK导出。

image-20220930105053737