TypeScript'te 3D Modelleri Nasıl Kaydedilir
Aspose.3D FOSS for TypeScript sahneleri tek bir scene.save() çağrı. Çıktı formatı dosya uzantısından otomatik olarak algılanır. Bu kılavuz, her formata kaydetmeyi ve formata özgü seçenekleri kullanmayı kapsar.
Adım Adım Kılavuz
Adım 1: @aspose/3d’yi kurun
npm install @aspose/3dAdım 2: Bir Sahne Yükleyin veya Oluşturun
Kaydetmeden önce ya mevcut bir dosyayı yükleyin ya da programlı olarak bir sahne oluşturun.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
// Load from file
const scene = new Scene();
scene.open('source.obj', new ObjLoadOptions());
// Or create a new empty scene
const emptyScene = new Scene();Adım 3: Otomatik Algılanan Formatla Kaydedin
scene.save(path) dosya uzantısından çıktı formatını algılar:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
// Save as binary glTF
scene.save('output.glb');
// Save as JSON glTF
scene.save('output.gltf');
// Save as STL
scene.save('output.stl');
// Save as OBJ
scene.save('output.obj');
// Save as FBX
scene.save('output.fbx');
// Save as 3MF
scene.save('output.3mf');
// Save as COLLADA
scene.save('output.dae');Adım 4: Format‑özel SaveOptions Kullanımı
Daha ince kontrol için, format‑özel bir seçenek nesnesi geçirin:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
// Export to GLB with specific options
const saveOptions = new GltfSaveOptions();
saveOptions.binaryMode = true; // produce GLB (binary glTF)
scene.save('output.glb', saveOptions);Adım 5: Bir Buffer’a (Bellek İçinde) Kaydedin
Kullan scene.saveToBuffer() çıktıyı bir … olarak almak için Buffer disk’e yazmadan:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
const buffer = scene.saveToBuffer('output.glb');
console.log(`Buffer size: ${buffer.length} bytes`);
// Send via HTTP, upload to S3, etc.
Adım 6: Çıktıyı Doğrulayın
Kaydettikten sonra, dosyanın var olduğunu ve sıfırdan farklı bir boyuta sahip olduğunu doğrulayın:
import * as fs from 'fs';
const stats = fs.statSync('output.glb');
console.log(`Saved output.glb: ${stats.size} bytes`);Biçim Destek Matrisi
| Uzantı | Biçim | Notlar |
|---|---|---|
.glb | glTF 2.0 Binary | glTF için önerilir; tüm varlıklar tek dosyada gömülüdür |
.gltf | glTF 2.0 JSON | Ayrı .bin ve doku dosyaları JSON ile birlikte |
.obj | Wavefront OBJ | Yazdırır .mtl malzeme dosyası yanına .obj malzemeler mevcut olduğunda |
.stl | STL | Varsayılan: ikili STL; kullan StlSaveOptions.ascii = true metin için |
.fbx | Autodesk FBX | Binary FBX formatı |
.3mf | 3D Manufacturing | 3D baskı iş akışları için uygundur |
.dae | COLLADA | XML tabanlı değişim formatı |
Yaygın Sorunlar ve Çözümler
Error: Unsupported format kaydederken
Dosya uzantısının desteklenen bir formatla eşleştiğini kontrol edin. Kütüphane, formatı algılamak için uzantıyı kullanır; bir dosya adı output.xyz başarısız olur.
.obj dosya kaydedilir ancak materyaller eksik
OBJ kaydederken, malzeme kütüphanesi (.mtl) otomatik olarak … yanına yazılır .obj. Her iki dosya da yeniden açarken aynı dizinde olmalıdır. Yalnızca geometriye ihtiyacınız varsa, şunu ayarlayın ObjSaveOptions.enableMaterials = false.
Büyük .gltf ayrı dokularla
Kullanın .glb yerine .gltf; ikili verileri tek bir bağımsız dosyada birleştirir. Ayarlayın GltfSaveOptions.binaryMode = true geçirirken GltfSaveOptions örnek.
Sıkça Sorulan Sorular
Tek bir çalıştırmada birden fazla biçime kaydedebilir miyim?
Evet; çağır scene.save() farklı yollarla birden çok kez:
scene.save('output.glb');
scene.save('output.stl');
scene.save('output.obj');Kaydetme sahneyi değiştirir mi?
Hayır. scene.save() sahne grafiği üzerinde yalnızca okuma işlemi yapar. Aynı sahneyi birden fazla formata yan etki olmadan kaydedebilirsiniz.
Kaynak dosyanın üzerine yazabilir miyim?
Evet. Aynı yolu şuraya gönderin scene.save() kullandığınızda scene.open(). Kütüphane önce bir tampona yazar ve ardından diske yazar.