소개

Aspose.3D FOSS for TypeScript (@aspose/3d)는 Node.js와 최신 브라우저 환경을 위한 오픈 소스이며 MIT 라이선스를 가진 3D 파일 포맷 라이브러리입니다. 3D 모델 뷰어, 포맷 변환기, 기하학 처리 도구 또는 서버 측 3D 파이프라인을 구축하는 개발자는 단일 npm install @aspose/3d 명령으로 설치하고 즉시 3D 콘텐츠를 로드, 구성 및 내보내기를 시작할 수 있습니다.

이 라이브러리는 주요 교환 포맷을 지원합니다 — glTF 2.0 / GLB, STL, 3MF, 그리고 COLLADA는 가져오기와 내보내기 모두 지원하고, OBJ는 가져오기 전용입니다. FBX 가져오기/내보내기 클래스가 존재하지만 아직 포맷 자동 감지에 연결되지 않았습니다. 씬 그래프 API는 3D 저작 도구에서 익숙한 모델을 그대로 반영합니다: a Scene 는 a rootNode, 각각 Node 는 자식 노드와 엔티티 객체를 포함할 수 있습니다 (Mesh, Camera, Light), 변환 계층 구조는 읽기 및 쓰기를 위해 완전히 접근 가능합니다.

주요 기능

  • 다중 포맷 I/O: OBJ 가져오기 (with .mtl materials, import only), glTF 2.0 / GLB, STL (binary and ASCII), 3MF, 및 COLLADA를 파일 경로와 메모리에서 모두 Buffer objects. glTF, STL, 3MF, 및 COLLADA도 내보내기를 지원합니다. FBX 지원은 아직 자동 감지에 연결되지 않았습니다.
  • 씬 그래프 API: Scene, Node, Mesh, Camera, Light 전체 부모/자식 관리가 가능한 계층 구조; 노드를 재귀적으로 순회합니다. node.childNodes
  • PBR 머티리얼 시스템: Lambert, Phong 및 PBR(금속/거칠기) 재료에 접근 가능 node.entity.material
  • 메시 연산: 원시 정점 데이터를 통해 접근 mesh.controlPoints (배열 Vector4), 다각형 인덱스를 통해 mesh.polygonCount, 및 정점 요소 채널을 통해 mesh.getElement()
  • 수학 유틸리티: Vector2, Vector3, Vector4, Matrix4, Quaternion, 및 공간 계산을 위한 바운딩 박스 유형
  • 애니메이션 시스템: 키프레임 애니메이션 사용 AnimationClip, AnimationChannel, 및 보간 곡선 (선형, 베지어, TCB 스플라인)
  • 포맷별 옵션: 포맷별 LoadOptions / SaveOptions 클래스는 좌표 플리핑, 스케일, 재질 로딩 등을 제어합니다

시작하기

npm으로 설치합니다. Node.js 18 이상이 필요하며, TypeScript 5.0 이상을 권장합니다.

npm install @aspose/3d

OBJ 파일을 로드하고 씬을 검사합니다:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

glTF로 내보내기

로드하거나 만든 장면을 glTF 2.0 바이너리(GLB)로 저장합니다:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

라이브러리는 파일 확장자를 통해 출력 포맷을 자동 감지합니다. 다음을 전달하세요 GltfSaveOptions 인스턴스를 사용해 PBR 재질 임베딩, 텍스처, 바이너리와 JSON 인코딩을 제어합니다.

장면 구성

프로그래밍 방식으로 장면을 구축하고 내보냅니다:

import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

참고