Comment corriger les erreurs de modèle 3D en TypeScript

Comment corriger les erreurs de modèle 3D en TypeScript

Ce guide couvre les erreurs les plus courantes lors de l’utilisation de @aspose/3d pour TypeScript et Node.js, avec des correctifs pratiques pour chacun.

Guide étape par étape

Étape 1 : Vérifier l’installation et les versions

Assurez‑vous d’utiliser une version prise en charge de Node.js (18, 20 ou 22) et que le paquet est installé :

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

Si le paquet n’est pas trouvé, réinstallez :

npm install @aspose/3d

Étape 2 : Corriger les erreurs de résolution de modules

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

Les importations de sous‑chemins nécessitent les exportations de paquet Node.js 12.7+. En TypeScript, définissez la résolution de module correcte :

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

Pour les projets ESM, utilisez "module": "ES2022" et "moduleResolution": "bundler".


Étape 3 : Déboguer une scène vide après le chargement

Si scene.rootNode.childNodes est vide après 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 courantes :

  1. Options de format incorrectes: pour OBJ, passez toujours new ObjLoadOptions(). L’utilisation d’options génériques peut empêcher la détection du format.
  2. Le chemin du fichier est incorrect:la bibliothèque charge silencieusement une scène vide si le fichier n’est pas trouvé :
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. Le fichier OBJ utilise des fins de ligne non standard: ouvrez-le dans un éditeur de texte et assurez‑vous que le fichier est valide.

Étape 4 : Corriger les problèmes de système de coordonnées

Les modèles peuvent apparaître tournés, reflétés ou mis à l’échelle de façon incorrecte en raison des différences de système de coordonnées entre les formats.

Main droite vs main gauche, Y vers le haut vs Z vers le haut :

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

Problèmes d’échelle (p. ex., STL en millimètres vs glTF en mètres) :

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

Étape 5 : Gérer les problèmes de mémoire avec les gros fichiers

Pour les fichiers de plus de 100 Mo, augmentez la taille du tas Node.js :

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

Ou définissez‑le dans package.json:

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

Traitez les gros fichiers un par un plutôt qu’en parallèle afin d’éviter les pics de mémoire.


Référence des erreurs courantes

ErreurCause probableCorrection
Cannot find module '@aspose/3d/formats/obj'Configuration de résolution de moduleDéfinir moduleResolution: node16 dans tsconfig
scene.rootNode.childNodes est videOptions incorrectes ou fichier introuvableVérifiez le chemin du fichier ; transmettez le bon *LoadOptions
La géométrie apparaît miroir/inverséeIncompatibilité du système de coordonnéesDéfinir flipCoordinateSystem = true
La géométrie apparaît mal mise à l’échelleDifférence d’unité entre les formatsDéfinir scale dans les options de chargement
ENOMEM ou processus interrompuMémoire insuffisante pour le fichier volumineuxAugmenter --max-old-space-size
Erreur de type TypeScript sur node.entityType d’entité largeUtiliser instanceof Mesh garde

Questions fréquentes

Comment signaler un bug d’analyse ?

Ouvrez un ticket sur le dépôt GitHub avec le nom du format, un fichier minimal reproductible et le message d’erreur exact.

Pourquoi certains maillages ont-ils zéro point de contrôle ?

Certaines groupes OBJ ne définissent que des coordonnées de texture ou des normales sans données de position. Vérifiez mesh.controlPoints.length > 0 avant le traitement.

La bibliothèque ignore silencieusement les erreurs d’analyse. Comment les détecter ?

Envelopper scene.open() dans un bloc try/catch. Si le fichier est malformé, la bibliothèque peut lever une exception ou charger une scène partielle :

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

Voir aussi

 Français