入口:

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模型导入与渲染相关推荐

  1. 解决FBX模型导入Unity后没有贴图的问题

    将FBX模型导入至Unity 3D中,并实施如下步骤: 1. 步骤1:将FBX模型文件拖拽到Unity的项目视图中,选中模型文件,在检视视图中切换到Materials选项卡,Location属性有两种 ...

  2. 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )

    文章目录 一.向 Unity 中添加 FBX 模型 二.向 Scene 场景中添加 FBX 模型 三.3D 物体渲染 四.3D 物体材质设置 一.向 Unity 中添加 FBX 模型 Unity 中使 ...

  3. fbx模型导入unity,绑了骨骼加蒙皮法线就反

    fbx模型导入unity正常 但只要绑了骨骼,在3dmax中正常,进入unity就法线反转 原因是3dmax中模型用到复制和镜像的导出需要多一步处理 1重置变换 2反转法线 按顺序进行这两个,在绑定模 ...

  4. 不可能的工作:在FBX模型导入脚本中生成模型的预置体

    不可能的工作:在FBX模型导入脚本中生成模型的预置体 #if UNITY_EDITOR using System.Collections; using System.Collections.Gener ...

  5. Unity批量修改FBX模型

     由于模型数量有点多,并且都要修改参数,还有从里面提取动画.就搜搜查查,搞了个小工具,批量的修改 FBX 模型的 参数,以及提取动画相关.如果有更简单的实现方法欢迎各位大佬留言. using Unit ...

  6. 【Unity】 Unity目标跟随效果 及 fbx模型导入的相关问题

    Unity学习过程中问题记录 文章目录 Unity学习过程中问题记录 一. 目标移动和转向 二. 目标跟随的问题 三. 鼠标左键行为 四. 3DS MAX模型制作与导出 1. 模型制作的几个点 2. ...

  7. Unity自动提取优化Fbx模型动画文件,并生成ab包文件大小对比信息

    参考文章:https://cloud.tencent.com/developer/article/1833109 最近项目需求需要对工程中的动画文件进行优化,经分析发现,工程存在两种动画文件,一种是后 ...

  8. UE4/fbx模型导入UE4中的坐标问题

    在制作"门的打开"时,需要将坐标定位到门的轴上,有时候导入的模型的坐标却不再理想的位置,这是就需要调整模型的坐标点. 由于模型的门是有多个小部件组成的,比如说门把手,门上的装饰等, ...

  9. 【解决】FBX模型导入Unity3D贴图丢失问题

    1.选择"Materials" 2.Location选择"Use External Materials(Legacy)" 3.最后点击"Apply&q ...

  10. 【Unity入门】4.FBX模型和资源打包

    [Unity入门]FBX模型和资源打包     大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)FBX模型 (1)导入FBX模型     ...

最新文章

  1. andriod sdk哪些是必须下载安装的包
  2. 网络流sap需要注意的地方
  3. html调用python_flask之模板html中调用python函数方法
  4. one more step_KDA新歌《MORE》的一些冷知识:伊芙琳换回原声,摩托车是定制的
  5. code blocks代码性能分析_Julia系列教程13--如果写出高性能的Julia代码
  6. Filter和interceptor比较
  7. Linux驱动开发-编写FT5X06触摸屏驱动
  8. Windows网上邻居 授权访问设置
  9. 图像导入裁剪与灰度化
  10. 从弗雷格的《概念文字》到模态逻辑的产生与发展
  11. android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
  12. 【面试题】1383- 面试官问:Vue3 对比 Vue2 有哪些变化?
  13. (转)逆向与反汇编工具
  14. 趣谈implicit instantiation of undefined template
  15. Ubuntu 命令大全 Ubuntu技巧 (转)
  16. 制造linux安装系统老毛桃u盘
  17. python画英国国旗_python ASCII艺术英国国旗
  18. python中成绩及格判断代码_python判断语句(第九节)
  19. 国内代码托管平台Gitee(码云)的入门使用
  20. cwyw不是有效的加载项_EndNote加载项无法显示怎么办?

热门文章

  1. 我在京东这一年—张亮
  2. cpu和显卡瓶颈测试软件,CPU与GPU瓶颈的详述
  3. DSP你都不知道是啥,还好意思说自己学过嵌入式?
  4. 阿里巴巴瓴羊CEO朋新宇走进清涧县,点亮“橙星计划”第一颗星
  5. 分享到微信微博QQ空间JS代码大全
  6. 机器学习 交叉验证与网格搜索调参
  7. 80004005错误代码_win7系统出现错误代码0x80004005该如何解决
  8. 中国网游,是福?还是祸?
  9. 如何拥有一个游戏策划的思维
  10. todo游戏行业实战案例3:玩家等级停滞率