admin管理员组

文章数量:1604751

文章目录

  • 1、gltf格式简介
  • 2、C# 代码
    • 2.1 3dsMax/maya导出插件(Babylon.js)
  • 2、python代码
    • 2.1 gltflib (v2.0)
  • 3、JavaScript代码
    • 3.1 OBJ2GLTF(CesiumGS)
    • 3.2 three.js编辑器
    • 3.2 A-Frame编辑器
  • 4、C++代码
    • 4.1 COLLADA2GLTF
    • 4.2 FBX2glTF
  • 结语

1、gltf格式简介

glTF(GL传输格式)是Khronos的一个开放项目,它为3D资产提供了一种通用的、可扩展的格式,这种格式既高效又与现代web技术高度互操作。The gltf-model组件使用glTF ( .gltf或 .glb)文件来加载模型数据。请注意,glTF是一个相当新的规范,采用率仍在增长。

陈旧的obj格式只支持顶点、法线、纹理坐标和基本材质,而glTF提供了一组更强大的功能。除上述所有内容外,glTF还提供:

  • 层级对象
  • 场景信息(光源,相机)
  • 骨骼结构与动画
  • 更可靠的材质和着色器
  • 对于没有动画的简单模型,OBJ仍然是一个常见而可靠的选择。

和COLLADA相比,支持的功能非常相似。然而,由于glTF侧重于提供“传输格式”而不是编辑器格式,因此它与web技术的互操作性更强。类似地,.PSD(Adobe Photoshop)格式有助于编辑二维图像,但图像会转换为.JPG格式以供在web上使用。同样,glTF是一种更简单的传输3D资源的方式,同时呈现相同的结果。

2、C# 代码

2.1 3dsMax/maya导出插件(Babylon.js)

Exporters for Babylon.js and gltf file formats

https://github/BabylonJS/Exporters/releases


下载之后,解压如下:

将上面解压的文件夹里面的所有复制到3dsmax的特定文件夹里,如下图所示:

然后重新启动3dsmax,菜单栏会出现Babylon的菜单,见下图的红圈圈:

选择需要导出的场景模型,点击菜单之后,弹出如下的导出设置对话框。

2、python代码

2.1 gltflib (v2.0)

详细操作见作者的另一篇文章:

【CAD开发】glTF和b3dm文件格式读取(C++,Python)
https://blog.csdn/hhy321/article/details/121916664

3、JavaScript代码

3.1 OBJ2GLTF(CesiumGS)

Convert OBJ assets to glTF 2.0.

https://github/CesiumGS/obj2gltf

  • 安装库
npm install -g obj2gltf
  • 命令行运行
obj2gltf -i model.obj
obj2gltf -i model.obj -o model.gltf
obj2gltf -i model.obj -o model.glb
  • 代码运行
const obj2gltf = require("obj2gltf");
const fs = require("fs");
const options = {
  binary: true,
};
obj2gltf("model.obj", options).then(function (glb) {
  fs.writeFileSync("model.glb", glb);
});

3.2 three.js编辑器

https://threejs/editor/

与three.js 编辑器的集成非常简单,该编辑器支持导入大量 3d 格式,它可以用作从这些格式到 glTF 的高级转换器。

3.2 A-Frame编辑器

https://aframe.io/examples/showcase/modelviewer/

A-Frame提供了加载glTF, OBJ, COLLADA模型的组件。我们推荐尽可能使用glTF,因为glTF被采纳为通过web传输3d模型的标准。我们可以编写任何three.js支持的文件格式的加载组件:three.js loader。我们也可以在社区中尝试查找组件,找到用来处理其他的格式(比如,PLY, FBX, JSON)的现成组件。
A-Frame可以通过左上角的工具栏按钮导出gltf文件。

4、C++代码

4.1 COLLADA2GLTF

A command-line tool to convert COLLADA (.dae) files to glTF.

  • 下载代码
git clone --recursive https://github/KhronosGroup/COLLADA2GLTF.git
  • 编译
cd COLLADA2GLTF
mkdir build
cd build
cmake .. #-Dtest=ON
# Linux
make
# Windows
## Open the generated COLLADA2GLTF.sln in Visual Studio and build
  • 运行
COLLADA2GLTF[.exe] [input] [output] [options]

4.2 FBX2glTF

A command-line tool for the conversion of 3D model assets on the FBX file format to the glTF file format.

https://github/facebookincubator/FBX2glTF

This is a command line tool for converting 3D model assets on Autodesk’s venerable FBX format to glTF 2.0, a modern runtime asset delivery format.

Precompiled binaries releases for Windows, Mac OS X and Linux may be found here.

FBX2glTF ~/models/butterfly.fbx

FBX2glTF --binary --draco --verbose \
          --input ~/models/source/butterfly.fbx \
          --output ~/models/target/butterfly.glb
FBX2glTF 0.9.7: Generate a glTF 2.0 representation of an FBX model.
Usage: FBX2glTF [OPTIONS] [FBX Model]
  • 运行测试如下:
    准备一个测试的文件:duck.fbx

    测试相关文件放在一个文件夹里,如下:

    在命令行中执行如下指令:
FBX2glTF-windows-x64.exe duck.fbx


生成一个结果文件夹,里面有生成的gltf文件。


在vscode里面测试转化的gltf文件,如下:

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进。o_O???
如果您需要相关功能的代码定制化开发,可以留言私聊作者。(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文标签: 文件格式转换工具gltfcadjs