Jak opravit chyby 3D modelu v TypeScriptu

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 version

Pokud 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:

  1. 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.
  2. 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());
  1. 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.js

Nebo 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říčinaOpravy
Cannot find module '@aspose/3d/formats/obj'Konfigurace rozlišení moduluSestavení: moduleResolution: node16 v tsconfig
scene.rootNode.childNodes je prázdný.Nepravé možnosti nebo neobjevený souborZkontrolujte cestu souboru; přejděte správně . *LoadOptions
Geometrie se zobrazuje zrcadleně/překrouceně.Nesoulad souřadnicového systémuSestavení: flipCoordinateSystem = true
Geometrie se zobrazuje ve špatném měřítku.Rozdíl jednotek mezi formátySestavení: scale v možnosti nakládky
ENOMEM nebo procesem zabitý.Nedostatečná paměť pro velký souborZvýšení --max-old-space-size
Chyby typování TypeScript na node.entityTyp obecného subjektuPouž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);
}

Viz také:

 Čeština