Sahne İşleme ve Dışa Aktarma
@aspose/3d bir işleme ve dönüşüm kütüphanesidir ve GPU renderlaması yapmaz ya da görüntü dosyaları üretmez. Bu kütüphane bağlamında “Rendering” şu anlama gelir bir sahneyi aşağı akış renderlayıcı, oyun motoru veya görüntüleyici tarafından tüketilebilecek bir formata dışa aktarmak.
Bu sayfa tüm dışa aktarma yollarını kapsar: dosya tabanlı kaydetme, bellek içi tampon çıktısı, format‑özel seçenekler ve sahneleri yaygın aşağı akış hedefleri (Three.js, Babylon.js, model görüntüleyiciler ve oyun motorları) için nasıl hazırlayacağınızı açıklar.
Temel Dışa Aktarma
Çağrı scene.save() bir dosya yolu ile. Kütüphane çıktı formatını dosya uzantısından çıkarır:
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('input.obj'); // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)
scene.save('output.glb'); // GLB (binary glTF)
scene.save('output.stl'); // STL
scene.save('output.dae'); // COLLADA
scene.save('output.3mf'); // 3MF
GLB’ye Dışa Aktarma (Web ve Oyunlar İçin Önerilir)
GLB (binary glTF 2.0), tüm ağ veri, malzeme ve dokuları içinde barındıran tek bir bağımsız dosyadır. Web görüntüleyicileri (Three.js, Babylon.js, model-viewer) ve oyun motorları (Godot, Unity içe aktarıcı aracılığıyla) için önerilen çıktı formatıdır:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('source.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // produce .glb instead of .gltf + .bin
scene.save('output.glb', opts);
console.log('GLB export complete');Ayarla binaryMode = true kendi içinde barındıran bir GLB dosyası üretmek için. Ne zaman false, çıktı bir .gltf JSON dosyası ayrı bir .bin tampon sidecar.
glTF’ye Dışa Aktarma (İnceleme İçin JSON Formatı)
JSON varyantı (.gltf + .bin) geliştirme sırasında faydalıdır çünkü JSON insan tarafından okunabilir:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae'); // COLLADA is fully supported; FBX is not wired into scene.open()
const opts = new GltfSaveOptions();
opts.binaryMode = false; // JSON + .bin sidecar
scene.save('output.gltf', opts);STL’ye Dışa Aktarma (3D Baskı İş Akışları)
STL sadece geometri içerir (malzeme yok, animasyon yok). 3D baskı dilimleyicileri için standart değişim formatıdır:
import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.obj');
const opts = new StlSaveOptions();
opts.binaryMode = true; // binary STL is more compact than ASCII
scene.save('output.stl', opts);Ayarla binaryMode = false ASCII STL üretmek için, bu metin olarak okunabilir ancak daha büyüktür.
FBX’ye Dışa Aktarma (DCC Araç İş Akışları)
Not: FBX içe aktarma ve dışa aktarma sınıfları kütüphanede mevcuttur, ancak FBX formatı otomatik algılama buna bağlanmamıştır scene.open() veya scene.save(). Çağırma scene.save('output.fbx', opts) FBX dışa aktarıcısını çağırmayacaktır — .fbx uzantı kaydetme dağıtıcısı tarafından tanınmaz ve çağrı OBJ çıktısına geri dönecektir. Kullan FbxExporter sınıfını doğrudan kullanın eğer FBX G/Ç’ye ihtiyacınız varsa. Format destek tablosu FBX’i şu şekilde işaretler No* bu nedenle.
Blender, Maya veya Unreal Engine tarafından kabul edilen bir formata dışa aktarmanız gerekiyorsa, bunun yerine GLB veya COLLADA kullanın — ikisi de tamamen entegre edilmiştir scene.save():
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae');
// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);Bellek İçi Dışa Aktarma ile saveToBuffer()
Sunucusuz işlevler, HTTP yanıtları ve akış hatları için, doğrudan bir Buffer disk’e yazmadan:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function convertToGlbBuffer(inputPath: string): Buffer {
const scene = new Scene();
scene.open(inputPath);
const opts = new GltfSaveOptions();
opts.binaryMode = true;
return scene.saveToBuffer('glb', opts);
}
// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);
saveToBuffer() ilk argüman olarak bir format dizesi alır (örneğin. 'glb', 'stl', 'obj') ve aynı seçenek nesneleri olarak save().
Birleştirerek openFromBuffer() ve saveToBuffer()
Her aşamada disk I/O’su olmadan tamamen bellek içi bir dönüşüm boru hattı:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function objBufferToGlbBuffer(objData: Buffer): Buffer {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.openFromBuffer(objData, loadOpts);
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
return scene.saveToBuffer('glb', saveOpts);
}Belirli Renderlayıcılar için Sahneleri Hazırlama
Three.js / Babylon.js (Web)
Bu renderlayıcılar GLB dosyalarını yerel olarak yükler. Şununla dışa aktar binaryMode = true. Kaynak OBJ’den dokular referans alınıyorsa, şununun .mtl ve görüntü dosyalarının yükleme sırasında aynı konumda olduğundan emin olun.
model-viewer (Web Bileşeni)
Kabul eder .glb doğrudan. Three.js ile aynı dışa aktarma ayarları.
Godot Engine
GLB’yi Godot’un içe aktarıcısı (Proje → İçe Aktar) aracılığıyla içe aktar. Şunu kullan binaryMode = true. Godot, glTF 2.0’den PBR materyalleri yerel olarak destekler.
Blender
En iyi içe aktarma doğruluğu için glTF (output.gltf + output.bin) veya GLB (output.glb). Blender’ın glTF 2.0 içe aktarıcısı PBR malzemeleri ve animasyonu işler. Not: FBX çıktısı via scene.save() desteklenmiyor — FBX formatı otomatik algılama kaydetme dağıtıcısına bağlanmamıştır.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
STL veya 3MF olarak dışa aktarın. Renk veya malzeme meta verilerinin korunması gerektiğinde 3MF kullanın. En yüksek uyumluluk için STL kullanın.
Dışa Aktarma Formatı Karşılaştırması
| Biçim | Uzantı | Materyaller | Animasyon | Tek Dosya | En Uygun |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | Evet | Evet | Web, oyunlar, genel dağıtım |
| glTF | .gltf | PBR (glTF 2.0) | Evet | Hayır (+ .bin) | Geliştirme, denetim |
| STL | .stl | Hayır | Hayır | Evet | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | Hayır* | Hayır* | Importer/exporter mevcut ancak otomatik algılamaya bağlanmamış |
| COLLADA | .dae | Evet | Evet | Evet | Cross-DCC değişimi |
| 3MF | .3mf | Renk/malzeme | Hayır | Evet | Modern 3D baskı |
Yaygın Dışa Aktarma Sorunları
| Semptom | Neden | Düzeltme |
|---|---|---|
| Çıktı GLB, görüntüleyicide JSON olarak açılır | binaryMode olarak bırakıldı false | Ayarla opts.binaryMode = true |
| Çıktı GLB’de dokular eksik | binaryMode ayarlanmadı | Ayarla opts.binaryMode = true kendinden bağımsız GLB için |
| STL dosyası dilimleyicide renk içermez | STL formatı renk desteği sağlamaz | Renk verileri için 3MF kullanın |
saveToBuffer boş tampon döndürür | Biçim dizesi argümanı eksik ya da hatalı | Biçim dizesini geçirin, örnek olarak. 'glb', 'stl', ya da 'obj' |
| FBX, Blender’da animasyon olmadan açılır | Kaynak dosya (OBJ/STL) animasyon içermiyor | Animasyon yalnızca kaynakta mevcutsa aktarılır |
| Çıktı dosyası çok büyük | Kaynak OBJ’de çok sayıda yinelenen köşe var | GLB ikili çıktısı zaten yinelenenleri kaldırır; kaynak varlık kalitesini kontrol edin |
Ayrıca Bakınız
- Model Yükleme: diskteki ve tamponlardaki 3D dosyaları yükleme
- Sahne Grafiği: dışa aktarmadan önce sahneyi oluşturma ve değiştirme
- Format Desteği: tam okuma/yazma matrisi
- API Genel Bakışı: tüm sınıflar ve enumerasyonlar