FBX Python SDK 入门教程

安装
1. 下载 FBX Python SDK
官网地址,根据你的操作系统,下载相应的 FBX SDK 2020.3.4 Python exe 文件。

2. 安装
执行下载的文件 fbx202034_fbxpythonsdk_win.exe,安装完的程序路径我的是 D:\Program Files\Autodesk\FBX\FBX Python SDK\2020.3.4。里面有个 Python 的 whl 包,还有个 samples 文件夹,这个也有用。
安装 whl:pip install fbx-2020.3.4-cp310-none-win_amd64.whl
使用
1. 加载模型
把上面提到的 samples 文件夹中的 FbxCommon.py 文件复制到你的 Python 程序目录。

import FbxCommonfilename = "" # 文件路径
manager, scene = FbxCommon.InitializeSdkObjects() # 初始化
FbxCommon.LoadScene(manager, scene, filename) # 加载场景

2. FbxScene 和 FbxNode

场景和根节点

场景是节点组成的树状结构。FbxScene 有个根节点,节点通过 GetChild 方法获取子节点。

root_node = scene.GetRootNode()
for i in range(root_node.GetChildCount()):
    node = root_node.GetChild(i)
 
由此,可以获取每个节点

def make_tree(scene):
   def get_child(parent_node):
        child_count = parent_node.GetChildCount()
        tree = {}
        for i in range(child_count):
            child_node = parent_node.GetChild(i)
            tree[child_node.GetName()] = get_child(child_node)
        return tree
    root_node = scene.GetRootNode()
    tree = get_child(root_node)
 

3. 遍历和处理 FBX 节点

在上一节中,我们定义了 make_tree 函数来递归地获取 FBX 场景中的所有节点,并将它们组织成一个树状结构。这个树状结构可以方便地让我们遍历、查询和修改节点。

接下来,我们将进一步探讨如何处理这些节点。

3.1 遍历节点树

有了 make_tree 函数生成的节点树,我们可以使用递归函数来遍历它:

def traverse_tree(tree, indent=""):for name, child_tree in tree.items():print(f"{indent}{name}")traverse_tree(child_tree, indent + "  ")# 使用前面定义的 make_tree 函数获取节点树
tree = make_tree(scene)
# 遍历并打印节点名称
traverse_tree(tree)
3.2 处理节点属性

FBX 节点包含了许多属性,如变换(位置、旋转、缩放)、几何形状、材质等。我们可以根据需求来读取或修改这些属性。

例如,获取节点的变换信息:

def get_transform(node):transform = node.EvaluateLocalTransform()  # 获取节点的本地变换translation = transform.GetT()  # 获取位移rotation = transform.GetQ()  # 获取旋转(四元数)scale = transform.GetS()  # 获取缩放return translation, rotation, scale# 获取某个节点的变换信息
node = root_node.GetChild(0)  # 假设我们获取第一个子节点
translation, rotation, scale = get_transform(node)
print(f"Translation: {translation}")
print(f"Rotation: {rotation}")
print(f"Scale: {scale}")
3.3 处理几何形状和材质

如果节点包含几何形状(如网格),我们可以通过节点的 GetGeometry 方法来获取它。同样,如果节点有材质,我们也可以通过相应的方法来获取。

处理几何形状和材质通常涉及到更复杂的操作,如读取顶点数据、索引数据、UV 坐标、材质属性等。这些操作需要根据具体需求和 FBX 文件的结构来进行。

4. 保存修改后的 FBX 文件

在对 FBX 文件进行读取、修改等操作后,我们可能想要保存修改后的内容。FBX SDK 提供了保存场景的功能。

import FbxIOSettings
import FbxExporter# 创建保存设置
ios = FbxIOSettings.Create(FbxIOSettings.IOSROOT, FbxIOSettings.IOS_EXPORT)
ios.SetBoolProp(FbxIOSettings.EXP_FBX_MATERIAL, True)  # 保存材质等信息
ios.SetBoolProp(FbxIOSettings.EXP_FBX_TEXTURE, True)  # 保存纹理等信息# 创建导出器并设置文件名
exporter = FbxExporter.Create(manager, "output.fbx", ios)# 导出场景
if not exporter.Initialize(scene, -1, manager.GetIOSettings()):print("Failed to initialize exporter.")return
if not exporter.Export(scene):print("Failed to export scene.")return
exporter.Destroy()  # 清理导出器资源

5. 结语

通过本文的介绍,相信你已经对如何使用 FBX SDK 在 Python 中加载、处理和保存 FBX 文件有了初步的了解。FBX SDK 提供了丰富的功能和强大的灵活性,可以满足各种3D模型处理需求。当然,要深入掌握它还需要更多的实践和学习。希望本文能为你的学习之旅提供一个良好的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建滴滴业务中台:系统架构设计探索

在当今数字化时代,滴滴作为中国领先的出行平台,承载着数亿用户的出行需求,业务规模庞大且复杂多样。为了更好地支撑业务发展和提升服务质量,滴滴不断探索和构建业务中台,以实现业务的快速响应、灵活运营和持续创新。在…

【vivado】debug相关时钟及其约束关系

一、前言 在xilinx fpga的degug过程中,经常出现由于时钟不对而导致的观测波形失败,要想能够解决这些问题需要了解其debug的组成环境以及之间的数据流。本文主要介绍debug过程中需要的时钟及各时钟之间的关系。 二、debug相关时钟 Vivado 硬件管理器使…

【NodeMCU实时天气时钟温湿度项目 6】解析天气信息JSON数据并显示在 TFT 屏幕上(心知天气版)

今天是第六专题,主要内容是:导入ArduinoJson功能库,借助该库解析从【心知天气】官网返回的JSON数据,并显示在 TFT 屏幕上。 如您需要了解其它专题的内容,请点击下面的链接。 第一专题内容,请参考&a…

商城小程序系统与C#.net商城小程序系统源码_OctShop

在移动互联网与电商的时代,商城小程序系统已经成为了众多企业和商家开展电商业务的重要工具。OctShop将以商城小程序系统、C#商城小程序系统源码和.net 商城小程序系统为主题,探讨这些系统的特点和优势。 一、商城小程序系统是什么 商城小程序系统是一种…

福派斯鲜肉狗粮大揭秘,狗狗吃了都说好!

狗粮哪个牌子好?我强烈推荐福派斯鲜肉狗粮!在众多狗粮品牌中,福派斯以其高品质、营养均衡以及独特的产品特点,受到了广大宠物主人的一致好评。 (1) 福派斯鲜肉狗粮的配方表透露出其对于原料选择的严谨和用心。高达75%的鲜肉含量&a…

linux不小心将/etc/passwd用户文件清空或删除解决方法

大概思路:进入单用户模式将passwd-引子程序复制为删除的passwd用户文件,关闭selinux 此系统为:centos 7 1.在GRUB引导的时候按e进入编辑模式,linux16那一行的ro 修改为rw rd.break ‘ ’ 2.ctrlx执行 3.进入单用户模式后修改根…

springboot学习整理

视频:基础篇-01_springboot概述_哔哩哔哩_bilibili 介绍 spring boot 是spring提供的一个子项目,用于快速构建spring应用程序 spring构建: 1 导入依赖繁琐 ; 2 项目配置繁琐 spring Framework: 核心 spring Boot :快速构建spring…

秒杀系统之设计方向

1 秒杀存在的问题 对于一个日常平稳的业务系统,如果直接开通秒杀功能的话,往往会出现很多问题—— 2 设计方向的思考 秒杀本质是要求一个瞬时高发下的承压系统,这也是其区别于其他业务的核心场景。对日常系统秒杀产生的问题逐一进行拆解分…

深入浅出:ConcurrentLinkedQueue源码分析与实战

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

CentOS使用Docker搭建Nacos结合内网穿透实现无公网IP远程登录本地管理平台

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Nacos Nacos是阿里开放的一款中间件,也是一款服务注册中心,它主要提供三种功能:持久化…

网站服务器备案及域名购买配置教程

一、阿里云服务备案准备工作 1.什么是备案? 备案是指向相关部门提交网站信息,以便监管和管理互联网信息服务,未经备案的网站可能面临罚款甚至被关闭的风险。备案主要看您的网站或App等互联网信息服务解析到的服务器是否在中国内地(大陆),如果服务器在中国内地(大陆),…

探索Python中的文件操作:如何列出一个目录下的所有文件?

在Python中,处理文件和目录是一项常见的任务。无论是在数据科学项目中读取数据集,还是在Web开发中管理用户上传的文件,我们都需要知道如何列出一个目录下的所有文件。本文将通过通俗易懂的语言,为初学者详细讲解如何在Python中实现…

Tkinter组件:Text-显示和处理多行文本

Tkinter组件:Text Text(文本)组件用于显示和处理多行文本。在 Tkinter 的所有组件中,Text 组件显得异常强大和灵活,适用于多种任务。虽然该组件的主要目的是显示多行文本,但它常常也被用于作为简单的文本编…

kali更新镜像源

1. 什么是镜像源 镜像源一种数据存储和分发技术,通常指的是一个服务器或网站,它存储了另一个服务器或网站上的某些或全部内容的副本。 2. kali更新镜像源 1. 编辑镜像源文件 vi /etc/apt/sources.list 2. 将原来的镜像源用#号注释掉 3. 选择镜像源地址…

LLM应用-文档解析 AI大模型总结分析文档

1)https://notegpt.io/pdf-summary 支持总结,思维导图、对话 2)chatdoc https://chatdoc.com/ 3)chatpdf https://www.chatpdf.com/ https://www.chatpdfs.cn/ 4)kimi https://kimi.moonshot.cn/

HTML静态网页成品作业(HTML+CSS+JS)——华为商城网页(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现首页图片切换轮播效果,共有1个页面…

Cweek1

C语言学习 一.初识C语言 1.如何写C代码 ①创建工程 ②添加源文件&#xff1a;c文件&#xff1a;源文件&#xff0c;h文件&#xff1a;头文件 代码实例&#xff1a; main函数是程序的入口&#xff0c;有且仅有一个 在C语言中&#xff0c;#include <stdio.h> 是一个预…

嵌入式学习-时钟树

时钟树 时钟分类 时钟树框图 LSI与LSE HSI、HSE与PLL 系统时钟的产生 AHB、APBx的时钟配置 相关寄存器 寄存器部分的细节内容请参考手册。 相关库函数

PyQt5中Text Edit的常用方法和常用信号

文章目录 1. 简介1.1. 常用方法&#xff1a;1.2 常用信号&#xff1a; 2. Text Edit的常用方法使用案例3. Text Edit 的常用信号使用案例 1. 简介 QTextEdit是PyQt中用于显示和编辑文本的强大组件之一。它提供了丰富的功能&#xff0c;可以显示普通文本、富文本和HTML文本&…

e行64位V11.17.4 安卓全局虚拟定位APP

e行最新版11.17.4 支持全局虚拟位置 小米手机 百度地图 高德地图 实测成功 其他app自测 不一定支持所有app 下载&#xff1a;https://www.123pan.com/s/HAf9-tsyCh.html