Com corregir errors de models 3D a TypeScript

Com corregir errors de models 3D a TypeScript

Aquesta guia cobreix els errors més comuns quan s’utilitza @aspose/3d per a TypeScript i Node.js, amb solucions pràctiques per a cadascun.

Guia pas a pas

Pas 1: Verifica la instal·lació i les versions

Assegura’t que estàs en una versió compatible de Node.js (18, 20 o 22) i que el paquet està instal·lat:

node --version          # Must be v18 or later
npm list @aspose/3d     # Should show the installed version

Si el paquet no es troba, reinstal·la’l:

npm install @aspose/3d

Pas 2: Corregeix els errors de resolució de mòduls

Error: Cannot find module '@aspose/3d/formats/obj'

Les importacions de subcamins requereixen exportacions de paquet de Node.js 12.7+. En TypeScript, estableix la resolució de mòduls correcta:

// tsconfig.json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "moduleResolution": "node16",
    "strict": true
  }
}

Per a projectes ESM, utilitzeu "module": "ES2022" i "moduleResolution": "bundler".


Pas 3: Depura una escena buida després de carregar

Si scene.rootNode.childNodes està buit després de scene.open():

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

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

console.log(`Child nodes: ${scene.rootNode.childNodes.length}`);

Causes comunes:

  1. Opcions de format incorrectes: per a OBJ, sempre passa new ObjLoadOptions(). L’ús d’opcions genèriques pot impedir la detecció del format.
  2. El camí del fitxer és incorrecte: la llibreria carrega silenciosament una escena buida si el fitxer no es troba:
import * as fs from 'fs';

const filePath = 'model.obj';
if (!fs.existsSync(filePath)) {
    throw new Error(`File not found: ${filePath}`);
}
const scene = new Scene();
scene.open(filePath, new ObjLoadOptions());
  1. El fitxer OBJ utilitza salts de línia no estàndard: obre’l en un editor de text i assegura’t que el fitxer sigui vàlid.

Pas 4: Solucionar problemes del sistema de coordenades

Els models poden aparèixer girats, mirallats o escalats incorrectament a causa de diferències en el sistema de coordenades entre formats.

Mà dreta vs mà esquerra, Y amunt vs Z amunt:

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

const options = new ObjLoadOptions();
options.flipCoordinateSystem = true;  // Swap Y and Z axes

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

Problemes d’escala (p. ex., STL en mil·límetres vs glTF en metres):

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

const options = new ObjLoadOptions();
options.scale = 0.001;  // Convert millimeters to meters

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

Pas 5: Gestionar problemes de memòria amb fitxers grans

Per a fitxers superiors a 100 MB, augmenta la mida del heap de Node.js:

node --max-old-space-size=4096 convert.js

O estableix-lo a package.json:

{
  "scripts": {
    "convert": "node --max-old-space-size=4096 dist/convert.js"
  }
}

Processa fitxers grans d’un en un en lloc de paral·lelament per evitar pics de memòria.


Referència d’errors comuns

ErrorCausa probableSolució
Cannot find module '@aspose/3d/formats/obj'Configuració de resolució de mòdulsEstableix moduleResolution: node16 a tsconfig
scene.rootNode.childNodes està buitOpcions incorrectes o fitxer no trobatComproveu el camí del fitxer; passeu el correcte *LoadOptions
La geometria sembla mirallada/invertidaDesajust del sistema de coordenadesEstablir flipCoordinateSystem = true
La geometria sembla escalada incorrectamentDiferència d’unitats entre formatsEstablir scale a les opcions de càrrega
ENOMEM o procés finalitzatMemòria insuficient per a fitxer granIncrementa --max-old-space-size
Error de tipus TypeScript a node.entityTipus d’entitat ampliUtilitza instanceof Mesh guard

Preguntes freqüents

Com puc informar d’un error d’anàlisi?

Obre una incidència al repositori GitHub amb el nom del format, un fitxer mínim reproduïble i el missatge d’error exacte.

Per què alguns malles tenen zero punts de control?

Alguns grups OBJ defineixen només coordenades de textura o normals sense dades de posició. Comproveu mesh.controlPoints.length > 0 abans del processament.

La biblioteca ignora silenciosament els errors d’anàlisi. Com els puc detectar?

Envolta scene.open() en un bloc try/catch. Si el fitxer està mal format, la biblioteca pot llançar una excepció o carregar una escena parcial:

try {
    scene.open('model.obj', new ObjLoadOptions());
} catch (err) {
    console.error('Failed to load:', err);
}

Vegeu també

 Català