Įvadas
Aspose.3D FOSS TypeScript kalbai (@aspose/3d) yra atviro kodo, MIT licencijuota 3D failų formato biblioteka Node.js ir šiuolaikiniams naršyklių aplinkoms. Kūrėjai, kuriantys 3D modelių peržiūros programas, formatų konvertavimo įrankius, geometrijos apdorojimo įrankius arba serverio pusės 3D duomenų srautus, gali ją įdiegti vienu npm install @aspose/3d komanda ir iš karto pradėti įkelti, kurti ir eksportuoti 3D turinį.
Biblioteka palaiko pagrindinius mainų formatus — glTF 2.0 / GLB, STL, 3MF ir COLLADA tiek importui, tiek eksportui, o OBJ – tik importui. FBX importavimo/eksportavimo klasės egzistuoja, tačiau dar nėra integruotos į formato automatinį aptikimą. Scenos grafiko API atspindi modelį, pažįstamą iš 3D kūrimo įrankių: Scene turi a rootNode, kiekvienas Node gali turėti vaikų mazgus ir objektų (Mesh, Camera, Light), o transformacijos hierarchija yra visiškai prieinama skaitymui ir rašymui.
Pagrindinės funkcijos
- Daugių formatų I/O: Importuoti OBJ (su
.mtlmedžiagas, tik importavimą), glTF 2.0 / GLB, STL (binarinį ir ASCII), 3MF ir COLLADA tiek iš failų kelių, tiek iš atmintiesBufferobjektus. glTF, STL, 3MF ir COLLADA taip pat palaiko eksportą. FBX palaikymas dar nėra prijungtas prie automatinio aptikimo. - Scenos grafiko API:
Scene,Node,Mesh,Camera,Lighthierarchija su pilna tėvo/vaiko valdymu; rekursyviai naršyti mazgus pernode.childNodes - PBR medžiagų sistema: Lambert, Phong ir PBR (metallic/roughness) medžiagos prieinamos per
node.entity.material - Tinklo operacijos: Gauti neapdorotus viršūnių duomenis per
mesh.controlPoints(masyvas išVector4), daugiakampių indeksus permesh.polygonCount, ir viršūnių elementų kanalus permesh.getElement() - Matematikos įrankiai:
Vector2,Vector3,Vector4,Matrix4,Quaternion, ir ribų dėžės tipai erdviniams skaičiavimams - Animacijos sistema: Rėmelio animacija su
AnimationClip,AnimationChannel, ir interpoliacijos kreivės (linijinė, Bezier, TCB spline) - Formato specifinės parinktys: Kiekvienam formatui
LoadOptions/SaveOptionsklasės valdo koordinatės apvertimą, mastelį, medžiagų įkėlimą ir kt
Pradžia
Įdiekite iš npm. Reikalingas Node.js 18 arba naujesnis; rekomenduojama TypeScript 5.0+.
npm install @aspose/3d
Įkelkite OBJ failą ir patikrinkite 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`);
}
}
Eksportuoti į glTF
Išsaugokite bet kurią įkeltą arba sukurtą sceną glTF 2.0 binarinėje (GLB) formatu:
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 automatiškai aptinka išvesties formatą pagal failo plėtinį. Perduokite GltfSaveOptions egzempliorių, skirtą valdyti PBR medžiagų įterpimą, tekstūras ir binary vs. JSON encoding.
Scenos kūrimas
Sukurkite sceną programiškai ir eksportuokite 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');