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)是通过 GltfSaveOptions 与 setContentType(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 与精致打印的输出,并保存结果. 你可以调整这个模式为任何源和目标格式组合。.
交叉格式转换参考
下表显示在格式之间转换时需要期待什么。.
| 从 | 到 | 地质学 | 材料 | 希拉里 | 笔记 |
|---|---|---|---|---|---|
| OBJ | STL | 保存 | 失去的 | N/A | STL 没有物质支持 |
| OBJ | 格拉特 / GLB | 保存 | 转换为PBR | 平板 | 可在可能的情况下地图的MTL材料 |
| STL | OBJ | 保存 | 无人 | N/A | 没有源材 |
| STL | 格拉特 / GLB | 保存 | 假设 | 平板 | 使用的虚假材料 |
| 格拉特F | OBJ | 保存 | 简化 | 平板 | PBR 到基本材料 |
| 格拉特F | STL | 保存 | 失去的 | 平板 | 仅限地质 |
| FBX | OBJ | 保存 | 简化 | 平板 | 材料简化 |
| FBX | STL | 保存 | 失去的 | 平板 | 仅限地质 |
| 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格式。
GltfSaveOptions与setContentType(FileContentType.BINARY)对于GDP的产量。. - FBX 仅进口;丰富的格式,用于从游戏发动机和DCC工具上传资产。.
使用格式特定的加载和保存选项类(ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions( )当您需要对进口或出口过程进行精细控制时。.