目的

之前写过一篇: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 时的选项
在这里插入图片描述
显示设置选择需要使用的 现存材质对象


总结列表

PropertyL1PropertyL2Descriptions
RDC_CSV就是我们首选需要设置的 CSV 文本对象,如果不设置,那么会显示一个提示:Have no setting the RDC_CSV yet!
FBX NameFBX 的名字,可以指定 Prefab, Model, Material, Folder, GameObject.name 的名字
Output Path(Dir)输出的路径(目录),可以点击 Browser… 按钮点调整输出的路径所在, 也可以直接编辑 Output Path(Dir) 右边的输入框
Model Options模型导出选项
Is From DirectX CSVCSV 导出的配置,是否来源于 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

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐