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…

Spring MVC 拦截器编程开以及常见问题

写在前面:最近在对一个微服务增减接口拦截器的时候,定义的拦截器未能生效,并且未报任何异常,swagger的ui也无法正常访问。经查明原因:prehandler方法最后返回的布尔值是false,拦截器定义部分是从其他服务拷…

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

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

Python实战开发及案例分析(20)—— 宽度优先

宽度优先搜索(Breadth-First Search, BFS)是一种遍历图或树的算法。它从根节点开始,探索所有邻近节点,然后再按顺序访问每个邻近节点的邻居,直到所有节点都被访问为止。在图中,为了避免访问同一个节点多次&…

建筑乙级资质延期中的政策变化与应对策略

在建筑乙级资质延期过程中,政策的变化可能会对企业的运营和策略产生重大影响。为了应对这些变化,企业需要密切关注政策动态,灵活调整自身的经营策略。以下是一些可能的政策变化及相应的应对策略: 一、政策变化 资质延期条件调整&a…

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

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

安卓手机APP开发__支持不同的像素深度

安卓手机APP开发__支持不同的像素深度 目录 概述 使用对深度独立的像素 把DP单位转换成像素单位 概述 安卓设备不仅有不同的大小,还有不同的像素深度.一个设备可能在每一英寸上有 160个像素,另一个设备在相同的尺度上有480个像素.如果你不考虑这些不同, 系统可能会缩放你的…

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…

AI学习指南概率论篇-信息论

AI学习指南概率论篇-信息论 信息论是信息科学中的一个重要分支,主要研究信息的量、质和流通规律等问题。在人工智能领域中,信息论被广泛应用于数据压缩、数据传输和模型优化等方面。本文将从信息论的概述、AI中的使用场景、定义和意义以及相关公式讲解这…

win11右键菜单恢复win10风格

有很多朋友升级到win11系统之后不是特别喜欢右键菜单,因为经常需要多点击一次显示更多选项,很不舒服。大家就想知道如何修改回原来win10的右键菜单,今天给大家介绍Win11右键菜单怎么修改为以前的样子,仅需执行2条明路,…

秒杀系统之设计方向

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

PostgreSQL自带的命令行工具24- postgres

PostgreSQL自带的命令行工具24- postgres postgres 命令主要是 PostgreSQL 数据库服务器的主要执行文件。当你启动 PostgreSQL 服务时,实际上就是在后台运行 postgres 程序。这个程序负责处理用户请求、执行 SQL 命令、管理数据库文件等核心数据库管理任务。通常&a…

深入理解tengine的sysguard模块

目录 1. 引言2. 开启sysguard模块2.1 编译2.2 配置3. 源码分析3.1 配置参数分析3.2 模块的初始化3.3 ngx_http_sysguard_handler函数3.4 各项负载指标的获取3.4.1 load系统负载的获取3.4.2 cpu使用率的获取3.4.3 内存使用情况的获取3.3.5 请求平均响应时间的获取1. 引言 Tengin…

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

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

windows驱动开发-inf文件(三)

持续讲解剩下inf节,剩下的几乎都是INF DDInstall 相关的部分,这部分其实非常多,不过我们只讲解最主要的部分,在inf文件说明的最后一篇文档中我们会说明原因。 INF-DefaultInstall 如果要生成 通用驱动程序包,则仅当具…

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

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

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

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