本文采用 AUTODESK的FBX SDK来解析fbx文件,使用语言为python。

   下面结合代码解析出fbx文件中的材质与贴图,以及简单介绍涉及到的类的关系。

1.sdk中的一些基本概念

   FbxScene
   该类包含了整个3D场景的描述。对文件进行解析时,要先获得场景对象,然后在解析该对象里的内容。
   FbxObject
   大多数FBX对象的基类。对象之间通过connections进行连接。通过连接,对象间相互关联以形成层次结构或结构。即fbx的场景中对象的关系都表示为对象的连接。
   FbxObject提供了Property(属性)这种机制来描述场景中对象的特征。
   FbxProperty
   用来保存属性的类
   ClassID
   用于在运行时区分对象的内部类。每个类都有唯一的ClassId

2.解析fbx文件

   下面是本次解析内容(mesh的名字,材质名称,贴图名称,材质贴图引用关系)的的关系结构图:

1)加载scene

lSdkManager,lScene = InitializeSdkObjects()
LoadScene(lSdkManager,lScene,"xxx.FBX")

2)获取节点node以及名字
   scene中包含了所有node中的root节点。

rootNode = pScene.GetRootNode()

   node之间通过树状结构连接,通过 GetChild() 与递归即可获得所有node

if rootNode:
for i inrange(rootNode.GetChildCount()):ChildNode = rootNode.GetChild(i)if ChildNode:AllNodes.append(ChildNode)FindChildNodes(AllNodes,ChildNode)

   获取node名字

lNode.GetName()

3)获取材质Material以及名字
   获取材质

NodeMaterial = lNode.GetMaterial(0)

   获取材质名字

NodeMaterial.GetName()

4)获取贴图Texture以及文件路径

   贴图可以直接从scene中获得

tex_num = lScene.GetTextureCount()
#print(tex_num)
for i inrange(tex_num):tex = lScene.GetTexture(i)

   贴图文件路径

path = tex.GetFileName()

5)获取材质,贴图关系
   根据材质拥有的属性去获取相应的关系

#DiffuseTextures
lProperty = pMaterial.FindProperty(FbxSurfaceMaterial.sDiffuse)#BumpTextures
lProperty = pMaterial.FindProperty(FbxSurfaceMaterial.sBump)

   可以通过关系去获取相应材质

num_textures = pProperty.GetSrcObjectCount(FbxCriteria.ObjectType(FbxTexture.ClassId))
texture = pProperty.GetSrcObject(FbxCriteria.ObjectType(FbxTexture.ClassId),i)

FBX 解析 材质与贴图相关推荐

  1. FBX网格,材质和贴图

    FBX网格,材质和纹理 FBX网格,材质和纹理 一.网格 1.实例化-共享网格 二.材质 1.使用硬件着色器创建材质 三.贴图 1.分层纹理 FBX网格,材质和纹理   本节介绍FBX SDK中的网格 ...

  2. 详解DNS正向解析实验(有图有实验)

    详解DNS正向解析实验(有图有实验) 一.DNS简介 1.DNS的定义 2.域名结构及解析方式 3.DNS服务器类型 二.构建DNS域名解析服务器步骤 1.安装bind软件包 2.配置正向解析 ①.先 ...

  3. Unity3D——学习分享(二) 给游戏对象添加材质和贴图

    给游戏对象添加材质和贴图 在场景中默认创建的游戏对象是白色的,那该怎样给它们添加颜色以及好看的贴图呢? 添加材质 首先我们在场景中创建一个游戏对象,点击游戏对象,面板的检视视图会有该游戏对象的参数和属 ...

  4. 第二章:3ds max材质和贴图

    关于材质和贴图,我们在DirectX中也介绍过.在3ds max中也是通过材质和贴图来表现物体模型的表面纹理.在3ds max中物体模型的材质主要包括颜色,透明度,高光等等,其中贴图用于替换颜色部分, ...

  5. 3dsMax重新加载原来的材质和贴图的路径

    3dsMax获取打开模型的材质和贴图 前言 有时打开一个模型,它原来的材质和贴图的路径丢失了,需要重新加载,此时我们需要获取它原来的材质效果,给到一个新的材质球上,再把新的材质球给到模型即可. 具体操 ...

  6. 【Unity】获取模型的材质球贴图中的像素点色值

    获取模型的材质球贴图中的像素点色值,可以计算模型贴图的RGB.或某个色值的占比,也可以动态修改指定像素色值. 方式一: 获取可读的贴图,并遍历像素点:(通过Texture获取Texture2D操作的运 ...

  7. Unity 使用一张贴图来控制材质主贴图的透明度

    最近有个需求:通过一张贴图的颜色值来控制材质主贴图的透明度. 先做一个注明:用来控制主贴图透明度的贴图,我们暂且称之为"Alpha贴图":主贴图就叫"主贴图". ...

  8. C4D新手党使用小技巧——如何给对象着色以及添加材质或贴图?如何输出PNG格式?

    ** C4D新手党使用小技巧--如何给对象着色以及添加材质或贴图?如何输出PNG格式? 1.打开C4D,新建球体或别的对象,C掉,添加细分曲面使得对象更圆滑 2.选中对象,查看右下角编辑器,有个颜色编 ...

  9. 使用Deep Exploration进行STK 模型的转换-材质与贴图

    STK模型格式及Deep Exploration介绍 在STK软件中,使用两种格式进行3维模型的显示,mdl和dae两种格式. 其中,mdl格式为STK软件特有的格式,暂时没有现成的CAD软件直接进行 ...

最新文章

  1. 使用Cumulus和Flash Player搭建视频会议示例
  2. 英国前首相:为什么欧洲没有诞生互联网巨头?
  3. jQuery Deffered Callbacks
  4. POJ 1703 Find them, Catch them【并查集】
  5. 查看 centos 版本
  6. C++socket网络编程(跨平台)实战HTTP服务器(三)
  7. 【LeetCode】36. Valid Sudoku
  8. 【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
  9. Linux学习笔记8
  10. markdown常用字体
  11. RegisterWaitForSingleObject的使用
  12. 自定义View:Android 仿 PS 选色板
  13. 修改android设备型号
  14. 基于51单片机的带方位指示的自行车码表proteus仿真原理图PCB
  15. java计算机毕业设计小区失物招领网站源程序+mysql+系统+lw文档+远程调试
  16. Ackerman阿克曼(单舵轮)前轮驱动并转向移动机器人的建模及控制算法
  17. 清华大学王观堂先生纪念碑铭----陈寅恪
  18. 《回炉重造 Java 基础》——集合(容器)
  19. 嵌入式程序编写方法与规范
  20. 绝缘栅型n沟道场管_N沟道增强型绝缘栅场效应管的工作原理

热门文章

  1. 基于FPGA的DDS信号发生器
  2. Jira实战 | 界面管理策略
  3. 前端三件套系例之CSS——响应式布局
  4. OTFS学习_12.15
  5. HDU6608 Fansblog
  6. 英迈国际和MassChallenge选出入围彗星竞赛决赛的最佳B2B初创公司
  7. Defender绝密档案:惊现中本聪?
  8. 旭日图更好地呈现数据的层次结构,细致划分各项数据
  9. TIA博途V16专业版与博途V15.1专业版或其他版本能否安装在同一台PC中?
  10. C++内存模型以及寄存器指针rsp和rbp