Giriş

Aspose.3D FOSS TypeScript için (@aspose/3d) açık kaynaklı, MIT lisanslı bir 3D dosya formatı kütüphanesidir Node.js ve modern tarayıcı ortamları için. 3D model görüntüleyicileri, format dönüştürücüleri, geometri işleme araçları veya sunucu tarafı 3D işlem hatları geliştiren geliştiriciler, tek bir npm install @aspose/3d komutla kurabilir ve hemen 3D içeriği yüklemeye, oluşturmaya ve dışa aktarmaya başlayabilirsiniz.

Kütüphane, ana değişim formatlarını — glTF 2.0 / GLB, STL, 3MF ve COLLADA hem içe aktarım hem de dışa aktarım için, ve yalnızca içe aktarım için OBJ — destekler. FBX içe aktarıcı/dışa aktarıcı sınıfları mevcuttur ancak henüz format otomatik algılamasına bağlanmamıştır. Sahne grafiği API’si, 3D modelleme araçlarından tanıdık olan modeli yansıtır: bir Scene bir … içerir rootNode, her Node çocuk düğümler ve varlık nesneleri taşıyabilir (Mesh, Camera, Light), ve dönüşüm hiyerarşisi okuma ve yazma için tamamen erişilebilir.

Temel Özellikler

  • Çoklu format G/Ç: OBJ’yi içe aktar (ile .mtl malzemeler, yalnızca içe aktarım), glTF 2.0 / GLB, STL (binary ve ASCII), 3MF ve COLLADA hem dosya yollarından hem de bellek içinden Buffer nesneler. glTF, STL, 3MF ve COLLADA ayrıca dışa aktarmayı destekler. FBX desteği henüz otomatik algılamaya bağlanmadı.
  • Sahne grafiği API: Scene, Node, Mesh, Camera, Light tam ebeveyn/çocuk yönetimiyle hiyerarşi; düğümleri özyinelemeli olarak şu şekilde dolaşın node.childNodes
  • PBR malzeme sistemi: Lambert, Phong ve PBR (metallic/roughness) malzemelere şu yolla erişilebilir node.entity.material
  • Mesh işlemleri: Ham vertex verilerine şu yolla erişin mesh.controlPoints (dizisi Vector4), poligon indislerine şu yolla mesh.polygonCount, ve vertex eleman kanalları aracılığıyla mesh.getElement()
  • Matematik yardımcı programları: Vector2, Vector3, Vector4, Matrix4, Quaternion, ve uzamsal hesaplamalar için sınırlayıcı kutu tipleri
  • Animasyon sistemi: Anahtar kare animasyonu ile AnimationClip, AnimationChannel, ve enterpolasyon eğrileri (lineer, Bezier, TCB spline)
  • Formata özgü seçenekler: Formata göre LoadOptions / SaveOptions sınıflar koordinat çevirme, ölçek, malzeme yükleme ve daha fazlasını kontrol eder

Başlarken

npm üzerinden kurun. Node.js 18 veya üzeri gereklidir; TypeScript 5.0+ önerilir.

npm install @aspose/3d

Bir OBJ dosyası yükleyin ve sahneyi inceleyin:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

glTF’ye Dışa Aktar

Yüklenmiş veya oluşturulmuş herhangi bir sahneyi glTF 2.0 ikili (GLB) formatında kaydedin:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

Kütüphane, dosya uzantısından çıktı formatını otomatik olarak algılar. Bir GltfSaveOptions örnek, PBR malzeme gömme, dokular ve ikili vs. JSON kodlaması üzerinde kontrol sağlar.

Sahne Oluşturma

Programatik olarak bir sahne oluşturun ve dışa aktarın:

import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

Ayrıca Bakınız