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 참조
다음 테이블은 형식 사이의 변환에서 기대해야 할 것을 보여줍니다.
| 에서부터 | 는 | 지질학 | 재료 | 히어로리 | 노트 |
|---|---|---|---|---|---|
| OBJ | STL | 보존된 | 잃어버린 | N/A | STL은 물질적 지원이 없습니다. |
| OBJ | GLT / GLB | 보존된 | PBR로 변환 | 플랫폼 | 가능한 경우 MTL 재료를 맵화 |
| STL | OBJ | 보존된 | 아무도 | N/A | 출처에 있는 자료가 없습니다. |
| STL | GLT / GLB | 보존된 | 가상화 | 플랫폼 | 사용된 기본 자료 |
| GSTF | OBJ | 보존된 | 단순화 | 깔끔한 | PBR 기본 재료에 대 한 |
| GSTF | STL | 보존된 | 잃어버린 | 깔끔한 | 지질만으로도 |
| FBX | OBJ | 보존된 | 단순화 | 깔끔한 | 물질적 단순화 |
| FBX | STL | 보존된 | 잃어버린 | 깔끔한 | 지질만으로도 |
| FBX | GLT / 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.