| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> unity code之FBX模型导入与渲染 -> 正文阅读 |
|
[游戏开发]unity code之FBX模型导入与渲染 |
入口:unity的资源导入入口在AssetDataBase.cpp中ImportAsset。 他会先找给到的metaDataPath来确定这个Asset是属于什么类型。 资源导入继承关系继承关系中AssetImporter是最基本的资源导入类,然后如果是模型相关的会用ModelImporter继承他,然后如果是fbx相关的资源则会用FBXImporter继承他来实现。资源导入相关的继承关系在AssetPipeline目录下。 生成资源数据这里比较关键的是AssetDataBase下的importer->GenerateAssetData ();然后他会执行导入DoMeshImport,运行到FBXImporter的DoMeshImport中 在fbximporter.cpp中有ConvertToFBXFile是指把相关的源文件转到fbx下。ConvertToFBXFile下会根据之前的资源的后缀来区分解决,比如区分是maya、max、blend、c4d等转换文件的源文件格式。 FBX读取然后回到DoMeshImport中CImportSettings记录导入的设置。 LoadAndLookupSymbols这里是解析获取数据的方式,然后DoImportScene是自己写的在UnityFBX这个类里的分析fbx数据的方法。他是用fbx的sdk来导入fbx数据的。 基于FBX SDK的FBX模型解析与加载 -(一)_wozhengtao的博客-CSDN博客_fbx sdk 最终用ImportSceneToCImportScene来整合数据到CImportScene中。 组织导入数据类型回到FBXImporter中的DoMeshImport,CImportSceneToImportScene中会组织nodes数据中的位置缩放旋转等,网格数据,材质数据,摄像机数据,灯光数据,动画数据,采样帧率放到ImportScene结构里面。DoMeshImport最终返回这个数据。 然后ModelImporter的GenerateAssetData后面会GenerateAll生成具体的数据。 生成skinnedmesh相关数据再GenerateAll下如果发现是要导入skinnedmesh的话就会执行到ImportSkinnedMesh。 再ImportSkinnedMesh中会初始化SkinnedMeshRenderer,然后Setup传入mesh数据。然后就到了SkinnedMeshFilter的Setup中,他会UpdateCachedMesh更新mesh的cache。 组织vbo正式绘制meshunity绘制mesh都是通过组织vbo来绘制的,在SkinnedMeshFilter的Render中通过DrawUtil::DrawVBOMeshRaw来执行绘制,给到vbo和mesh来绘制。这里的mesh就是上一步给到的cachemesh。 然后vbo就是看各个平台下的vbo了,比如d3d11的话就是D3D11VBO,d3d的话是D3D9VBO,opengl是ARBVBO,opengles20是VBOGLES20,opengles30是GLES3VBO。 然后会在DrawUtil::DrawVBOMeshRaw下执行vbo.DrawVBO,然后在VBOGLES20中DrawInternal执行opengles20的绘制,到了DrawInternal下就是具体的gl语言绘制了。绑定ebo的buffer,vbo的buffer,然后SetupVertexInput中设置图片数据,颜色数据到opengl,然后通过glDrawElements也就是索引列表来绘制网格,结束整个绘制。 导出以及保存最终通过AssetImportPrefabQueue的QueuePrefab假如到prefab中。 通过AssetDataBase的GenerateLibraryRepresentation生成数据到library中。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 23:39:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |