Introducere
Aspose.3D FOSS pentru TypeScript (@aspose/3d) este o bibliotecă open-source, cu licență MIT, pentru formate de fișiere 3D, destinată Node.js și mediilor moderne de browser. Dezvoltatorii care construiesc vizualizatoare de modele 3D, convertoare de formate, instrumente de procesare a geometriei sau conducte 3D pe server pot să o instaleze cu un singur npm install @aspose/3d comandă și să înceapă imediat să încarce, să construiască și să exporte conținut 3D.
Biblioteca suportă principalele formate de schimb — OBJ, glTF 2.0 / GLB, STL, 3MF și COLLADA atât pentru import, cât și pentru export. Clasele de import/export FBX există, dar nu sunt încă integrate în detectarea automată a formatului. API‑ul de graf de scenă reflectă modelul familiar din instrumentele de authoring 3D: un Scene conține un rootNode, fiecare Node poate transporta noduri copil și obiecte entitate (Mesh, Camera, Light), iar ierarhia de transformări este complet accesibilă pentru citire și scriere.
Caracteristici cheie
- I/O multi-format: Import și export OBJ (cu
.mtlmateriale), glTF 2.0 / GLB, STL (binare și ASCII), 3MF și COLLADA atât din căi de fișier, cât și din memorieBufferobiecte. Suportul FBX nu este încă integrat în detectarea automată. - API pentru graficul scenei:
Scene,Node,Mesh,Camera,Lightierarhie cu gestionare completă părinte/copil; parcurge nodurile recursiv prinnode.childNodes - Sistem de materiale PBR: materiale Lambert, Phong și PBR (metallic/roughness) accesibile prin
node.entity.material - Operații pe mesh: Accesează date brute de vârf prin
mesh.controlPoints(array deVector4), indici de poligon prinmesh.polygonCount, și canale de elemente de vârf prinmesh.getElement() - Utilitare matematice:
Vector2,Vector3,Vector4,Matrix4,Quaternion, și tipuri de cutii de delimitare pentru calcule spațiale - Sistem de animație: Animație pe cadre cheie cu
AnimationClip,AnimationChannel, și curbe de interpolare (liniare, Bezier, spline TCB) - Opțiuni specifice formatului: Pe format
LoadOptions/SaveOptionsclasele controlează inversarea coordonatelor, scalarea, încărcarea materialelor și altele
Începerea utilizării
Instalați din npm. Este necesar Node.js 18 sau o versiune ulterioară; se recomandă TypeScript 5.0+.
npm install @aspose/3d
Încărcați un fișier OBJ și inspectați scena:
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`);
}
}
Exportă în glTF
Salvați orice scenă încărcată sau construită în format binar 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');
Biblioteca detectează automat formatul de ieșire din extensia fișierului. Transmite un GltfSaveOptions instanță pentru controlul încorporării materialelor PBR, texturilor și codificării binare vs. JSON.
Construcția scenei
Construiește o scenă programatic și exportă‑o:
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');