3D Biçim Desteği

Aspose.3D FOSS for TypeScript yedi ana 3D dosya formatını okur ve yazar. Format algılaması yükleme sırasında otomatik olur: kütüphane ikili sihirli sayıları inceler, böylece kaynak formatı belirtmeniz gerekmez. Format‑özel seçenek sınıfları paketin alt yollarından içe aktarılır the @aspose/3d paket.

Desteklenen Formatlar

BiçimUzantıOkumaYazmaBiçim SınıfıNotlar
Wavefront OBJ.objEvetEvetObjFormatOkur .mtl malzemeler; yazar .mtl yanında .obj
glTF 2.0.gltfEvetEvetGltfFormatJSON metni + .bin sidecar
GLB.glbEvetEvetGltfFormatBinary glTF; ayarlandı binaryMode = true
STL.stlEvetEvetStlFormatBinary ve ASCII modları
3MF.3mfEvetEvetThreeMfFormat3D Manufacturing Format
FBX.fbxHayır*Hayır*FbxFormatImporter/exporter mevcut ancak format auto-detection bağlanmadı; üzerinden kullanılamaz scene.open()
COLLADA.daeEvetEvetColladaFormatGerektirir xmldom (otomatik kurulur)

OBJ (Wavefront)

OBJ, hem içe aktarma hem dışa aktarmayı destekler @aspose/3d. OBJ olarak kaydederken, malzeme kütüphanesi (.mtl) otomatik olarak yanına yazılır .obj dosya. Kullan ObjLoadOptions malzeme yüklemesini ve koordinat sistemi davranışını kontrol etmek için.

İçin anahtar seçenekler ObjLoadOptions:

SeçenekTürVarsayılanEtki
enableMaterialsbooleantrueAyrıştır .mtl tarafından referans verilen dosya mtllib
flipCoordinateSystembooleanfalseY/Z eksenlerini sağ el sistemleriyle eşleşecek şekilde ters çevir
scalenumber1.0Yükleme sırasında tüm köşelere uygulanan tekdüze ölçek
normalizeNormalbooleantrueKöşe normallerini birim uzunluğa normalize et
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;

scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);

Bir OBJ’yi herhangi bir yazılabilir formata dönüştürmek için, onu yükleyin ve şu komutu çağırın scene.save() hedef format sınıfı ile.

glTF ve GLB

glTF 2.0, web ve oyun motoru kullanımı için önerilen değişim formatıdır. Kütüphane aynı GltfFormat sınıfı hem .gltf (JSON + yan dosya) ve .glb (ikili, tek dosya) çıktı. Aralarında geçiş yapmak için GltfSaveOptions.binaryMode.

glTF veya GLB yükle:

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

const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb');  // format detected from magic bytes

JSON glTF olarak dışa aktar (.gltf + .bin):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.fbx');

const opts = new GltfSaveOptions();
opts.binaryMode = false;  // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);

İkili GLB olarak dışa aktar (.glb):

import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('input.obj');

const opts = new GltfSaveOptions();
opts.binaryMode = true;  // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);

Kullan binaryMode = true üretim varlık teslimi için. Tek bir .glb tarayıcılarda ve motorlarda bölünmüş metin + ikili çiftine göre daha hızlı yüklenir.

STL

STL, CAD ve 3D baskıda kullanılan üçgenleştirilmiş bir ağ (mesh) formatıdır. Giriş ve çıkış için hem ikili hem de ASCII STL desteklenir. StlSaveOptions.binaryMode çıkışın ikili (kompakt) mi yoksa ASCII (insan tarafından okunabilir) mi olacağını kontrol eder.

import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';

const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());

// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);

// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);

STL yalnızca üçgenleştirilmiş geometriyi ve tepe nokta normallerini depolar. Malzeme ve UV verileri STL’de korunmaz.

3MF (3D Manufacturing Format)

3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.

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

const scene = new Scene();
scene.open('model.3mf');

// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());

3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.

FBX

Uyarı: FBX içe aktarma ve dışa aktarma sınıfları (FbxImporter, FbxExporter) kütüphanede mevcut, ancak FBX formatı otomatik algılama bağlanmamış içine scene.open() veya scene.save(). Çağırarak scene.open('file.fbx') FBX içe aktarıcısını tetiklemez — dosya STL geri dönüşüne düşer. scene.save('output.fbx', opts) FBX dışa aktarıcısını tetiklemez. Yukarıdaki format destek tablosu FBX’i şu şekilde işaretler No* Bu nedenle. Tam işlevsel içe ve dışa aktarma için GLB veya COLLADA kullanın scene.open() / scene.save().

COLLADA (DAE)

COLLADA, geniş bir DCC araç yelpazesi (Blender, Maya, Cinema 4D) tarafından desteklenen XML tabanlı bir değişim formatıdır. Kütüphane xmldom XML ayrıştırması için bağımlılığı kullanır; bu, otomatik olarak npm install @aspose/3d.

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

const scene = new Scene();
scene.open('model.dae');

// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);

COLLADA dosyaları birim ölçekleme meta verisi içerebilir (<unit> öğesi). Kütüphane, yükleme sırasında birim dönüşümünü otomatik olarak uygular.

Format Otomatik Algılama

Bir dosya yolundan yükleme yaparken, kütüphane dosya uzantısına geri dönmeden önce ikili sihirli sayılardan format tespiti yapmaya çalışır. Bu, adlandırılmış bir GLB dosyasını yükleyebileceğiniz anlamına gelir .bin veya adlandırılmış bir STL dosyası .model formatı açıkça belirtmeden.

Bir yerden yükleme yaparken Buffer ile scene.openFromBuffer(), magic-number tespiti birincil mekanizmadır:

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

const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer);  // format detected from magic bytes: 'glTF'

console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);

Güvenilir magic-number’lara sahip formatlar: GLB (glTF), STL ikili (80 bayt başlık + üçgen sayısı), 3MF (ZIP magic PK). OBJ ve COLLADA metin tabanlıdır ve dosya uzantısından ya da gönderdiğiniz seçenek sınıfı aracılığıyla tespit edilir.

İpuçları

  • OBJ hem içe aktarmayı hem de dışa aktarmayı destekler: OBJ olarak kaydederken, .mtl malzeme dosyası otomatik olarak yanına yazılır .obj dosyanın.
  • Web teslimi için GLB kullanın: kendi içinde barındırılan ikili format, CORS sorunlarını önler .bin sidecar’lar ve WebGL renderlayıcılarında daha hızlı yüklenir.
  • Biçime özgü seçenekleri iletin: genel scene.open(path) çoğu format için çalışır, ancak yükleyici seçenekleri sınıfını geçirerek OBJ malzeme yüklemesi veya STL koordinat normalizasyonu gibi biçim‑özel davranışlar etkinleştirilir.
  • xmldom COLLADA için gereklidir: otomatik olarak kurulur. Bunu eklemeyin peerDependencies veya kaldırmaya çalışmayın; COLLADA okuyucusu doğrudan çağırır.

Yaygın Sorunlar

SemptomMuhtemel NedenDüzelt
OBJ malzemeleri yüklendikten sonra boşenableMaterials ayarlanmamışGeç ObjLoadOptions ile enableMaterials = true
GLB bir .bin sidecarbinaryMode varsayılan olarak falseAyarla opts.binaryMode = true içinde GltfSaveOptions
scene.open() “unsupported format” hatası verirDosya uzantısı tanınmadıEşleşeni ilet *LoadOptions sınıfı veya kullan openFromBuffer()
COLLADA yüklemesi XML hatasıyla başarısız oluyorxmldom eksik veya eşleşmeyenÇalıştır npm install @aspose/3d tekrar; xmldom doğrudan bir bağımlılıktır
STL normalleri ASCII dışa aktarmada kaybolduASCII STL, yüzey başına normal vektörlerini atarKullan binaryMode = true normal koruyan çıktı için

Ayrıca Bakınız

 Türkçe