Com desar models 3D en TypeScript

Com desar models 3D en TypeScript

Aspose.3D FOSS per TypeScript desa escenes a tots els formats compatibles amb una única scene.save() crida. El format de sortida es detecta automàticament a partir de l’extensió del fitxer. Aquesta guia cobreix com desar a cada format i com utilitzar les opcions específiques del format.

Guia pas a pas

Pas 1: Instal·la @aspose/3d

npm install @aspose/3d

Pas 2: Carrega o construeix una escena

Carrega un fitxer existent o construeix una escena programàticament abans de desar.

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());

// Or create a new empty scene
const emptyScene = new Scene();

Pas 3: Desa amb format detectat automàticament

scene.save(path) detecta el format de sortida a partir de l’extensió del fitxer:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());

// Save as binary glTF
scene.save('output.glb');

// Save as JSON glTF
scene.save('output.gltf');

// Save as STL
scene.save('output.stl');

// Save as OBJ
scene.save('output.obj');

// Save as FBX
scene.save('output.fbx');

// Save as 3MF
scene.save('output.3mf');

// Save as COLLADA
scene.save('output.dae');

Pas 4: Utilitza SaveOptions específics del format

Per a un control detallat, passa un objecte d’opcions específic del format:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true;   // produce GLB (binary glTF)

scene.save('output.glb', saveOptions);

Pas 5: Desa a un buffer (en memòria)

Utilitza scene.saveToBuffer() per obtenir la sortida com a Buffer sense escriure al disc:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());

const buffer = scene.saveToBuffer('output.glb');
console.log(`Buffer size: ${buffer.length} bytes`);

// Send via HTTP, upload to S3, etc.

Pas 6: Verifica la sortida

Després de desar, verifica que el fitxer existeix i té una mida diferent de zero:

import * as fs from 'fs';

const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);

Matriu de suport de formats

ExtensióFormatNotes
.glbglTF 2.0 BinaryRecomanat per a glTF; tots els actius incrustats en un únic fitxer
.gltfglTF 2.0 JSONSeparar .bin i fitxers de textures al costat del JSON
.objWavefront OBJEscriu .mtl fitxer de material al costat .obj quan hi ha materials
.stlSTLPer defecte: STL binari; usa StlSaveOptions.ascii = true per a text
.fbxAutodesk FBXFormat FBX binari
.3mf3D ManufacturingAdequat per a fluxos de treball d’impressió 3D
.daeCOLLADAFormat d’intercanvi basat en XML

Problemes comuns i solucions

Error: Unsupported format en desar

Comproveu que l’extensió del fitxer coincideixi amb un format compatible. La biblioteca utilitza l’extensió per detectar el format; un fitxer anomenat output.xyz fallarà.

.obj el fitxer es desa però els materials falten

En desar OBJ, la biblioteca de materials (.mtl) s’escriu automàticament al costat del .obj. Ambdós fitxers han d’estar al mateix directori en tornar a obrir. Si només necessiteu geometria, establiu ObjSaveOptions.enableMaterials = false.

Gran .gltf amb textures separades

Utilitzeu .glb en comptes de .gltf; agrupa dades binàries en un únic fitxer autònom. Estableix GltfSaveOptions.binaryMode = true en passar un GltfSaveOptions instància.


Preguntes freqüents

Puc desar a diversos formats en una sola execució?

Sí; crida scene.save() varias vegades amb rutes diferents:

scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');

Desar modifica l’escena?

No. scene.save() és una operació de només lectura al gràfic de l’escena. Podeu desar la mateixa escena en diversos formats sense cap efecte secundari.

Puc sobrescriure el fitxer d’origen?

Sí. Passeu la mateixa ruta a scene.save() que vau utilitzar a scene.open(). La biblioteca escriu a un buffer i després escriu al disc.


Vegeu també

 Català