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正式绘制mesh
unity绘制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中。
unity code之FBX模型导入与渲染相关推荐
- 解决FBX模型导入Unity后没有贴图的问题
将FBX模型导入至Unity 3D中,并实施如下步骤: 1. 步骤1:将FBX模型文件拖拽到Unity的项目视图中,选中模型文件,在检视视图中切换到Materials选项卡,Location属性有两种 ...
- 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )
文章目录 一.向 Unity 中添加 FBX 模型 二.向 Scene 场景中添加 FBX 模型 三.3D 物体渲染 四.3D 物体材质设置 一.向 Unity 中添加 FBX 模型 Unity 中使 ...
- fbx模型导入unity,绑了骨骼加蒙皮法线就反
fbx模型导入unity正常 但只要绑了骨骼,在3dmax中正常,进入unity就法线反转 原因是3dmax中模型用到复制和镜像的导出需要多一步处理 1重置变换 2反转法线 按顺序进行这两个,在绑定模 ...
- 不可能的工作:在FBX模型导入脚本中生成模型的预置体
不可能的工作:在FBX模型导入脚本中生成模型的预置体 #if UNITY_EDITOR using System.Collections; using System.Collections.Gener ...
- Unity批量修改FBX模型
由于模型数量有点多,并且都要修改参数,还有从里面提取动画.就搜搜查查,搞了个小工具,批量的修改 FBX 模型的 参数,以及提取动画相关.如果有更简单的实现方法欢迎各位大佬留言. using Unit ...
- 【Unity】 Unity目标跟随效果 及 fbx模型导入的相关问题
Unity学习过程中问题记录 文章目录 Unity学习过程中问题记录 一. 目标移动和转向 二. 目标跟随的问题 三. 鼠标左键行为 四. 3DS MAX模型制作与导出 1. 模型制作的几个点 2. ...
- Unity自动提取优化Fbx模型动画文件,并生成ab包文件大小对比信息
参考文章:https://cloud.tencent.com/developer/article/1833109 最近项目需求需要对工程中的动画文件进行优化,经分析发现,工程存在两种动画文件,一种是后 ...
- UE4/fbx模型导入UE4中的坐标问题
在制作"门的打开"时,需要将坐标定位到门的轴上,有时候导入的模型的坐标却不再理想的位置,这是就需要调整模型的坐标点. 由于模型的门是有多个小部件组成的,比如说门把手,门上的装饰等, ...
- 【解决】FBX模型导入Unity3D贴图丢失问题
1.选择"Materials" 2.Location选择"Use External Materials(Legacy)" 3.最后点击"Apply&q ...
- 【Unity入门】4.FBX模型和资源打包
[Unity入门]FBX模型和资源打包 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)FBX模型 (1)导入FBX模型 ...
最新文章
- andriod sdk哪些是必须下载安装的包
- 网络流sap需要注意的地方
- html调用python_flask之模板html中调用python函数方法
- one more step_KDA新歌《MORE》的一些冷知识:伊芙琳换回原声,摩托车是定制的
- code blocks代码性能分析_Julia系列教程13--如果写出高性能的Julia代码
- Filter和interceptor比较
- Linux驱动开发-编写FT5X06触摸屏驱动
- Windows网上邻居 授权访问设置
- 图像导入裁剪与灰度化
- 从弗雷格的《概念文字》到模态逻辑的产生与发展
- android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
- 【面试题】1383- 面试官问:Vue3 对比 Vue2 有哪些变化?
- (转)逆向与反汇编工具
- 趣谈implicit instantiation of undefined template
- Ubuntu 命令大全 Ubuntu技巧 (转)
- 制造linux安装系统老毛桃u盘
- python画英国国旗_python ASCII艺术英国国旗
- python中成绩及格判断代码_python判断语句(第九节)
- 国内代码托管平台Gitee(码云)的入门使用
- cwyw不是有效的加载项_EndNote加载项无法显示怎么办?