TypeScript'te 3D Modelleri Nasıl Kaydedilir

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/3d

Adı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çimNotlar
.glbglTF 2.0 BinaryglTF için önerilir; tüm varlıklar tek dosyada gömülüdür
.gltfglTF 2.0 JSONAyrı .bin ve doku dosyaları JSON ile birlikte
.objWavefront OBJYazdırır .mtl malzeme dosyası yanına .obj malzemeler mevcut olduğunda
.stlSTLVarsayılan: ikili STL; kullan StlSaveOptions.ascii = true metin için
.fbxAutodesk FBXBinary FBX formatı
.3mf3D Manufacturing3D baskı iş akışları için uygundur
.daeCOLLADAXML 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.


Ayrıca Bakınız

 Türkçe