Unity - RenderDoc 抓帧导出 FBX(带UV)
文章目錄
- 目的
- 環境
- 工具入口
- 演示工具導出
- 先從 RenderDoc 中導出 CSV
- 開始擼工具
- RDC_CSV
- FBX Name
- Output Path(Dir)
- Export FBX
- Model Options
- Is From DirectX CSV
- Is Recalculate AABB
- Vertex Offset/Rotation/Scale
- Has UV0/1/2/3/4/5/6/7
- Normal/Tangent Import Type
- Material Options
- Material Set Type
- Shader - Create New
- Main Texture - Create New
- Material Asset - Using Exsit Material Asset
- 總結列表
- 后續優化
- Project
- References
目的
之前寫過一篇: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 格式的數據
比如這些數據,如下圖:
可以看到,每個頂點的 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 中的 ModelImporterNormals 和 ModelImporterTangents
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 時的選項
顯示設置選擇需要使用的 現存材質對象
總結列表
| 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 中的 ModelImporterNormals 和 ModelImporterTangents | |
| 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
- javelinlin/Testing_CSV2Mesh_Tool - github
- Testing_CSV2Mesh_Tool_RenderDoc導出CSV_再導出FBX - 百度網盤
- Testing_CSV2Mesh_Tool_RenderDoc導出CSV_再導出FBX_2022_07_14 - 百度網盤
References
- Alunice/TaTa/tree/master/CSV2Mesh
- Renderdoc扒模型教程
- 一些卡渲游戲的材質逆向和記錄 - 我將工具寫完了,才發現這片 blog 是基于 render doc 的 extension 寫了 py 插件,非常不錯
- FXTD-ODYSSEY/renderdoc2fbx - 這是 github 該插件的 export fbx 的開源代碼,太贊了!后續有空研究一下
總結
以上是生活随笔為你收集整理的Unity - RenderDoc 抓帧导出 FBX(带UV)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节跳动日常实习一二三面面经(后端开发)
- 下一篇: 基于决策树的高层次语义图像检索