Introducere
Aspose.3D FOSS pentru TypeScript (@aspose/3d) este o bibliotecă open-source, licențiată MIT, pentru formatul de fișiere 3D, concepută în principal pentru Node.js. Dezvoltatorii care construiesc vizualizatoare de modele 3D, convertoare de formate, unelte de procesare a geometriei sau conducte 3D pe server pot să o instaleze cu o singură comandă (vezi Ghidul de instalare) și să înceapă imediat să încarce, să construiască și să exporte conținut 3D. Biblioteca folosește require('fs') și Buffer din Node.js; utilizarea în browser necesită shim-uri adecvate pentru acele API-uri și nu este suportată oficial.
Biblioteca suportă principalele formate de interschimb — OBJ, glTF 2.0 / GLB, STL, 3MF și COLLADA pentru import și export. Clasele de import/export FBX există, dar nu sunt încă integrate în detectarea automată a formatelor. API graficului de scenă reflectă modelul familiar din instrumentele de autorare 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ă. - Graf de scenă API:
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.material - Operații de mesh: Accesați datele brute ale vârfurilor prin
mesh.controlPoints(array deVector4), indici de poligon prinmesh.polygonCount, și canalele elementelor de vârf prinmesh.getElement() - Utilități 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 (linear, Bezier, spline TCB) - Opțiuni specifice formatului: Pe format
LoadOptions/SaveOptionsclasele controlează inversarea coordonatelor, scalarea, încărcarea materialelor și altele
Începeți
Construiți pachetul din sursă. Node.js 18 sau o versiune ulterioară este necesar; TypeScript 5.0+ este recomandat.
git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run buildÎncarcă un fișier OBJ și inspectează 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`);
}
}
Graf de scenă API
Fiecare scenă este un arbore de obiecte Node cu rădăcina la scene.rootNode. Construiește ierarhia cu addChildNode(), atașează entități precum Camera sau Light la un nod prin proprietatea sa entity, și citește transformarea locală sau în spațiul mondial a fiecărui nod prin transform și globalTransform.
import { Scene, Node, Camera, Light } from '@aspose/3d';
const scene = new Scene();
const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);
const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);
for (const child of scene.rootNode.childNodes) {
console.log(`${child.name}: ${child.entity?.constructor.name}`);
}
Utilitare Matematice
Vector3, Vector4, Matrix4 și Quaternion susțin fiecare operație geometrică din bibliotecă. Vector3 și Vector4 expun componente x/y/z(/w) plus length, dot() și cross(); Matrix4 este o grilă 4×4 accesată prin m00–m33 cu transpose() și concatenate(); Quaternion oferă normalize(), conjugate(), inverse() și dot() pentru matematică de rotație.
import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';
const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();
console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);
Vezi și:
- Cum să încarci modele 3D în TypeScript
- Cum să exporți glTF în TypeScript
- Suport de format
- API Reference