Wprowadzenie
Aspose.3D FOSS dla TypeScript (@aspose/3d) jest open-source, licencjonowaną na licencji MIT biblioteką formatu plików 3D dla Node.js i nowoczesnych środowisk przeglądarkowych. Programiści budujący przeglądarki modeli 3D, konwertery formatów, narzędzia przetwarzania geometrii lub serwerowe potoki 3D mogą zainstalować go przy użyciu jednego npm install @aspose/3d polecenie i natychmiast rozpocząć ładowanie, konstruowanie i eksportowanie treści 3D.
Biblioteka obsługuje główne formaty wymiany — glTF 2.0 / GLB, STL, 3MF i COLLADA zarówno do importu, jak i eksportu, oraz OBJ tylko do importu. Istnieją klasy importera/eksportera FBX, ale nie są jeszcze podłączone do automatycznego wykrywania formatów. API grafu sceny odzwierciedla model znany z narzędzi do tworzenia 3D: a Scene zawiera a rootNode, każdy Node może zawierać węzły potomne i obiekty encji (Mesh, Camera, Light), a hierarchia transformacji jest w pełni dostępna do odczytu i zapisu.
Kluczowe funkcje
- Wejście/wyjście wieloformatowe: Importuj OBJ (z
.mtlmateriały, tylko import), glTF 2.0 / GLB, STL (binarny i ASCII), 3MF i COLLADA zarówno ze ścieżek plików, jak i z pamięciBufferobiekty. glTF, STL, 3MF i COLLADA również obsługują eksport. Obsługa FBX nie jest jeszcze podłączona do automatycznego wykrywania. - API grafu sceny:
Scene,Node,Mesh,Camera,Lighthierarchia z pełnym zarządzaniem rodzic/dziecko; przeglądaj węzły rekurencyjnie za pomocąnode.childNodes - system materiałów PBR: materiały Lambert, Phong i PBR (metallic/roughness) dostępne poprzez
node.entity.material - Operacje siatki: Uzyskaj dostęp do surowych danych wierzchołków za pomocą
mesh.controlPoints(tablicaVector4), indeksy wielokątów za pomocąmesh.polygonCount, oraz kanały elementów wierzchołków za pomocąmesh.getElement() - Narzędzia matematyczne:
Vector2,Vector3,Vector4,Matrix4,Quaternion, oraz typy bounding box dla obliczeń przestrzennych - System animacji: Animacja klatek kluczowych z
AnimationClip,AnimationChannel, oraz krzywe interpolacji (linear, Bezier, TCB spline) - Opcje specyficzne dla formatu: Dla każdego formatu
LoadOptions/SaveOptionsklasy kontrolują odwracanie współrzędnych, skalowanie, ładowanie materiałów i inne
Rozpoczęcie pracy
Instalacja z npm. Wymagany Node.js 18 lub nowszy; zalecany TypeScript 5.0+.
npm install @aspose/3d
Wczytaj plik OBJ i zbadaj scenę:
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`);
}
}
Eksportuj do glTF
Zapisz dowolną załadowaną lub utworzoną scenę w formacie binarnym 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');
Biblioteka automatycznie wykrywa format wyjściowy na podstawie rozszerzenia pliku. Przekaż GltfSaveOptions instancję do kontrolowania osadzania materiałów PBR, tekstur oraz kodowania binarnego vs. JSON.
Budowanie sceny
Zbuduj scenę programowo i wyeksportuj ją:
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');