Jak opravit chyby 3D modelu v TypeScriptu
Tato příručka pokrývá nejčastější chyby při použití: @aspose/3d pro TypeScript a Node.js, s praktickými opravami pro každý z nich.
Krok za krokem
Krok 1: Ověřte instalaci a verze
Ujistěte se, že jste na podporované verze Node.js (18, 20 nebo 22) a balíček je instalován:
node --version # Must be v18 or later
npm list @aspose/3d # Should show the installed versionPokud balíček není nalezen, znovu nainstalujte:
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
Krok 2: Opravit chyby při rozlišení modulu
Chyby: Cannot find module '@aspose/3d/formats/obj'
Import podcestu vyžaduje export balíčku Node.js 12.7+. V TypeScript nastavit správné rozlišení modulu:
// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node16",
"strict": true
}
}Pro projekty ESM se použije: "module": "ES2022" a) "moduleResolution": "bundler".
Krok 3: Debugování prázdné scény po načtení
Pokud: scene.rootNode.childNodes je prázdný po 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}`);Časté příčiny:
- Nepravé možnosti formátu: pro OBJ, vždy přejděte
new ObjLoadOptions().Použití obecných možností může zabránit detekci formátu. - Směrnice souboru je nesprávná .: knihovna tiše načte prázdnou scénu, pokud soubor není nalezen:
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());- Soubor OBJ používá nestandardní konce řádků: otevřete v textovém editoru a ujistěte se, že soubor je platný.
Krok 4: Opravit problémy s koordinačním systémem
Modely se mohou objevit otočené, zrcadlené nebo neschválené nesprávně kvůli rozdílům v koordinačních systémech mezi formáty.
Pravá ruka proti levé, 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);Problémy s měřítkem (např. STL v milimetrech vs. glTF v metrech):
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);Krok 5: Způsobování problémů s pamětí při velkých souborech
Pro soubory větší než 100 MB zvětšujte velikost Node.js:
node --max-old-space-size=4096 convert.jsNebo ho nastavit. package.json:
{
"scripts": {
"convert": "node --max-old-space-size=4096 dist/convert.js"
}
}Procesujte velké soubory jeden po druhém, a ne paralelně, abyste se vyhnuli problémům s maximální pamětí.
Zásada běžných chyb
| Zpráva chybná. | Pravděpodobná příčina | Opravy |
|---|---|---|
Cannot find module '@aspose/3d/formats/obj' | Konfigurace rozlišení modulu | Sestavení: moduleResolution: node16 v tsconfig |
scene.rootNode.childNodes je prázdný. | Nepravé možnosti nebo neobjevený soubor | Zkontrolujte cestu souboru; přejděte správně . *LoadOptions |
| Geometrie se zobrazuje zrcadleně/překrouceně. | Nesoulad souřadnicového systému | Sestavení: flipCoordinateSystem = true |
| Geometrie se zobrazuje ve špatném měřítku. | Rozdíl jednotek mezi formáty | Sestavení: scale v možnosti nakládky |
ENOMEM nebo procesem zabitý. | Nedostatečná paměť pro velký soubor | Zvýšení --max-old-space-size |
Chyby typování TypeScript na node.entity | Typ obecného subjektu | Použití: instanceof Mesh strážce |
Časté otázky
Jak nahlásím chybu v analýze?
Otevřít číslo na Repozitář GitHub s názvem formátu, minimálním reprodukovatelným souborem a přesnou chybovou zprávou.
Proč některé okovy mají nulové ovládací body?
Některé skupiny OBJ definují pouze texturní souřadnice nebo normály bez údajů o poloze. mesh.controlPoints.length > 0 před zpracováním.
Knihovna tiše ignoruje chyby v analýze.?
Obalování scene.open() v bloku try/catch. Pokud je soubor špatně formovaný, může knihovna vyhodit výjimku nebo načíst částečnou scénu:
try {
scene.open('model.obj', new ObjLoadOptions());
} catch (err) {
console.error('Failed to load:', err);
}