Preguntas frecuentes
Preguntas Frecuentes
¿Cómo instalo @aspose/3d?
Instalar desde npm. Se requiere Node.js 18 o posterior:
npm install @aspose/3dVerifique la instalación:
import { Scene } from '@aspose/3d';
const scene = new Scene();
console.log('@aspose/3d ready');Las definiciones de tipos de TypeScript se incluyen con el paquete. No se necesita un paquete @types/ separado.
¿Qué formatos de archivo son compatibles?
| Formato | Importar | Exportar |
|---|---|---|
| OBJ (Wavefront) | Sí | Sí |
| glTF 2.0 / GLB | Sí | Sí |
| FBX (Autodesk) | No* | No* |
| STL (Stereo Lithography) | Sí | Sí |
| 3MF (3D Manufacturing) | Sí | Sí |
| COLLADA (.dae) | Sí | Sí |
¿Cómo cargo un archivo 3D?
Crea un Scene y llama a scene.open():
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());Para los formatos que no requieren opciones especiales, omita el segundo argumento:
const scene = new Scene();
scene.open('model.glb');¿Es scene.open() asíncrono?
No. scene.open() y scene.openFromBuffer() son llamadas síncronas. Si necesitas E/S no bloqueante, ejecútalas dentro de un hilo de trabajo de Node.js o envuélvelas con setImmediate.
¿Cómo guardo en glTF/GLB?
Llame a scene.save() con una ruta de archivo. El formato se detecta automáticamente a partir de la extensión:
scene.save('output.glb'); // binary glTF
scene.save('output.gltf'); // JSON glTF
scene.save('output.obj'); // OBJ
scene.save('output.stl'); // STL
¿Cómo cargo desde un búfer (en memoria)?
Utilice scene.openFromBuffer():
import * as fs from 'fs';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const buffer = fs.readFileSync('model.obj');
const scene = new Scene();
scene.openFromBuffer(buffer, new ObjLoadOptions());Error: No se puede encontrar el módulo ‘@aspose/3d/formats/obj’
Esto requiere la resolución de exportaciones de paquetes de Node.js 12.7+. Asegúrate de estar en Node.js 18+. Para TypeScript, establece "moduleResolution": "node16" o "bundler" en tsconfig.json:
{
"compilerOptions": {
"moduleResolution": "node16",
"target": "ES2020"
}
}¿Cuál es el tipo de node.entity?
node.entity está tipado de forma amplia. Para acceder a propiedades específicas de malla, verifica su presencia con 'controlPoints' in node.entity o usa la clase Mesh de @aspose/3d/entities:
import { Mesh } from '@aspose/3d/entities';
if (node.entity instanceof Mesh) {
const mesh = node.entity;
console.log(mesh.controlPoints.length);
}¿La biblioteca se ejecuta en el navegador?
La biblioteca está diseñada para Node.js. El soporte del navegador depende de la configuración del empaquetador y de que las API del sistema de archivos sean reemplazadas por alternativas en memoria.
¿La biblioteca es segura para subprocesos?
Cada objeto Scene es independiente. Usar instancias separadas de Scene desde hilos de trabajo de Node.js separados es seguro siempre que no comparta una única escena entre hilos sin sincronización externa.
¿Qué versiones de Node.js son compatibles?
Node.js 18, 20 y 22 son compatibles oficialmente. Se recomienda TypeScript 5.0+.
¿@aspose/3d admite animaciones?
Sí. El sistema de animación incluye AnimationClip, AnimationChannel y tipos de curvas de fotogramas clave accesibles desde @aspose/3d/animation.