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 .mtl materiał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ęci Buffer obiekty. 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, 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: Dla każdego formatu LoadOptions / SaveOptions klasy 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');

Zobacz także