Sahne İşleme ve Dışa Aktarma

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çimUzantıMateryallerAnimasyonTek DosyaEn Uygun
GLB.glbPBR (glTF 2.0)EvetEvetWeb, oyunlar, genel dağıtım
glTF.gltfPBR (glTF 2.0)EvetHayır (+ .bin)Geliştirme, denetim
STL.stlHayırHayırEvet3D printing, geometry-only
FBX.fbxPhong/PBRHayır*Hayır*Importer/exporter mevcut ancak otomatik algılamaya bağlanmamış
COLLADA.daeEvetEvetEvetCross-DCC değişimi
3MF.3mfRenk/malzemeHayırEvetModern 3D baskı

Yaygın Dışa Aktarma Sorunları

SemptomNedenDüzeltme
Çıktı GLB, görüntüleyicide JSON olarak açılırbinaryMode olarak bırakıldı falseAyarla opts.binaryMode = true
Çıktı GLB’de dokular eksikbinaryMode ayarlanmadıAyarla opts.binaryMode = true kendinden bağımsız GLB için
STL dosyası dilimleyicide renk içermezSTL formatı renk desteği sağlamazRenk verileri için 3MF kullanın
saveToBuffer boş tampon döndürürBiç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ırKaynak dosya (OBJ/STL) animasyon içermiyorAnimasyon yalnızca kaynakta mevcutsa aktarılır
Çıktı dosyası çok büyükKaynak OBJ’de çok sayıda yinelenen köşe varGLB ikili çıktısı zaten yinelenenleri kaldırır; kaynak varlık kalitesini kontrol edin

Ayrıca Bakınız

 Türkçe