Aspose.3D FOSS for Java 支持五种 3D 文件格式: OBJ, STL, 格拉特F, GLB,和 FBX 此帖子是一个实用的,格式为格格的指南,显示如何加载和保存每一个,哪些选项可用,以及如何在其中转换。.

所有例子都使用了 com.aspose.threed.* 包装:

import com.aspose.threed.*;

马文依赖:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

格式景观

在潜水之前,这里是四个支持的格式和其典型的使用案例的快速概述。.

格式化延伸进口出口材料支持舞台地理
OBJ.obj是的是的基本文件(MTL)平板
STL.stl是的是的无人平板
格拉特 2.0.gltf是的是的PBR全集
GLB.glb是的是的PBR全集
FBX.fbx是的富有全集

OBJ、STL、glTF 和 GLB 支持进口和出口。 仅进口.GLB(二进制GlTF)是通过 GltfSaveOptionssetContentType(FileContentType.BINARY).

标签:Wavefront Object

OBJ是最广泛支持的3D麦什格式之一,它将地质作为平板文本存储在选项上。 .mtl 材料的伴侣文件。.

收藏 OBJ 文件

最简单的方法是直接通过文件路径:

Scene scene = Scene.fromFile("model.obj");

更多控制,使用 ObjLoadOptions:

ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);

当 OBJ 文件引用 MTL 文档(通过 A)时, mtllib 图书馆将试图自动从中加载材料定义,MTL文件应与OBJ文件相同的目录或指定的路径。.

作为OBJ的储蓄

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");

使用案例的OBJ

  • 不同 3D 工具之间交换数据。.
  • 进口模型来自资产图书馆,分发在OBJ格式。.
  • 快速检查地质学,没有复杂的场景层。.

标签:Stereolithography

STL 是 3D 打印的标准格式,它代表无材料、颜色或场景层形状的原始三角地质。STL 的文件分为两种:ASCII(人类可读)和二进制(小型)。.

加载 STL 文件

// Simple load
Scene scene = Scene.fromFile("part.stl");

// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);

作为STL的储蓄

Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");

控制产量,使用 StlSaveOptions:

StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);

STL 评论

  • STL 仅存储三角形地质,材料、结构和场景层格都没有支持并被推向出口。.
  • STL 出口 不是 二元STL只写每个聚合物面部的前3垂直;四方和n-gon面孔是沉默地折叠的。ASCII STL写了每个垂向指数,产生不三角形面上的错误输出。.
  • 二进制STL比大型模型小得多。.
  • STL 是选择的格式,当目标是一个 3D 打印机或滑板软件时。.

GLTF:GL传输格式

glTF 是一种现代格式,用于有效传输和加载 3D 内容,特别是在网页上以及实时应用程序中。.

加载GLTF文件

Scene scene = Scene.fromFile("scene.gltf");

// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);

作为GLTF的储蓄

基本保存使用文件扩展来确定格式:

scene.save("output.gltf");

详细控制,使用 GltfSaveOptions:

GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);

scene.save("output.gltf", opts);

格拉特SaveOptions详细信息

方法目的
setFlipCoordinateSystem(boolean)在出口时将坐标系统轴滑动,在从Y-up转换为Z-Up或相反时有用。.
setPrettyPrint(boolean)格式化 JSON 输出,以便可读性。 false 以生产中的小文件大小为准。.

GLTF 使用案例

  • 基于网页的3D观众(three.js,Babylon.JS)。.
  • 实时应用和游戏引擎。.
  • 通过工具保存PBR材料定义。.

FBX: Filmbox (仅进口)

FBX 是 Autodesk 的属性格式,在游戏开发和数字内容创建中广泛使用。 Aspose.3D FOSS for Java 支持 FBx for 仅进口 出口到 FBX 不可用。.

二元FbX。. FBX 进口商只阅读二进制 FB X 文件。 ImportException("ASCII FBX format not yet supported - only binary FBX is supported").节点的序列和从 FBX 中提取材料不完全验证;复杂的 FB X 场景可能不会完全加载。.

加载 FBX 文件

Scene scene = Scene.fromFile("character.fbx");

// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);

将 FBX 转换为其他格式

由于 FBX 出口不支持,将进口的 FB X 场景转换为 glTF、GLB、OBJ 或 STL:

Scene scene = Scene.fromFile("character.fbx");

// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);

FBX 使用案例

  • 从 Autodesk 工具(Maya, 3ds Max)进口静态的机械资产并转换为其他格式。.
  • 加载二进制FBX地质和重新出口到GLB,OBJ或STL。.

巴特克转换

一个常见的工作流是将整个文件目录从一个格式转换为另一个。:

import com.aspose.threed.*;
import java.io.File;

public class BatchConvert {
    public static void main(String[] args) throws Exception {
        File inputDir = new File("models/obj");
        File outputDir = new File("models/gltf");
        outputDir.mkdirs();

        GltfSaveOptions saveOpts = new GltfSaveOptions();
        saveOpts.setPrettyPrint(true);

        File[] objFiles = inputDir.listFiles(
            (dir, name) -> name.toLowerCase().endsWith(".obj")
        );

        if (objFiles == null) return;

        for (File objFile : objFiles) {
            String baseName = objFile.getName()
                .replaceFirst("\\.obj$", "");

            Scene scene = Scene.fromFile(objFile.getAbsolutePath());
            String outPath = new File(outputDir, baseName + ".gltf")
                .getAbsolutePath();

            scene.save(outPath, saveOpts);
            System.out.println("Converted: " + objFile.getName()
                + " -> " + baseName + ".gltf");
        }
    }
}

这一切都负担着 .obj 文件在一个目录,每个转换到 glTF 与精致打印的输出,并保存结果. 你可以调整这个模式为任何源和目标格式组合。.

交叉格式转换参考

下表显示在格式之间转换时需要期待什么。.

地质学材料希拉里笔记
OBJSTL保存失去的N/ASTL 没有物质支持
OBJ格拉特 / GLB保存转换为PBR平板可在可能的情况下地图的MTL材料
STLOBJ保存无人N/A没有源材
STL格拉特 / GLB保存假设平板使用的虚假材料
格拉特FOBJ保存简化平板PBR 到基本材料
格拉特FSTL保存失去的平板仅限地质
FBXOBJ保存简化平板材料简化
FBXSTL保存失去的平板仅限地质
FBX格拉特 / GLB保存转换为PBR保存善良忠诚

通用转换指南

  • 地质学 一般保存在格式对,一个重要例外:当出口到STL时,面板必须完全由三角形面孔组成。.
  • 材料 最好在 glTF 和 FBX 进口的场景之间生存,其中包含材料数据。转换为 STL 总是会放下材料.转变为 OBJ 简化材料到基本 MTL 的模型。.
  • 舞台地理 保留在 glTF 格式文件之间. OBJ 和 STL 生产平板结构. FBX 序列和材料提取不完全验证在此版本。.

把它全部聚集在一起

以下是一个完整的例子,它上传OBJ文件,检查其节点,并出口到GLB和GlTF:

import com.aspose.threed.*;

public class FormatWorkflow {
    public static void main(String[] args) throws Exception {
        // Load
        Scene scene = Scene.fromFile("input.obj");

        // Inspect
        System.out.println("Nodes in scene:");
        for (Node child : scene.getRootNode().getChildNodes()) {
            System.out.println("  " + child.getName());
            Transform t = child.getTransform();
            System.out.println("    Translation: "
                + t.getTranslation());
        }

        // Export to glTF with options
        GltfSaveOptions gltfOpts = new GltfSaveOptions();
        gltfOpts.setPrettyPrint(true);
        scene.save("output.gltf", gltfOpts);

        // Export to GLB (binary glTF)
        GltfSaveOptions glbOpts = new GltfSaveOptions();
        glbOpts.setContentType(FileContentType.BINARY);
        scene.save("output.glb", glbOpts);

        System.out.println("Export complete.");
    }
}

总结

Aspose.3D FOSS for Java 为您提供多种格式的一致 API。:

  • OBJ 简单的面具与基本材料交换。.
  • STL 仅为3D打印管道的地质格式。.
  • 格拉特 / GLB 现代可用于网页和实时使用的PBR格式。 GltfSaveOptionssetContentType(FileContentType.BINARY) 对于GDP的产量。.
  • FBX 仅进口;丰富的格式,用于从游戏发动机和DCC工具上传资产。.

使用格式特定的加载和保存选项类(ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions( )当您需要对进口或出口过程进行精细控制时。.

更多详细信息,请参观 阿波斯3D文档 或者,点击源头。 GitHub.