Come correggere gli errori del modello 3D in TypeScript

Come correggere gli errori del modello 3D in TypeScript

Questa guida copre gli errori più comuni quando si utilizza @aspose/3d per TypeScript e Node.js, con soluzioni pratiche per ciascuno.

Guida passo-passo

Passo 1: Verifica installazione e versioni

Assicurati di utilizzare una versione supportata di Node.js (18, 20 o 22) e che il pacchetto sia installato:

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

Se il pacchetto non è trovato, reinstallare:

npm install @aspose/3d

Passo 2: Correggi gli errori di risoluzione del modulo

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

Le importazioni di sotto‑percorsi richiedono le esportazioni del pacchetto di Node.js 12.7+. In TypeScript, imposta la risoluzione del modulo corretta:

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

Per i progetti ESM, usa "module": "ES2022" e "moduleResolution": "bundler".


Passo 3: Debug di una scena vuota dopo il caricamento

Se scene.rootNode.childNodes è vuoto dopo 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}`);

Cause comuni:

  1. Opzioni di formato errate: per OBJ, passa sempre new ObjLoadOptions(). L’uso di opzioni generiche può impedire il rilevamento del formato.

  2. Il percorso del file è errato: la libreria carica silenziosamente una scena vuota se il file non viene trovato:

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. Il file OBJ utilizza terminazioni di riga non standard: aprilo in un editor di testo e assicurati che il file sia valido.

Passo 4: Correggere i problemi del sistema di coordinate

I modelli possono apparire ruotati, specchiati o scalati in modo errato a causa delle differenze nei sistemi di coordinate tra i formati.

Destra vs sinistra, Y-up vs Z-up:

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

Problemi di scala (ad esempio, STL in millimetri vs glTF in metri):

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

Passo 5: Gestire i problemi di memoria con file di grandi dimensioni

Per i file più grandi di 100 MB, aumenta la dimensione dell’heap di Node.js:

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

Oppure impostalo in package.json:

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

Elabora file di grandi dimensioni uno alla volta anziché in parallelo per evitare problemi di picco di memoria.


Riferimento errore comune

ErroreCausa probabileCorrezione
Cannot find module '@aspose/3d/formats/obj'Configurazione di risoluzione del moduloImposta moduleResolution: node16 in tsconfig
scene.rootNode.childNodes è vuotoOpzioni errate o file non trovatoVerifica il percorso del file; passa il *LoadOptions corretto
La geometria appare specchiata/invertitaMancata corrispondenza del sistema di coordinateImposta flipCoordinateSystem = true
La geometria appare scalata in modo erratoDifferenza di unità tra i formatiImposta scale nelle opzioni di caricamento
ENOMEM o processo terminatoMemoria insufficiente per file di grandi dimensioniAumenta --max-old-space-size
Errore di tipo TypeScript su node.entityTipo di entità genericoUsa la guardia instanceof Mesh

Domande Frequenti

Come segnalo un bug di parsing?

Apri un problema sul repository GitHub con il nome del formato, un file riproducibile minimo e il messaggio di errore esatto.

Perché alcune mesh hanno zero punti di controllo?

Alcuni gruppi OBJ definiscono solo coordinate di texture o normali senza dati di posizione. Controlla mesh.controlPoints.length > 0 prima dell’elaborazione.

La libreria ignora silenziosamente gli errori di parsing. Come posso rilevarli?

Avvolgi scene.open() in un blocco try/catch. Se il file è malformato, la libreria potrebbe generare un’eccezione o caricare una scena parziale:

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

Vedi anche

 Italiano