Giriş
Aspose.3D FOSS for TypeScript (@aspose/3d) açık kaynaklı, MIT lisanslı bir 3D dosya formatı kütüphanesidir ve öncelikle Node.js için tasarlanmıştır. 3D model görüntüleyicileri, format dönüştürücüleri, geometri işleme araçları veya sunucu tarafı 3D iş akışları geliştiren geliştiriciler, tek bir komutla (bkz. Kurulum kılavuzu) kurabilir ve hemen 3D içeriği yüklemeye, oluşturmaya ve dışa aktarmaya başlayabilir. Kütüphane, Node.js’ten require('fs') ve Buffer kullanır; tarayıcı kullanımında bu API’ler için uygun şemalar gereklidir ve resmi olarak desteklenmez.
Kütüphane, ana değişim formatlarını — OBJ, glTF 2.0 / GLB, STL, 3MF ve COLLADA, hem içe aktarım hem de dışa aktarım için 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, 3D modelleme araçlarından tanıdık olan modeli yansıtır: bir Scene, bir rootNode tutar, her Node alt düğümler ve varlık nesneleri (Mesh, Camera, Light) taşıyabilir ve dönüşüm hiyerarşisi okuma ve yazma için tamamen erişilebilir durumdadır.
Temel Özellikler
- Çoklu format G/Ç: OBJ’yi (ile birlikte
.mtlmalzemeler), glTF 2.0 / GLB, STL (ikili ve ASCII), 3MF ve COLLADA dosya yollarından ve bellek içindeBuffernesneler. FBX desteği henüz otomatik algılamaya bağlanmadı. - Sahne grafiği API:
Scene,Node,Mesh,Camera,Lighttam ebeveyn/çocuk yönetimiyle hiyerarşi; düğümleri özyinelemeli olarak şu yollanode.childNodes - PBR malzeme sistemi: Lambert, Phong ve PBR (metallic/roughness) malzemelere şu şekilde erişilebilir
node.material - Mesh işlemleri: Ham köşe verilerine şu şekilde erişin
mesh.controlPoints(dizisiVector4), çokgen indekslerine şu şekildemesh.polygonCount, ve köşe eleman kanallarına şu şekildemesh.getElement() - Matematik yardımcı programları:
Vector2,Vector3,Vector4,Matrix4,Quaternion, ve mekânsal hesaplamalar için sınırlama kutusu tipleri - Animasyon sistemi: Keyframe animasyonu ile
AnimationClip,AnimationChannel, ve interpolasyon eğrileri (lineer, Bezier, TCB spline) - Formata özgü seçenekler: Formata göre
LoadOptions/SaveOptionssınıflar koordinat çevirme, ölçek, malzeme yükleme ve daha fazlasını kontrol eder
Başlarken
Paketi kaynak kodundan derleyin. Node.js 18 veya daha yenisi gereklidir; TypeScript 5.0+ tavsiye edilir.
git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run buildBir 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`);
}
}
Sahne Grafiği API
Her sahne, scene.rootNode köklenmiş Node nesnelerinden oluşan bir ağaçtır. Hiyerarşiyi addChildNode() ile oluşturun, Camera veya Light gibi varlıkları bir düğüme entity özelliği aracılığıyla bağlayın ve her düğümün yerel veya dünya-uzayı dönüşümünü transform ve globalTransform aracılığıyla okuyun.
import { Scene, Node, Camera, Light } from '@aspose/3d';
const scene = new Scene();
const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);
const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);
for (const child of scene.rootNode.childNodes) {
console.log(`${child.name}: ${child.entity?.constructor.name}`);
}
Matematik Yardımcı Araçları
Vector3, Vector4, Matrix4 ve Quaternion kütüphanedeki her geometrik işlemi destekler. Vector3 ve Vector4, x/y/z(/w) bileşenlerini ve ayrıca length, dot() ve cross() sunar; Matrix4, m00–m33 aracılığıyla erişilen transpose() ve concatenate() ile 4×4 bir ızgara; Quaternion, dönüşüm matematiği için normalize(), conjugate(), inverse() ve dot() sağlar.
import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';
const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();
console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);
Ayrıca Bakınız
- 3D Modelleri TypeScript içinde Nasıl Yüklenir
- glTF’ı TypeScript içinde Nasıl Dışa Aktarılır
- Format Desteği
- API Reference