Wprowadzenie

Aspose.3D FOSS dla TypeScript (@aspose/3d) jest otwartoźródłową, licencjonowaną na licencji MIT biblioteką formatu plików 3D dla Node.js i nowoczesnych środowisk przeglądarkowych. Programiści tworzący przeglądarki modeli 3D, konwertery formatów, narzędzia przetwarzania geometrii lub serwerowe potoki 3D mogą zainstalować ją za pomocą jednego npm install @aspose/3d polecenie i natychmiast rozpocząć ładowanie, konstruowanie i eksportowanie treści 3D.

Biblioteka obsługuje główne formaty wymiany — OBJ, glTF 2.0 / GLB, STL, 3MF i COLLADA zarówno przy imporcie, jak i eksporcie. Klasy importera/eksportera FBX istnieją, ale nie są jeszcze podłączone do automatycznego wykrywania formatu. API grafu sceny odzwierciedla model znany z narzędzi do tworzenia 3D: a Scene zawiera rootNode, każdy Node może nosić 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

  • Wieloformatowy I/O: Import i eksport OBJ (z .mtl materiałami), glTF 2.0 / GLB, STL (binarny i ASCII), 3MF oraz COLLADA zarówno z ścieżek plików, jak i w pamięci Buffer obiekty. Obsługa FBX nie jest jeszcze podłączona do automatycznego wykrywania.
  • API grafu sceny: Scene, Node, Mesh, Camera, Light hierarchia 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 (tablica Vector4), 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: Per-format LoadOptions / SaveOptions klasy kontrolują odwracanie współrzędnych, skalę, ładowanie materiałów i więcej

Rozpoczęcie

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ą wczytaną 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ż a GltfSaveOptions instancję, aby kontrolować osadzanie materiałów PBR, tekstury oraz kodowanie binarne vs. JSON.

Konstrukcja 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');

Zobacz także