소개
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
.mtlmaterials, import only), glTF 2.0 / GLB, STL (binary and ASCII), 3MF, 및 COLLADA를 파일 경로와 메모리에서 모두Bufferobjects. 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');