GLTF vs FBX:应该使用哪种格式?

在线工具推荐: 3D数字孪生场景编辑器 -  GLTF/GLB材质纹理编辑器 -  3D模型在线转换 -  Three.js AI自动纹理开发包 -  YOLO 虚幻合成数据生成器 -  三维模型预览图生成器 -  3D模型语义搜索引擎

概括地说,如果要将数据传输到 Unity 或虚幻引擎等游戏引擎,或者在 Clara.io、Maya 或 3DS Max 等 3D 工具之间传输数据,则 FBX 文件格式比 glTF 更好。如果您想通过 Internet 有效地传输 3D 场景数据以在远程应用程序中查看,例如用于增强现实,则 glTF 格式比 FBX 更好。

Autodesk FBX

FBX文件格式是什么?Autodesk FBX 文件格式是 3D 编辑器和游戏引擎之间使用的一种流行的 3D 数据交换格式。它最初是作为 Kaydara 的 Filmbox 动作捕捉工具的原生文件格式创建的。FBX 格式名称和扩展名派生自该应用程序名称 FilmBox。2005 年,Kaydara 发布了一个公共 SDK,用于其他封闭和专有的 FBX 文件格式,并参与了一项协调一致的公关活动,以鼓励采用 FBX 文件格式在不同工具之间进行高质量的 3D 数据交换。Filmbox最终更名为MotionBuilder,后来被Autodesk收购。

优点

1、单独的位置、UV 和法线拓扑结构:

FBX文件格式的一个优点是,它可以存储具有不同拓扑的位置、UV和法线数据,OBJ 3D模型格式也共享该格式。这非常适合高质量的建模工具,并支持精确的细分曲面等复杂功能。这使得将这些模型加载到游戏引擎中变得有点困难,因为这些数据需要进行预处理才能统一所有拓扑结构。

glTF 与 FBX:来自 glTF 的 glTF 说明性图像

2、强大的SDK

如果您使用的是 SDK 支持的语言,它非常强大且使用起来非常方便。导入和导出 FBX 文件的过程是一个相对简单明了的过程,即链接 SDK,然后使用其 API 将数据流式传输入和流出。文件格式的所有复杂性对集成 SDK 的软件开发人员来说都是隐藏的。而且您无需担心 SDK 是否支持所有 FBX 功能,因为它是官方且唯一的 FBX SDK。

这与 glTF 和 COLLADA 等主要书面标准形成鲜明对比,后者很复杂且相对容易错误实现。这些书面标准很少由不同的团队实施,并且仍然完全兼容。

3、兼容性好

由于 SDK 读取所有以前版本的 FBX 文件格式,因此最现代的工具版本可以正确读取其他工具生成的 FBX 文件。即使 FBX 文件格式发生变化,SDK 也可以确保通过对 SDK 用户透明的不同代码路径读取旧格式和新格式。因此,FBX 并没有充斥着困扰类似复杂格式(如 COLLADA (.dae))的兼容性问题。如果 FBX 正确支持某项功能,它可以在应用程序之间传输该数据,而无需太多顾虑。

4、广泛的功能支持

FBX 格式是支持其格式中各种数据的黄金标准。FBX 支持 3D 模型、场景层次结构、材质照明、动画、骨骼、蒙皮和混合形状。由于 FBX 是一种较旧的格式,因此还支持目前不再广泛使用的数据,例如 NURBS 曲面和曲线。当您选择 FBX 作为交换格式时,您就知道它可能代表您需要的几何数据。

5、快速高效

FBX 文件格式,因为它使用二进制格式,所以效率很高。将数据存储为二进制时,写入和读取数据的速度更快,这与必须将二进制数据与人类可读数字相互转换的基于文本的格式相反。它在空间方面也很有效,因为数字的二进制表示比人类可读的数字占用更少的空间。如果您需要直接读取和写入二进制格式,它们通常可能很复杂,但 FBX SDK 会向用户隐藏这一点。

缺点

1、封闭格式

FBX 格式的最大缺点是它是一种封闭格式。访问 FBX 文件中数据的唯一官方方法是使用官方 SDK。您无法在 FBX SDK 未正式支持的系统(例如在 Web 浏览器或开源应用程序中)加载 FBX。也就是说,经过几年的努力,Blender 已经成功地对当前版本的 FBX 格式进行了逆向工程。

由于 FBX 是一种封闭格式,因此除了其所有者的 Autodesk 之外,任何人都不可能改进该格式,并且它最近没有进行任何更新。

2、广泛的功能支持

虽然这在优点中列出,但它也可能是一个缺点。FBX 广泛数据支持的问题在于,它的许多支持数据类型都是遗留的,不再经常使用。除了过时的材质和照明模型(如下所述)外,FBX 还支持 NURBS 曲面和曲线。这些支持非常复杂,因为它们需要完整的 CAD 内核才能成为 FBX SDK 的一部分。NURBS 支持等传统功能大大增加了 FBX 文件格式的复杂性,使其难以维护且成本高昂。它的SDK非常大,很难集成到手机游戏或其他大小受限的应用程序中。

3、遗留材料

FBX 文件格式使用 1990 年代的照明模型,该模型以 Blinn-Phong 规范光泽模型为前提,以及每种材料属性的单一颜色或纹理。虽然这对于极简主义的材质表示来说已经足够了,但它并不能反映现代 3D 编辑器或游戏引擎的功能,这些编辑器或游戏引擎利用复杂的着色器网络与以粗糙度-金属度为中心的基于物理的渲染 (PBR) 材质模型协同工作。简单的 FBX 材质也不支持次表面散射、适当的分层材质或各向异性效果。由于 FBX 材料模型的严格限制,3D 模型上的大多数材料在通过 FBX 格式在工具之间传输后必须重做。

4、传统照明

FBX 中的照明模型再次使用 1990 年代的惯例。像 Threekit 这样的现代游戏和工具使用基于物理的照明模型,其中所有照明参数都基于物理量,例如流明、光度和基于物理的衰减。现代游戏引擎希望传输全局照明信息,例如光照探针和基于图像的照明,但 FBX 不支持这一点。FBX 使用更具历史意义和任意性的照明模型,这使得使用更现代和基于物理的方法的工具之间难以进行通信。与材质一样,使用 FBX 文件格式传输的大多数照明信息在导入其目标应用程序后都必须进行修复或简单地重做。

Khronos  glTF

glTF是什么格式?glTF 格式是一种开放的 3D 模型和场景格式,旨在高效传输丰富的场景 3D 数据。自 2013 年以来,它一直由 Khronos Group 创建和管理。glTF 是 Graphics Language Transmission Format 的首字母缩写词。

优点

1、易于读写

您可以使用许多开源库之一将 glTF 文件读取到自定义应用程序中,也可以自己编写导入器。glTF 格式使用 JSON 描述符文件来描述 glTF 的内容及其属性。开发人员直接读取和写入非常容易,甚至比 OBJ 文件格式更易于读取,因为 JSON 本身是一种灵活的人类可读文件格式标准,具有大多数语言可用的解析器。

GLTF 可视化材质编辑器

2、快速高效

与 FBX 文件格式一样,GL 传输格式 (glTF) 将 3D 几何体的主要批量数据存储在二进制文件中。二进制文件的读取由 JSON 描述符文件指导。这意味着 glTF 平均小 5 倍,读取速度比将批量 3D 几何图形存储为人类可读文本的文件格式快 10 倍以上(如 OBJ)。

3、游戏引擎的直接读取

在游戏引擎的上下文中,glTF 的读取速度甚至比 FBX 更快,因为它将其网格数据存储在统一的拓扑中。这意味着游戏引擎可以将 glTF 中的数据直接读取到 GPU 内存中,然后在屏幕上渲染生成的图形,而无需对 OBJ 网格数据进行中间处理。

4、来自标准组的指导

标准组通常被视为繁琐而笨拙的官僚机构,但就文件格式而言,标准组具有多种好处。他们确保文件格式随着技术趋势而不断发展,并且各个供应商就文件格式如何在各种工具中实现达成一致,以确保兼容性。此外,标准小组编写明确的规范并发布一致性测试工具,当存在分歧时,每个人都可以参考这些工具。Khronos 正在做所有这些事情来支持 glTF 未来的增长和采用。

5、丰富的场景数据

FBX示意图

glTF 文件除了存储模型和材料外,还能够存储动画数据、骨骼、蒙皮、场景层次结构以及灯光(通过扩展)。这意味着 glTF 既可用于单个静态模型(如 OBJ),也可以用于动画角色和完整的复杂场景,类似于 FBX 文件。

GLTF编辑器支持GLTF/GLB在线预览、材质编辑、重置原点、以及模型轻量化(将相同材质Mesh合并)。GLTF editor supports GLTF/GLB online preview, material editing, reset origin, and model lightweight (merging the same material Mesh)

6、增强现实

glTF 正在成为将数据流式传输到基于 Web 和基于应用程序的增强现实应用程序的标准。谷歌和Facebook已经将其用于此目的。这是因为它快速、高效,并且允许游戏引擎直接读取。因为它是官方标准,所以世界各地的供应商都可以支持写入这种格式。

缺点

1、不可编辑的 3D 模型

与 FBX 相比,glTF 的最大缺点之一是其 3D 模型数据的存储格式更加简单。它不允许位置、UV 和法线数据使用不同的拓扑结构。虽然如果您希望直接读取游戏引擎的速度,这是有益的,但这意味着修改 3D 模型可能非常困难。最好将 glTF 当前的 3D 模型存储格式视为发布 3D 模型以供查看的一种方式,而不是作为高保真 3D 建模存储角色。如果要存储 3D 资源以供以后编辑,最好不要使用 glTF。

2、无着色器网络

与 FBX 类似,glTF 中的当前材料定义有点简单。它比 FBX 材质定义更现代一些,但几乎没有。它无法与Maya、Clara.io 和虚幻引擎等现代3D工具中可以表示的材质复杂性相提并论。目前以强大而灵活的方法表示材质的最新方法是通过着色器网络。glTF 不支持着色器网络,因此如果您想编辑材质,它不是最佳文件格式。相反,当您想要发布模型以供其他人查看时,您可以转换为一种格式。

3、非向后兼容扩展

glTF 标准委员会允许对 glTF 格式进行特定于供应商的扩展。这些扩展虽然提供了其他功能,但目前不保证与不支持这些供应商特定扩展的 glTF 查看器或读取器的向后兼容性。这意味着,每当这些非向后兼容的扩展名仅由单个供应商采用时,文件格式就会碎片化。随着更多这些特定于供应商的扩展的出现,用户将更难在供应商工具之间实现 glTF 兼容性。FBX 文件格式不会发生这种类型的碎片。

总结

如果您希望在分发 3D 模型以在游戏引擎或查看器中使用时获得复杂的场景、动画、灯光和效率,请使用 glTF 格式。当您确切知道哪个工具将生成 glTF 文件以及哪个工具将读取 glTF 文件以确保它们完全兼容时,这尤其理想。

如果您希望能够保存和加载 3D 模型和场景,然后进行编辑,请选择 FBX。FBX 保证了工具之间的兼容性,至少对于它支持的功能而言,并且它的数据表示比 glTF 更精确。FBX 不应成为与开源工具进行通信或偏爱简单性的地方的首选。

转载:GLTF vs FBX:应该使用哪种格式? (mvrlink.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用VS Code修改源代码的编码格式

用VS Code打开一个编码格式为GB2312的源代码文件,中文部分显示为乱码 这是因为VS Code默认解码格式为UTF-8 此时我们点击上面红框这个位置,命令面板弹出两个选项,选择通过编码重新打开 可以看到VS Code已经猜测出该文件就是GB 2312编码的…

DDPM推导笔记

各位佬看文章之前,可以先去看看这个视频,并给这位up主点赞投币,这位佬讲解的太好了:大白话AI 1.前置知识的学习 1.1 正态分布特性 ​ (1)正态分布的概率密度函数 f ( x ) 1 2 π σ e − ( x − μ ) …

机器学习 | 集成学习

团结就是力量! Ensemble Learning 兼听则明,偏信则暗。 集成学习既是一种思想也是一类算法,它是建立在其他机器学习的算法之上,研究怎么让不同的算法之间进行协同。 既可以监督学习,也可以无监督学习。 集成学习用机器…

本地运行vue脚手架 从下载node开始到创建vue

vue2node 1.安装node vue2版本我node一般使用的是14版本左右 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f886442c20114e62aef8113425e34ad2.pngnode官网 假如我node版本过低 你就找到控制面板 找到node卸载掉 我一般下载两个版本 安装vue cli vuecl…

element下拉框背景/选中/鼠标移入样式设置

问题在页面内写穿透无效 <style lang"scss" scoped> // 这个有效::v-deep .el-input--mini .el-input__inner {background: transparent;color: #fff;border: 1px solid #093B9E;} </style>直接在标签内写 <style> .el-select-dropdown__list {b…

【uniapp】uniapp中本地存储sqlite数据库保姆级使用教程(附完整代码和注释)

数据库请求接口封装 uniapp中提供了plus.sqlite接口&#xff0c;在这里我们对常用的数据库请求操作进行了二次封装 这里的dbName、dbPath、recordsTable 可以根据你的需求自己命名 module.exports {/** * type {String} 数据库名称*/dbName: salary,/*** 数据库地址* type {…

3842充电器电路图大全

3842充电器电路图&#xff08;一&#xff09; UC3842组成的充电器电路 图1中C1、V1&#xff5e;V4、C2组成滤波整流电路&#xff0c;变压器T为高频变压器&#xff0c;V5、R2、C11组成功率开关管V7的保护电路&#xff0c;NF为供给IC电源的绕组。单端输出IC为UC3842&#xff0c;…

在Linux安装的Docker中开启IPv6

先在Linux中安装docker&#xff0c;然后在docker中开启IPv6。 安装docker 第一步&#xff0c;卸载旧版本docker。 若系统中已安装旧版本docker&#xff0c;则需要卸载旧版本docker以及与旧版本docker相关的依赖项。 命令&#xff1a;yum -y remove docker docker-client do…

Sirius:一款功能强大的通用漏洞扫描工具

关于Sirius Sirius是一款功能强大的通用漏洞扫描工具&#xff0c;该工具可以帮助广大研究人员在大多数场景下识别和验证应用程序中存在的安全漏洞。 现如今&#xff0c;信息安全社区仍然是收集网络安全情报数据最佳且最有利的来源&#xff0c;而且社区本身的表现经常会优于商…

SparkSQL的编程模型(DataFrame和DataSet)

1.2 SparkSQL的编程模型(DataFrame和DataSet) 1.2.1 编程模型简介 主要通过两种方式操作SparkSQL&#xff0c;一种就是SQL&#xff0c;另一种为DataFrame和Dataset。 SQL SQL不用多说&#xff0c;就和Hive操作一样&#xff0c;但是需要清楚一点的时候&#xff0c;SQL操作的是…

C#联合halcon开发,连接相机颜色不对,无法连接相机

相机可以在海康软件MVS中打开&#xff08;颜色正常&#xff09;&#xff0c;但是在C#开发的程式中无法打开&#xff08;彩色相机颜色显示异常&#xff09;。 1.异常处理 1.查看相机和MVS软件是否连接成功&#xff1b; 2.如果成功&#xff0c;连接C#程序&#xff1b; 3.程序连接…

usb端口管理软件有哪些(usb端口管理软件)

USB端口管理软件在当今的计算机使用中扮演着越来越重要的角色。随着USB设备的普及&#xff0c;如U盘、移动硬盘、数码相机等&#xff0c;相应的管理软件也变得越来越受欢迎。 1、USB端口管理软件可以帮助用户更好地管理和控制U盘的使用。 在插入U盘时&#xff0c;软件可以自动…

GEE:基于MCD64A1的GlobFire火灾斑块检测数据集

作者&#xff1a;CSDN _养乐多_ 本文将介绍 Google Earth Engine&#xff08;GEE&#xff09;上存档的 JRC/GWIS/GlobFire/v2/FinalPerimeters 数据集。 文章目录 一、背景介绍1.1 MCD64A1数据集1.2 GlobFire1.3 参考文献1.4 GEE上存档 二、案例代码2.1 查看所有数据ID2.2 可…

Python---TCP 网络应用程序开发流程

1. TCP 网络应用程序开发流程的介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发TCP 服务端程序开发 说明: 客户端程序是指运行在用户设备上的程序 服务端程序是指运行在服务器设备上的程序&#xff0c;专门为客户端提供数据服务。 2. TCP 客户端程序开发流程的介绍 步…

java并发编程三 共享内存的问题和synchronized解决方案

文章目录 共享带来的问题synchronized 解决方案方法上的 synchronized 共享带来的问题 小故事 老王&#xff08;操作系统&#xff09;有一个功能强大的算盘&#xff08;CPU&#xff09;&#xff0c;现在想把它租出去&#xff0c;赚一点外快 小南、小女&#xff08;线程&…

世微 AP5186 3.6-100V 三功能降压恒流LED驱动IC

产品描述 AP5186 是一款集成三功能的开关降压型 LED 恒流驱动器。通过电源的接通与关断可实现 功能之间的切换&#xff1a;100%全亮→25%暗亮→爆闪。 AP5186 内部还集成了 VDD 稳压管&#xff0c;过温保护电路&#xff0c;短路保护电路等&#xff0c;用少量的元器 件即可提供…

Pip:基本命令和使用的指南,实现有效的包管理

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习产出&#xff1a; 介绍 Pip 工具&#xff1a;Pip 是 Python 包管理工具&#xff0c;可以帮助用户方便地安装、管理和升级 Python 包&#xff1a; 安装 Pip 工具&#xff1a;学习如何在不同操作系统上…

国产系统-银河麒麟桌面版系统进入root用户

系统版本 :::warning 银河麒麟桌面版操作系统V10 ::: 方式1 :::warning sudo suroot即便设置了密码,这种方式也可以进入 ::: demodemo-pc:~/桌面$ sudo su 输入密码 rootdemo-pc:/home/demo/桌面#方式2 :::warning root用户设置了密码,直接su root进入 ::: root设置密码 …

用模型预测测试数据

Hi, I’m Shendi 2、用模型预测测试数据 在之前已经训练好了一个模型&#xff0c;可以通过 model.save("path") 来保存模型到硬盘&#xff0c;下次直接使用。 这个模型使用的 mnist 数据集训练&#xff0c;这个数据集包含6万训练样本和一万测试样本&#xff0c;28*28…

12 Vue3中使用v-if指令实现条件渲染

概述 v-if指令主要用来实现条件渲染&#xff0c;在实际项目中使用得也非常多。 v-if通常会配合v-else-if、v-else指令一起使用&#xff0c;可以达到多个条件执行一个&#xff0c;两个条件执行一个&#xff0c;满足一个条件执行等多种场景。 下面&#xff0c;我们分别演示这三…