Ievads

Aspose.3D FOSS priekš TypeScript (@aspose/3d) ir atvērtā koda, MIT licencēta 3D failu formāta bibliotēka priekš Node.js un mūsdienīgām pārlūkprogrammu vidēm. Izstrādātāji, kas veido 3D modeļu skatītājus, formātu konvertētājus, ģeometrijas apstrādes rīkus vai servera puses 3D cauruļvadu, var to instalēt ar vienu npm install @aspose/3d komandu un nekavējoties sākt ielādēt, konstruēt un eksportēt 3D saturu.

Bibliotēka atbalsta galvenos apmaiņas formātus — OBJ, glTF 2.0 / GLB, STL, 3MF un COLLADA gan importam, gan eksportam. FBX importētāja/eksportētāja klases pastāv, bet tās vēl nav integrētas automātiskajā formāta noteikšanā. Scēnas grafa API atspoguļo modeli, kas pazīstams no 3D autorēšanas rīkiem: a Scene satur a rootNode, katrs Node var nēsāt bērnu mezglus un entītiju objektus (Mesh, Camera, Light), un transformācijas hierarhija ir pilnībā pieejama lasīšanai un rakstīšanai.

Galvenās funkcijas

  • Daudzformātu I/O: Importēt un eksportēt OBJ (ar .mtl materiālus), glTF 2.0 / GLB, STL (bināri un ASCII), 3MF un COLLADA gan no faila ceļiem, gan atmiņā Buffer objektus. FBX atbalsts vēl nav integrēts automātiskajā noteikšanā.
  • Ainas grafa API: Scene, Node, Mesh, Camera, Light hierarhija ar pilnīgu vecāku/bērnu pārvaldību; pārvietoties caur mezgliem rekursīvi, izmantojot node.childNodes
  • PBR materiālu sistēma: Lambert, Phong un PBR (metāla/raušuma) materiāli pieejami caur node.entity.material
  • Tīklu operācijas: Piekļūt neapstrādātiem virsotņu datiem, izmantojot mesh.controlPoints (masīvs no Vector4), daudzstūru indeksus, izmantojot mesh.polygonCount, un virsotnes elementu kanāli caur mesh.getElement()
  • Matemātikas utilītprogrammas: Vector2, Vector3, Vector4, Matrix4, Quaternion, un robežkastes veidi telpiskajām aprēķiniem
  • Animācijas sistēma: Kadru animācija ar AnimationClip, AnimationChannel, un interpolācijas līknes (lineāras, Bezier, TCB spline)
  • Formāta specifiskās opcijas: Katram formātam LoadOptions / SaveOptions klases kontrolē koordinātu pārkārtošanu, mērogu, materiālu ielādi un vairāk

Sākums

Instalējiet no npm. Nepieciešams Node.js 18 vai jaunāks; ieteicams TypeScript 5.0+.

npm install @aspose/3d

Ielādējiet OBJ failu un pārbaudiet ainu:

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`);
    }
}

Eksportēt uz glTF

Saglabājiet jebkuru ielādētu vai izveidotu ainu glTF 2.0 binārajā formātā (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');

Bibliotēka automātiski noteic izvades formātu no faila paplašinājuma. Padodiet GltfSaveOptions instanci, lai kontrolētu PBR materiālu iegulšanu, tekstūras un bināro pret JSON kodēšanu.

Ainas konstrukcija

Izveidojiet ainu programmatiski un eksportējiet to:

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

Skatiet arī