Aspose.3D FOSS for Java은 다섯 가지 3D 파일 형식을 지원합니다: OBJ, STL, glTF, GLB, 및 FBX (가져오기 전용).

모든 예제는 com.aspose.threed.* 패키지:

import com.aspose.threed.*;

Maven 의존성:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-3d-foss</artifactId>
    <version>26.1.0</version>
</dependency>

포맷 개요

본격적으로 시작하기 전에, 지원되는 네 가지 포맷과 일반적인 사용 사례에 대한 간략한 개요를 제공합니다.

형식확장자가져오기내보내기재질 지원씬 계층 구조
OBJ.obj기본 (MTL 파일)플랫
STL.stl없음평평한
glTF 2.0.gltfPBR전체
GLB.glbPBR전체
FBX.fbx아니오풍부한전체

OBJ, STL, glTF, 및 GLB는 가져오기와 내보내기를 모두 지원합니다. FBX는 지원됩니다 가져오기 전용. GLB (binary glTF)는 다음을 통해 생성됩니다 GltfSaveOptions 와 함께 setContentType(FileContentType.BINARY).

OBJ: 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 파일을 (via a mtllib 지시문), 라이브러리는 자동으로 해당 파일에서 재료 정의를 로드하려고 시도합니다. MTL 파일은 OBJ 파일과 동일한 디렉터리에 있거나 지시문에 지정된 경로에 있어야 합니다.

OBJ로 저장

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

OBJ 사용 사례

  • 다양한 3D 툴 간에 메시 데이터를 교환합니다.
  • OBJ 형식으로 배포되는 에셋 라이브러리에서 모델을 가져오기.
  • 복잡한 씬 계층 구조 없이 기하학을 빠르게 확인.

STL: 스테레오리소그래피

STL은 3D 프린팅을 위한 표준 포맷입니다. 재료, 색상, 씬 계층 구조 없이 순수한 삼각형 기하학을 나타냅니다. STL 파일은 두 가지 변형이 있습니다: ASCII(사람이 읽을 수 있는)와 binary(압축된).

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이 ASCII STL보다 훨씬 작습니다.
  • STL은 대상이 3D 프린터나 슬라이서 소프트웨어일 때 선호되는 포맷입니다.

glTF: GL 전송 포맷

glTF는 3D 콘텐츠를 효율적으로 전송하고 로드하도록 설계된 최신 포맷으로, 특히 웹 및 실시간 애플리케이션에서 사용됩니다. PBR 재질, 씬 계층 구조 및 애니메이션을 지원합니다.

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);

GltfSaveOptions 세부 정보

방법목적
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를 지원합니다 가져오기만 – FBX로 내보내기가 지원되지 않습니다.

FBX 파일 로드

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

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

FBX를 다른 포맷으로 변환

FBX 내보내기가 지원되지 않으므로, 가져온 FBX 씬을 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)에서 자산을 가져와 다른 포맷으로 변환합니다.
  • 리깅된 캐릭터와 애니메이션 씬을 glTF/GLB로 다시 내보내기 위해 로드 중입니다.

일괄 변환

일반적인 워크플로는 전체 디렉터리의 파일을 한 형식에서 다른 형식으로 변환하는 것입니다. 다음은 일괄 변환을 위한 패턴입니다:

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 디렉터리의 파일을 로드하고, 각각을 pretty-printed 출력으로 glTF로 변환한 뒤 결과를 저장합니다. 이 패턴을 모든 소스 및 대상 포맷 조합에 맞게 적용할 수 있습니다.

크로스 포맷 변환 레퍼런스

다음 표는 형식 간 변환 시 기대할 수 있는 내용을 보여줍니다.

출발도착기하학재질계층 구조메모
OBJSTL보존된손실된N/ASTL은 재질 지원이 없습니다
OBJglTF/GLB보존됨PBR로 변환됨플랫가능한 경우 MTL 재질을 매핑함
STLOBJ보존됨없음N/A소스에 재질이 없습니다
STLglTF/GLB보존됨기본플랫기본 재질이 적용되었습니다
glTFOBJ보존됨단순화평탄화PBR을 기본 재질로
glTFSTL보존됨손실된평탄화된기하학만
FBXOBJ보존됨단순화된평탄화된재료 단순화
FBXSTL보존됨손실됨평탄화됨기하학만
FBXglTF/GLB보존됨PBR로 변환됨보존됨우수한 충실도

일반 변환 가이드라인

  • 기하학 모든 포맷 쌍에서 항상 보존됩니다.
  • 재료 glTF와 FBX 중에서 더 잘 유지됩니다. 두 형식 모두 풍부한 재질 모델을 지원합니다. STL로 변환하면 항상 재질이 사라집니다. OBJ로 변환하면 재질이 기본 MTL 모델로 단순화됩니다.
  • 씬 계층 구조 glTF와 FBX 사이에서 보존됩니다. OBJ와 STL은 평면 구조를 생성합니다.

전체 정리

다음은 OBJ 파일을 로드하고, 노드를 검사한 뒤 glTF와 GLB 모두로 내보내는 완전한 예제입니다:

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 프린팅 파이프라인을 위한 기하학 전용 포맷.
  • glTF / GLB – 웹 및 실시간 사용을 위한 최신 PBR 지원 포맷. 사용 GltfSaveOptions 와 함께 setContentType(FileContentType.BINARY) GLB 출력용.
  • FBX – import only; 게임 엔진 및 DCC 툴에서 에셋을 로드하기 위한 풍부한 포맷.

포맷별 로드 및 저장 옵션 클래스 사용 (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) 필요에 따라 가져오기 또는 내보내기 프로세스를 세밀하게 제어해야 할 때.

자세한 내용은 다음을 방문하십시오 Aspose.3D 문서 또는 소스를 다음에서 찾아보세요 GitHub.