Wie man Fehler im 3D-Modell in TypeScript beheben kann

Wie man Fehler im 3D-Modell in TypeScript beheben kann

Diese Anleitung behandelt die häufigsten Fehler bei der Verwendung von @aspose/3d für TypeScript und Node.js, mit praktischen Korrekturen für jeden.

Schritt für Schritte

Schritt 1: Überprüfen der Installation und Versionen

Stellen Sie sicher, dass Sie sich auf einer unterstützten Node.js-Version (18, 20 oder 22) befinden und das Paket installiert ist:

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

Wenn das Paket nicht gefunden wird, installieren Sie es erneut:

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.


Schritt 2: Fehler bei der Modul-Auflösung beheben

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

Im TypeScript ist die richtige Modul-Auflösung festzulegen:

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

Bei ESM-Projekten die Verwendung von "module": "ES2022" und . "moduleResolution": "bundler".


Schritt 3: Debuggen einer leeren Szene nach dem Laden

Wenn: scene.rootNode.childNodes ist nach leer. 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}`);

Häufige Ursachen:

  1. Falsche Formatoptionen: bei Geburtsstunden immer abschneiden new ObjLoadOptions().Die Verwendung generischer Optionen kann die Formatserkennung verhindern.
  2. Dateiweg ist falsch .: die Bibliothek lädt leere Szenen, wenn keine Datei gefunden wird:
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. OBJ-Datei verwendet nicht standardmäßige Zeilenenden: in einem Texteditor öffnen und sicherstellen, dass die Datei gültig ist.

Schritt 4: Korrektur von Problemen im Koordinatensystem

Modelle können aufgrund von Koordinatensystemunterschieden zwischen den Formaten falsch gedreht, spiegeln oder skaliert erscheinen.

Rechte gegen linke, Y-up gegen 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);

Skalierungsfragen (z. B. STL in Millimetern gegenüber glTF in Metern):

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

Schritt 5: Bewältigen Sie Speicherprobleme bei großen Dateien

Für Dateien von mehr als 100 MB erhöhen Sie die Node.js-Heapgröße:

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

Oder sie einstellen . package.json:

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

Verarbeiten Sie große Dateien einzeln, anstatt parallel, um Speicher-Punkte zu vermeiden.


Häufiger Fehlerbezug

FehlerWahrscheinliche UrsacheBehebung
Cannot find module '@aspose/3d/formats/obj'Modul-AuflösungskonfigurationSetz moduleResolution: node16 in tsconfig
scene.rootNode.childNodes ist leer.Falsche Optionen oder keine Datei gefunden .Check-Dateiweg; korrekt abgegeben *LoadOptions
Geometrie wird in Spiegelbild/umgedreht angezeigtNicht übereinstimmende KoordinatensystemeSetz flipCoordinateSystem = true
Geometrie wird falsch skaliert angezeigtEinheitsunterschied zwischen den FormatenSetz scale in den Belastungsoptionen
ENOMEM oder verarbeiteteUnzureichender Speicher für große DateienErhöhung der --max-old-space-size
TypScript-Fehler beim Anschalten von TypeScript node.entityBreite EntitätstypVerwendung instanceof Mesh Wachmann

Häufig gestellte Fragen

Wie melde ich einen Parsing-Bug?

Eröffnen Sie eine Ausgabe über die GitHub-Repository (Github-Speicher) mit dem Formatnamen, einer minimalen reproduzierbaren Datei und der genauen Fehlermeldung.

Warum haben manche Maschen keine Kontrollpunkte?

Einige OBJ-Gruppen definieren nur Texturkoordinaten oder Normale ohne Positionsdaten. mesh.controlPoints.length > 0 vor der Verarbeitung.

Die Bibliothek ignoriert die Parsefehler.?

Verpackung scene.open() Wenn die Datei falsch formatiert ist, kann die Bibliothek eine Ausnahme werfen oder eine teilweise Szene laden:

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

Siehe auch:

 Deutsch