Aspose3D FOSS for Java는 5 개의 3D 파일 형식을 지원합니다.: OBJ, STL, GSTF, GLB,그리고, 그리고 FBX 이 게시물은 각각을 충전하고 저장하는 방법, 어떤 옵션이 사용할 수 있으며 그 사이를 변환하는 법을 보여주는 실용적인 형식-by-formate 가이드입니다.

모든 예를 사용하여 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예 예예 예아무도플랫폼
GST 2.0의 숫자.gltf예 예예 예PBR완전한
GLB.glb예 예예 예PBR완전한
FBX.fbx예 예아니오부자완전한

OBJ, STL, glTF 및 GLB는 수입과 수출 모두를 지원합니다. FBX는 지원됩니다. 오직 수입만으로도.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 형식으로 배포되는 자산 도서관에서 모델을 수입합니다.
  • 복잡한 장면 히어로키없이 지질학의 빠른 검사.

스테레오리토그래피 STL : 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 개의 구석만 기록합니다; quad 및 n-gon 얼굴은 조용히 흔들립니다. ASCII ST L는 모든 구멍 표시기를 얼굴에 기록하여 비 삼각형 얼굴을위한 잘못된 출력으로 생산합니다. 항상 STl로 수출 할 때 사전 삼면 (모든 삼촌 얼굴) 메시지를 사용합니다.
  • 이중 STL은 큰 모델의 ASCII STl보다 훨씬 작습니다.
  • STL은 목표가 3D 프린터 또는 슬라이저 소프트웨어인 경우 선택의 형식입니다.

GLTF : GL 전송 형식

glTF는 3D 콘텐츠, 특히 웹 및 실시간 응용 프로그램에서 효율적인 전송 및 충전을 위해 설계된 현대 형식입니다.이 형태는 PBR 자료, 장면 히어로시 및 애니메이션을 지원합니다.

글라트 파일을 다운로드

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 : 영화 박스 (수입만)

FBX는 게임 개발 및 디지털 콘텐츠 제작에 널리 사용되는 Autodesk의 소유 형식입니다. Aspose.3D FOSS for Java는 FBx를 지원합니다. 오직 수입만으로도 - FBX에 대한 수출은 사용할 수 없습니다.

이중 FBX만 사용합니다. FBX 수입자는 바이너리 FBx 파일만 읽습니다. ASCII 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 수출이 지원되지 않기 때문에, 가져온 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)에서 정적 메쉬 자산을 수입하고 다른 형식으로 변환합니다.
  • 바이너리 FBX 지메트리를 충전하고 glTF/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로 변환하고 결과를 저장합니다.이 패턴을 모든 원본 및 대상 형식 조합에 맞게 할 수 있습니다.

Cross-Format Conversion 참조

다음 테이블은 형식 사이의 변환에서 기대해야 할 것을 보여줍니다.

에서부터지질학재료히어로리노트
OBJSTL보존된잃어버린N/ASTL은 물질적 지원이 없습니다.
OBJGLT / GLB보존된PBR로 변환플랫폼가능한 경우 MTL 재료를 맵화
STLOBJ보존된아무도N/A출처에 있는 자료가 없습니다.
STLGLT / GLB보존된가상화플랫폼사용된 기본 자료
GSTFOBJ보존된단순화깔끔한PBR 기본 재료에 대 한
GSTFSTL보존된잃어버린깔끔한지질만으로도
FBXOBJ보존된단순화깔끔한물질적 단순화
FBXSTL보존된잃어버린깔끔한지질만으로도
FBXGLT / GLB보존된PBR로 변환보존된좋은 충성도

일반 변환 지침

  • 지질학 일반적으로 형식 쌍에 따라 보존되며, 중요한 예외는 하나입니다 : STL으로 수출 할 때 메시지는 삼각형 얼굴로 완전히 구성되어야합니다. 바이너리 ST L 조용히 첫 3 개의 계단에 쿼드와 n-gon 얼굴을 흔들어; ASCII STl은 비 삼위일체 얼굴에 대한 오류 된 출력을 생산합니다.
  • 재료 재료 데이터를 포함하는 glTF와 FBX-수입 장면 사이에서 가장 잘 살아남을 수 있습니다. STL로 변환하면 항상 재질이 떨어집니다. OBJ로 변화하면 기본 MTL 모델에 재물이 단순화됩니다.
  • 히어로시의 장면 OBJ와 STL은 평평한 구조를 생산합니다. FBX 히어로키와 재료 추출이 이 버전에서 완전히 확인되지 않습니다.

모두 함께 넣어

다음은 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 인쇄 파이프를 위한 것입니다.
  • GLT / GLB의 발음을 GLF [en] - 현대 PBR 용형 웹 및 실시간 사용. GltfSaveOptions 와 함께 setContentType(FileContentType.BINARY) GLB 생산에 대한.
  • FBX - 수입만; 게임 엔진 및 DCC 도구에서 자산을 충전하기위한 풍부한 형식.

옵션 클래스를 사용하여 형식 특정 로드 및 저장 (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions2) 수입 또는 수출 과정에 대한 얇은 제어가 필요할 때.

자세한 내용은 방문하시기 바랍니다. ASPOSE.3D 문서화 또는 출처를 탐색하십시오. GitHub.