Kako popraviti pogreške 3D modela u TypeScriptu
Ovaj vodič pokriva najčešće greške pri korištenju @aspose/3d za TypeScript i Node.js, s praktičnim rješenjima za svaku.
Vodič korak po korak
Korak 1: Provjerite instalaciju i verzije
Provjerite jeste li na podržanoj Node.js verziji (18, 20 ili 22) i da je paket instaliran:
node --version # Must be v18 or later
npm list @aspose/3d # Should show the installed versionAko paket nije pronađen, ponovno instalirajte:
npm install @aspose/3dKorak 2: Ispravi pogreške razrješavanja modula
Greška: Cannot find module '@aspose/3d/formats/obj'
Uvoz podputanja zahtijeva izvoz paketa Node.js 12.7+. U TypeScriptu postavite ispravno razrješavanje modula:
// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node16",
"strict": true
}
}Za ESM projekte, koristite "module": "ES2022" i "moduleResolution": "bundler".
Korak 3: Debug prazne scene nakon učitavanja
Ako je scene.rootNode.childNodes prazan 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:
Pogrešne opcije formata: za OBJ, uvijek proslijedite
new ObjLoadOptions(). Korištenje generičkih opcija može spriječiti otkrivanje formata.Put datoteke je pogrešan: biblioteka tiho učitava praznu scenu ako datoteka nije pronađena:
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 datoteka koristi nestandardne završetke redaka: otvorite je u tekstualnom editoru i provjerite je li datoteka valjana.
Korak 4: Ispravi probleme koordinatnog sustava
Modeli se mogu pojaviti rotirani, zrcaljeni ili nepravilno skalirani zbog razlika u koordinatnim sustavima između formata.
Desna ruka vs lijeva ruka, Y‑gore vs 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 s mjerama (npr. STL u milimetrima vs glTF 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: Rješavanje problema s memorijom kod velikih datoteka
Za datoteke veće od 100 MB, povećajte veličinu heap memorije Node.js‑a:
node --max-old-space-size=4096 convert.jsIli ga postavite u package.json:
{
"scripts": {
"convert": "node --max-old-space-size=4096 dist/convert.js"
}
}Obradite velike datoteke po jednu, a ne paralelno, kako biste izbjegli probleme s vršnom memorijom.
Uobičajena referenca pogreške
| Greška | Vjerojatni uzrok | Rješenje |
|---|---|---|
Cannot find module '@aspose/3d/formats/obj' | Konfiguracija rezolucije modula | Postavite moduleResolution: node16 u tsconfig |
scene.rootNode.childNodes je prazan | Pogrešne opcije ili datoteka nije pronađena | Provjerite putanju datoteke; proslijedite ispravan *LoadOptions |
| Geometrija se prikazuje zrcaljeno/okrenuto | Neusklađenost koordinatnog sustava | Postavite flipCoordinateSystem = true |
| Geometrija je nepravilno skalirana | Razlika jedinica između formata | Postavite scale u opcijama učitavanja |
ENOMEM ili je proces prekinut | Nedovoljno memorije za veliku datoteku | Povećajte --max-old-space-size |
TypeScript greška tipa na node.entity | Široki tip entiteta | Koristite zaštitu instanceof Mesh |
Često postavljana pitanja
Kako mogu prijaviti grešku u parsiranju?
Otvorite issue na GitHub repository s nazivom formata, minimalnom reproduktivnom datotekom i točnom porukom o pogrešci.
Zašto neke mreže imaju nula kontrolnih točaka?
Neke OBJ grupe definiraju samo koordinate teksture ili normale bez podataka o položaju. Provjerite mesh.controlPoints.length > 0 prije obrade.
Biblioteka tiho ignorira pogreške parsiranja. Kako ih otkriti?
Uokvirite scene.open() u try/catch blok. Ako je datoteka oštećena, biblioteka može baciti iznimku ili učitati djelomičnu scenu:
try {
scene.open('model.obj', new ObjLoadOptions());
} catch (err) {
console.error('Failed to load:', err);
}