기능 및 특성

기능 및 특성

이 페이지는 모든 주요 기능 영역에 대해 다룹니다 aspose-3d-foss 26.1.0 작동하는 Java 예제와 함께.


씬 로드 및 저장

scene.open() 파일을 로드합니다; scene.save() 내보냅니다:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

정적 팩터리 대안:

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

포맷별 옵션

전달 LoadOptions 또는 SaveOptions 세밀한 제어를 위한 서브클래스:

import com.aspose.threed.*;

Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);

GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);

참고: FBX는 가져오기만 지원됩니다; FBX 내보내기는 FOSS 버전에서 구현되지 않았습니다. Only 바이너리 FBX 파일은 가져오기를 지원합니다 — ASCII FBX는 오류를 발생시킵니다 ImportException.


씬 그래프 구축

노드를 생성하고 엔티티를 연결합니다:

Scene scene = new Scene();
Node root = scene.getRootNode();

Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);

Node meshNode = root.createChildNode("triangle", mesh);

Mesh 작업

생성 Mesh 제어점과 폴리곤을 사용하여 프로그래밍 방식으로:

Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);

변환

모든 Node 가집니다 Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

월드 공간을 통해 읽기 node.getGlobalTransform().getMatrix().


재질

노드에 재질을 할당합니다:

PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);

scene.getRootNode().createChildNode("red_mesh", mesh, mat);

재질 유형: Material (기본), PbrMaterial (PBR 메탈릭-러프니스).


팁 및 모범 사례

  • 사용 Scene.fromFile() 사용자 지정 옵션이 필요하지 않을 때 한 줄 로드에 사용
  • 메쉬를 프로그래밍 방식으로 구축하려면 createPolygon() 사용자 지정 기하학에 사용
  • 사용 .glb 압축된 바이너리 glTF 출력을 위한 확장자
  • 확인 node.getEntity() != null 캐스팅하기 전에
  • STL 내보내기는 하지 않음 다각형 면을 자동으로 삼각형화합니다. 바이너리 STL 내보내기는 각 다각형 면의 첫 3개의 정점만 기록합니다 — 사각형이나 n-각형 면은 조용히 잘립니다. ASCII STL 내보내기는 모든 정점 인덱스를 기록하여 비삼각형 면에 대해 잘못된 facet 블록을 생성합니다. 데이터 손실이나 잘못된 출력을 방지하려면 STL 내보내기에 사전 삼각형화된 메쉬(모두 삼각형 면)를 항상 전달하십시오.

일반적인 문제

문제원인수정
로드 시 예외지원되지 않거나 손상된 파일파일이 3D 뷰어에서 열리는지 확인하십시오
OBJ 로드 후 재질이 누락되었습니다.mtl 파일을 찾을 수 없습니다배치 .mtl 옆에 .obj; 재질이 활성화되어 있는지 확인하십시오
가져온 후 스케일 불일치다른 단위 시스템적용 Transform 로드 후 스케일

FAQ

파일 형식을 어떻게 감지하나요?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

스트림에서 로드할 수 있나요?

예. scene.open() 받음 InputStream.

어떤 포맷이 가져오기와 내보내기를 모두 지원하나요?

OBJ, STL, 및 glTF/GLB는 양방향을 지원합니다. FBX는 가져오기 전용이며; 내보내기는 FOSS 버전에서 구현되지 않았습니다.


API 레퍼런스 요약

클래스 / 메서드설명
Scene최상위 3D 씬 컨테이너
scene.open()경로나 스트림으로 3D 파일 로드
scene.save()씬을 파일이나 스트림으로 내보내기
Scene.fromFile()로드하고 반환하는 정적 팩토리 Scene
Node씬 계층 노드
node.createChildNode()자식 노드를 생성하고 연결하기
Mesh제어점과 면 리스트가 있는 폴리곤 메시
mesh.createPolygon()폴리곤 면 정의
Mesh.toMesh()메쉬 기하 변환 또는 복제
Transform로컬 변환, 회전 및 스케일
FileFormat형식 레지스트리 및 감지기
 한국어