目的

之前写过一篇:unity shader - 圣斗士星矢 人物 shader 还原 - GPA 抓帧提取资源、shader,ROOT权限、救砖、ro.debuggable=1(最终还是RenderDoc无法抓帧)

这篇文中使用了 GPA, RenderDoc
GPA 可以抓帧 模拟器上 APK 安卓运行中的信息
RenderDoc 的,我死活抓不了(以前低版本的 安卓 手机、RenderDoc 抓帧是很方便的,不知道为何,现在抓不了了)

然后 GPA 能抓,但是模型导出来,没有 UV:GPA: No UV map support? - (帖子说是 DX12 可以导出,但是模拟器设置不了 DX12 的图形 API,-_-!!!)

所以就使用了 RenderDoc 来抓模型,并带上有效的 UV

(后续有从 GPA 上导出 CSV 来重构模型:可以参考这篇:教你如何使用GPA导出模型,另送一个 GPA CSV2MESH Tool in unity)


环境

Unity : 2020.3.18f1
RenderPipeline : URP
Unity Package : FBX Exporter 4.1.2

在这里插入图片描述


工具入口

在这里插入图片描述


演示工具导出

请添加图片描述


先从 RenderDoc 中导出 CSV

因为 RenderDoc 可以导出有效的 vertex buffer 信息,导出的是 csv 格式的数据

RenderDoc 打开后, MeshView/VS Input/右键任意行/Export to CSV,如下图:
在这里插入图片描述

比如这些数据,如下图:
在这里插入图片描述

可以看到,每个顶点的 vertex id, index, position, normal, tangent, uv 都清清楚楚的

所以工具还是很好写的


开始撸工具

在这里插入图片描述


RDC_CSV

在这里插入图片描述

就是我们首选需要设置的 CSV 文本对象
如果不设置,那么会显示一个提示:Have no setting the RDC_CSV yet!
在这里插入图片描述


FBX Name

在这里插入图片描述
FBX 的名字,可以指定 Prefab, Model, Material, Folder, GameObject.name 的名字
在这里插入图片描述


Output Path(Dir)

输出的路径(目录)
在这里插入图片描述

可以点击 Browser… 按钮点调整输出的路径所在
请添加图片描述

也可以直接编辑 Output Path(Dir) 右边的输入框,如下:
请添加图片描述


Export FBX

Export FBX 没啥好说,就是导出了


Model Options

模型导出选项


Is From DirectX CSV

CSV 导出的配置,是否来源于 Graphics API 为: DirectX 系列的图形 API
如果是的话,会对 UV 坐标中的 V 反转,比如:UV.y = 1 - UV.y;


Is Recalculate AABB

是否调用 Mesh.RecalculateBounds();


Vertex Offset/Rotation/Scale

就是 TRS 矩阵信息,会在所有顶点数据导出前,进行 TRS 矩阵变换
在这里插入图片描述


Has UV0/1/2/3/4/5/6/7

是否带有 UV0~7 中指定的数据,UV0默认是勾上的,因为比较常用,一般模型都会有


Normal/Tangent Import Type

法线 和 切线 的导入类型,控制的是 法线,切线的导入方式,分别使用类型定义为: Unity 中的 ModelImporterNormalsModelImporterTangents
在这里插入图片描述


Material Options

材质选项


Material Set Type

材质的设置类型

在这里插入图片描述

分别为:创建新的材质使用现存材质资源


Shader - Create New

下面是 Create New 时的选项
在这里插入图片描述
使用 创建新的材质 方式时显示,指定新建材质使用的 shader


Main Texture - Create New

使用 创建新的材质 方式时显示,指定新建材质使用的 主纹理


Material Asset - Using Exsit Material Asset

下面是 Using Exsit Material Asset 时的选项
在这里插入图片描述
显示设置选择需要使用的 现存材质对象


总结列表

PropertyL1 PropertyL2 Descriptions
RDC_CSV 就是我们首选需要设置的 CSV 文本对象,如果不设置,那么会显示一个提示:Have no setting the RDC_CSV yet!
FBX Name FBX 的名字,可以指定 Prefab, Model, Material, Folder, GameObject.name 的名字
Output Path(Dir) 输出的路径(目录),可以点击 Browser… 按钮点调整输出的路径所在, 也可以直接编辑 Output Path(Dir) 右边的输入框
Model Options 模型导出选项
Is From DirectX CSV CSV 导出的配置,是否来源于 Graphics API 为: DirectX 系列的图形 API,如果是的话,会对 UV 坐标中的 V 反转,比如:UV.y = 1 - UV.y;
Is Recalculate AABB 是否调用 Mesh.RecalculateBounds();
Vertex Offset/Rotation/Scale 就是 TRS 矩阵信息,会在所有顶点数据导出前,进行 TRS 矩阵变换
Has UV0/1/2/3/4/5/6/7 是否带有 UV0~7 中指定的数据,UV0默认是勾上的,因为比较常用,一般模型都会有
Normal/Tangent Import Type 法线 和 切线 的导入类型,控制的是 法线,切线的导入方式,分别使用类型定义为: Unity 中的 ModelImporterNormalsModelImporterTangents
Material Options 材质选项
Material Set Type 材质的设置类型, 分别为:创建新的材质使用现存材质资源
Shader - Create New 使用 创建新的材质 方式时显示,指定新建材质使用的 shader
Main Texture - Create New 使用 创建新的材质 方式时显示,指定新建材质使用的 主纹理
Material Asset - Using Exsit Material Asset 显示设置选择需要使用的 现存材质对象

后续优化

  • VS Input 数据 可以不从 IDX 开始
  • 可以重新映射 VS Input Semantic 的作用
  • CSV2FBX 工具可以优化: - vertex shader attribute(A2V) 的数据可以用内置分析,也可以用指定名字的分析配置
  • 可以导出,导入 manually semantic mapping 配置的支持

Project


References

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐