TypeScript'te 3D Model Hatalarını Nasıl Düzeltirsiniz

TypeScript'te 3D Model Hatalarını Nasıl Düzeltirsiniz

Bu kılavuz, kullanırken en yaygın hataları kapsar @aspose/3d TypeScript ve Node.js için, her biri için pratik çözümlerle.

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 version

Paket bulunamazsa, yeniden yükleyin:

npm install @aspose/3d

Adım 2: Modül Çözümleme Hatalarını Düzeltin

Hata: Cannot find module '@aspose/3d/formats/obj'

Alt yol ithalatları, Node.js 12.7+ paket dışa aktarımları 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, kullanın "module": "ES2022" ve "moduleResolution": "bundler".


Adım 3: Yükleme Sonrası Boş Sahneyi Hata Ayıklayın

Eğer scene.rootNode.childNodes boş ise 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}`);

Yaygın nedenler:

  1. Yanlış format seçenekleri: OBJ için, her zaman iletin new ObjLoadOptions(). Genel seçenekler kullanmak format algılamasını engelleyebilir.
  2. 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());
  1. 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üzeltin

Modeller, formatlar arasındaki koordinat sistemi farklılıkları nedeniyle döndürülmüş, yansıtılmış veya ölçeklendirilmiş hatalı 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ın

100 MB’den büyük dosyalar için Node.js yığın boyutunu artırın:

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

Veya şunu ayarlayın package.json:

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

Zirve bellek sorunlarından kaçınmak için büyük dosyaları paralel yerine tek tek işleyin.


Yaygın Hata Referansı

HataMuhtemel NedenDüzeltme
Cannot find module '@aspose/3d/formats/obj'Modül çözümleme yapılandırmasıAyarla moduleResolution: node16 tsconfig içinde
scene.rootNode.childNodes boşYanlış seçenekler veya dosya bulunamadıDosya yolunu kontrol edin; doğru girin *LoadOptions
Geometri yansıtılmış/ters görünüyorKoordinat sistemi uyumsuzluğuAyarla flipCoordinateSystem = true
Geometri yanlış ölçeklenmiş görünüyorBiçimler arasındaki birim farkıAyarla scale yükleme seçeneklerinde
ENOMEM veya işlem sonlandırıldıBüyük dosya için yetersiz bellekArtır --max-old-space-size
TypeScript tip hatası: node.entityGeniş varlık türüKullan instanceof Mesh koruma

Sık Sorulan Sorular

Bir ayrıştırma hatasını nasıl bildiririm?

Şu depoda bir issue açın GitHub deposu format adı, minimal yeniden üretilebilir dosya ve tam hata mesajı ile.

Neden bazı ağlar sıfır kontrol noktasına sahip?

Bazı OBJ grupları, konum verisi olmadan yalnızca doku koordinatları veya normaller tanımlar. Kontrol edin mesh.controlPoints.length > 0 işleme öncesinde.

Kütüphane ayrıştırma hatalarını sessizce yok sayar. Bunları nasıl tespit edebilirim?

Sarı scene.open() bir try/catch bloğu içinde. 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);
}

Ayrıca Bakınız

 Türkçe