TypeScript'te 3D Model Hatalarını Nasıl Düzeltiriz
Bu kılavuz, TypeScript ve Node.js için @aspose/3d kullanırken en yaygın hataları ve her biri için pratik çözümleri kapsar.
Adım Adım Kılavuz
Adım 1: Kurulumu ve Sürümleri Doğrulayın
Desteklenen bir Node.js sürümünde (18, 20 veya 22) olduğunuzdan ve paketin yüklü olduğundan emin olun:
node --version # Must be v18 or later
npm list @aspose/3d # Should show the installed versionPaket bulunamazsa, yeniden yükleyin:
npm install @aspose/3dAdım 2: Modül Çözümleme Hatalarını Düzelt
Hata: Cannot find module '@aspose/3d/formats/obj'
Alt yol ithalatları Node.js 12.7+ paket dışa aktarımlarını gerektirir. TypeScript’te doğru modül çözümlemesini ayarlayın:
// tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node16",
"strict": true
}
}ESM projeleri için "module": "ES2022" ve "moduleResolution": "bundler" kullanın.
Adım 3: Yükleme Sonrası Boş Sahneyi Hata Ayıkla
Eğer scene.rootNode.childNodes, scene.open() sonrasında boşsa:
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}`);Yaygın nedenler:
Yanlış format seçenekleri: OBJ için her zaman
new ObjLoadOptions()geçirin. Genel seçenekleri kullanmak format algılamasını engelleyebilir.Dosya yolu yanlış: kütüphane dosya bulunamadığında sessizce boş bir sahne yükler:
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 dosyası standart dışı satır sonları kullanıyor: bir metin düzenleyicide açın ve dosyanın geçerli olduğundan emin olun.
Adım 4: Koordinat Sistemi Sorunlarını Düzelt
Modeller, formatlar arasındaki koordinat sistemi farklılıkları nedeniyle döndürülmüş, yansıtılmış veya yanlış ölçeklendirilmiş görünebilir.
Sağ el vs sol el, Y-yukarı vs Z-yukarı:
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);Ölçek sorunları (ör. STL milimetre cinsinden, glTF metre cinsinden):
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);Adım 5: Büyük Dosyalarla Bellek Sorunlarını Ele Al
100 MB’den büyük dosyalar için Node.js yığın boyutunu artırın:
node --max-old-space-size=4096 convert.jsVeya package.json içinde ayarlayın:
{
"scripts": {
"convert": "node --max-old-space-size=4096 dist/convert.js"
}
}Büyük dosyaları paralel yerine tek tek işleyerek en yüksek bellek sorunlarından kaçının.
Ortak Hata Referansı
| Hata | Muhtemel Neden | Çözüm |
|---|---|---|
Cannot find module '@aspose/3d/formats/obj' | Modül çözümleme yapılandırması | tsconfig içinde moduleResolution: node16 ayarlayın |
scene.rootNode.childNodes boş | Yanlış seçenekler veya dosya bulunamadı | Dosya yolunu kontrol edin; doğru *LoadOptions geçirin |
| Geometri yansıtılmış/ters görünüyor | Koordinat sistemi uyuşmazlığı | flipCoordinateSystem = true ayarlayın |
| Geometri yanlış ölçeklenmiş görünüyor | Biçimler arasındaki birim farkı | Yükleme seçeneklerinde scale ayarlayın |
ENOMEM veya süreç sonlandırıldı | Büyük dosya için yetersiz bellek | --max-old-space-size artırın |
node.entity üzerinde TypeScript tip hatası | Geniş varlık tipi | instanceof Mesh korumasını kullanın |
Sıkça Sorulan Sorular
Bir ayrıştırma hatasını nasıl bildiririm?
Biçim adı, minimal yeniden üretilebilir bir dosya ve tam hata mesajı ile GitHub deposunda bir sorun açın.
Neden bazı ağlar sıfır kontrol noktasına sahiptir?
Bazı OBJ grupları yalnızca doku koordinatlarını veya normalleri, konum verisi olmadan tanımlar. İşleme başlamadan önce mesh.controlPoints.length > 0 kontrol edin.
Kütüphane ayrıştırma hatalarını sessizce yok sayar. Bunları nasıl tespit edebilirim?
scene.open() öğesini bir try/catch bloğuna sarın. Dosya bozuksa, kütüphane bir istisna fırlatabilir veya kısmi bir sahne yükleyebilir:
try {
scene.open('model.obj', new ObjLoadOptions());
} catch (err) {
console.error('Failed to load:', err);
}