Kako popraviti greške 3D modela u TypeScript-u

Kako popraviti greške 3D modela u TypeScript-u

Ovaj vodič pokriva najčešće greške pri korišćenju @aspose/3d za TypeScript i Node.js, sa praktičnim rešenjima za svaku.

Vodič korak po korak

Korak 1: Proverite instalaciju i verzije

Uverite se da koristite podržanu verziju Node.js-a (18, 20 ili 22) i da je paket instaliran:

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

Ako paket nije pronađen, reinstalirajte:

npm install @aspose/3d

Korak 2: Popravite greške u razrešavanju modula

Greška: Cannot find module '@aspose/3d/formats/obj'

Uvozi pod‑putanja zahtevaju izvoz paketa iz Node.js 12.7+. U TypeScript‑u, postavite ispravno razrešavanje modula:

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

Za ESM projekte, koristite "module": "ES2022" i "moduleResolution": "bundler".


Korak 3: Dijagnostikujte praznu scenu nakon učitavanja

Ako scene.rootNode.childNodes je prazno nakon 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}`);

Uobičajeni uzroci:

  1. Pogrešne opcije formata: za OBJ, uvek prosledite new ObjLoadOptions(). Korišćenje generičkih opcija može sprečiti otkrivanje formata.
  2. Putanja do fajla je pogrešna: biblioteka tiho učitava praznu scenu ako fajl nije pronađen:
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 fajl koristi nestandardne završetke linija: otvorite u tekstualnom editoru i uverite se da je fajl validan.

Korak 4: Ispravite probleme sa koordinatnim sistemom

Modeli se mogu pojaviti rotirani, zrcaljeni ili nepravilno skalirani zbog razlika u koordinatnim sistemima između formata.

Desna ruka naspram leve ruke, Y-gore naspram Z-gore:

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

Problemi sa skaliranjem (npr. STL u milimetrima naspram glTF-a u metrima):

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

Korak 5: Rešavanje problema sa memorijom kod velikih fajlova

Za fajlove veće od 100 MB, povećajte veličinu Node.js heap memorije:

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

Ili postavite to u package.json:

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

Obradjujte velike fajlove jedan po jedan, a ne paralelno, kako biste izbegli probleme sa vršnim opterećenjem memorije.


Uobičajena referenca grešaka

GreškaVerovatni uzrokPopravka
Cannot find module '@aspose/3d/formats/obj'Konfiguracija rezolucije modulaPostavi moduleResolution: node16 u tsconfig
scene.rootNode.childNodes je praznoPogrešne opcije ili fajl nije pronađenProverite putanju fajla; prosledite ispravnu *LoadOptions
Geometrija se pojavljuje ogledano/okrenutoNeslaganje koordinatnog sistemaPostavi flipCoordinateSystem = true
Geometrija se čini pogrešno skaliranaRazlika u jedinicama između formataPostavi scale u opcijama učitavanja
ENOMEM ili je proces prekinutNedovoljno memorije za veliku datotekuPovećaj --max-old-space-size
Greška tipa u TypeScript-u na node.entityŠirok tip entitetaKoristi instanceof Mesh čuvanje

Često postavljana pitanja

Kako da prijavim grešku u parsiranju?

Otvorite problem na GitHub repozitorijum sa imenom formata, minimalnim reproduktivnim fajlom i tačnom porukom o grešci.

Zašto neki mrežni modeli (meshes) imaju nula kontrolnih tačaka?

Neke OBJ grupe definišu samo koordinate teksture ili normale bez podataka o poziciji. Proverite mesh.controlPoints.length > 0 pre obrade.

Biblioteka tiho ignoriše greške pri parsiranju. Kako da ih otkrijem?

Uokvirite scene.open() u try/catch bloku. Ako je fajl oštećen, biblioteka može baciti izuzetak ili učitati delimičnu scenu:

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

Vidi takođe

 Српски