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 versionWenn 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:
- Falsche Formatoptionen: bei Geburtsstunden immer abschneiden
new ObjLoadOptions().Die Verwendung generischer Optionen kann die Formatserkennung verhindern. - 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());- 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.jsOder 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
| Fehler | Wahrscheinliche Ursache | Behebung |
|---|---|---|
Cannot find module '@aspose/3d/formats/obj' | Modul-Auflösungskonfiguration | Setz 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 angezeigt | Nicht übereinstimmende Koordinatensysteme | Setz flipCoordinateSystem = true |
| Geometrie wird falsch skaliert angezeigt | Einheitsunterschied zwischen den Formaten | Setz scale in den Belastungsoptionen |
ENOMEM oder verarbeitete | Unzureichender Speicher für große Dateien | Erhöhung der --max-old-space-size |
TypScript-Fehler beim Anschalten von TypeScript node.entity | Breite Entitätstyp | Verwendung 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);
}