TypeScript'te 3D Modelleri Nasıl Dönüştürülür

TypeScript'te 3D Modelleri Nasıl Dönüştürülür

Aspose.3D FOSS for TypeScript, 3D formatları arasında, nötr Scene temsiline yükleyerek ve hedef formata kaydederek dönüştürür. Bu kılavuz en yaygın dönüşümleri gösterir.

Adım Adım Kılavuz

Adım 1: @aspose/3d’yi kurun

npm install @aspose/3d

Adım 2: Kaynak Dosyayı Yükle

Bir Scene oluşturun ve scene.open() çağırın. En iyi sonuçlar için format‑özel *LoadOptions sınıfını kullanın.

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);

Adım 3: Hedef Formata Kaydet

scene.save()‘i çıktı yolu ile çağırın. Çıktı formatı dosya uzantısından algılanır.

// OBJ → glTF binary (GLB)
scene.save('output.glb');

// OBJ → STL
scene.save('output.stl');

// OBJ → COLLADA
scene.save('output.dae');

Not: FBX desteklenmiyor scene.save() otomatik algılaması tarafından. .fbx uzantısı herhangi bir dışa aktarıcıya bağlanmamış — .fbx‘ye kaydetmek sessizce OBJ-format içeriği yazar. Güvenilir çıktı için OBJ, glTF, STL, 3MF veya COLLADA kullanın.


Adım 4: Yaygın Dönüştürme Örnekleri

OBJ’den glTF / GLB’ye

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
scene.save('model.glb');
console.log('Converted OBJ → GLB');

FBX — Desteklenmiyor

FBX otomatik algılaması scene.open() içinde bağlanmamıştır. scene.open()‘e geçirilen bir .fbx dosyası hiçbir format algılayıcı tarafından tanınmaz ve STL ayrıştırıcısına düşer; bu da başarısız olur ya da çöp üretir. Kütüphanede FBX içe/dışa aktarma sınıfları bulunur ancak yüksek seviyeli open()/save() API’si yerine doğrudan çağrı gerektirir. FBX alternatifi olarak COLLADA, OBJ veya glTF kullanın.

glTF’den STL’ye

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');

COLLADA’dan 3MF’ye

import { Scene } from '@aspose/3d';

const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');

Adım 5: Birden Çok Dosyayı Toplu Olarak Dönüştür

import * as fs from 'fs';
import * as path from 'path';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const inputDir = './input';
const outputDir = './output';

fs.mkdirSync(outputDir, { recursive: true });

const objFiles = fs.readdirSync(inputDir).filter(f => f.endsWith('.obj'));

for (const file of objFiles) {
    const inputPath = path.join(inputDir, file);
    const outputFile = file.replace('.obj', '.glb');
    const outputPath = path.join(outputDir, outputFile);

    const scene = new Scene();
    scene.open(inputPath, new ObjLoadOptions());
    scene.save(outputPath);

    console.log(`Converted ${file}${outputFile}`);
}

Desteklenen Dönüşüm Matrisi

Kaynak \ HedefglTF/GLBOBJSTLFBX3MFCOLLADA
OBJ
glTF/GLB
FBX
STL
3MF
COLLADA

FBX yüksek seviyeli open()/save() API’si aracılığıyla desteklenmiyor — format otomatik algılamaya bağlanmamış. Yukarıdaki tüm FBX hücreleri ✗.


Yaygın Sorunlar ve Çözümler

Malzemeler dönüşümden sonra kaybolur

OBJ malzemeleri (usemtl, .mtl dosyası) ObjLoadOptions.enableMaterials = true sırasında yüklenir. glTF’ye kaydedilirken, PBR malzeme özellikleri otomatik olarak eşlenir. Karmaşık malzemeler (prosedürel, çok katmanlı) azaltılmış doğrulukla dönüştürülebilir.

Mesh yanlış ölçeklendirilmiş görünüyor

Farklı formatlar farklı varsayılan birimler kullanır (STL için milimetre, glTF için metre). Birimleri normalleştirmek için yüklerken ObjLoadOptions.scale, kaydederken ise StlSaveOptions.scaleFactor kullanın.

Koordinat sistemi uyumsuzluğu (model ters çevrilmiş veya döndürülmüş)

Bazı formatlar sağ el Y‑yukarı yönünü kullanırken, diğerleri Z‑yukarı yönünü kullanır. ObjLoadOptions.flipCoordinateSystem = true kullanın veya yükleme sonrasında kök düğüme bir dönüşüm uygulayın.


Sıkça Sorulan Sorular

Dönüştürme animasyonları korur mu?

Animasyon verileri, bunu destekleyen formatlar arasında dönüştürülürken korunur (ör., COLLADA → glTF). STL ve OBJ animasyon verisi taşımaz. FBX, scene.open()/scene.save() aracılığıyla desteklenmediği için, FBX animasyon dönüşleri yüksek seviyeli API üzerinden mevcut değildir.

Doku verileri korunur mu?

OBJ malzemeleri tarafından referans verilen veya glTF içinde gömülü dokular sahne grafiğine taşınır. GLB’ye (binaryMode = true) kaydederken, ikili tampon tek bir dosyada gömülür. OBJ çıktısı için, dokular .obj ile birlikte ayrı dosyalar olarak kaydedilir.

Birçok dosyayı paralel olarak dönüştürebilir miyim?

scene.open() ve scene.save() eşzamanlıdır. Paralel işleme için Node.js worker_threads kullanın.


Ayrıca Bakınız

 Türkçe