Kullanıma sunulmasından heyecan duyuyoruz Aspose.3D FOSS for .NET – .NET uygulamalarında 3D dosya formatlarıyla çalışmak için ücretsiz, açık kaynaklı bir kütüphane. Yerel bağımlılıkları olmayan saf bir C# çözümü olarak inşa edildi, kütüphane .NET 10.0 ve üzerini hedefliyor, bu da geniş bir proje ve ortam yelpazesi için erişilebilir olmasını sağlıyor.
Bu gönderi, kütüphanenin neler sunduğunu, nasıl başlanacağını ve bundan sonra nereye gidileceğini anlatıyor.
Aspose.3D FOSS for .NET Nedir?
Aspose.3D FOSS for .NET hafif bir 3D dosya işleme kütüphanesidir ve MIT license. Kütüphane, birkaç yaygın kullanılan formatta 3D modelleri yüklemenizi, incelemenizi, dönüştürmenizi ve kaydetmenizi sağlayan bir sahne grafiği API’si sunar. Kütüphane tamamen C# ile yazılmıştır ve dış yerel ikili dosyalara veya platforma özgü yapılandırmalara ihtiyaç duymaz.
Kaynak kodu GitHub’da mevcuttur: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Öne Çıkanlar
- Saf C# – P/Invoke yok, yerel kütüphane yok, platform kısıtlaması yok.
- .NET 10.0+ uyumlu.
- MIT lisanslı – kişisel, ticari veya özel projelerde kısıtlama olmadan kullanabilirsiniz.
- Sahne grafiği mimarisi – düğümler, ağlar, kameralar ve malzemelerden oluşan tanıdık bir ağaç.
- Çoklu format desteği – OBJ, STL, glTF 2.0, GLB, FBX, Collada ve 3MF dosyalarını okuyun ve yazın.
Hızlı Başlangıç
NuGet Kurulumu
NuGet paketini projenize ekleyin:
dotnet add package Aspose.3D.Converter --version 1.0.0
İlk Dönüşümünüz
En basit kullanım senaryosu, bir formatta bir 3B dosyayı yüklemek ve başka bir formatta kaydetmektir. İşte OBJ’den STL’ye iki satırlık bir dönüşüm:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
Bu Scene sınıf, merkezi giriş noktasıdır. Çağırın scene.Open() bir dosya yolu ile modeli yüklemek için, ardından çağırın Save() hedef yol ile. Kütüphane formatı dosya uzantısından çıkarır.
Sıfırdan Bir Sahne Oluşturma
Ayrıca sahneleri programlı olarak oluşturabilirsiniz:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
var node = scene.RootNode.CreateChildNode("Box", box);
node.Transform.Translation = new FVector3(1, 2, 3);
scene.Save("scene.gltf");
Bu, yeni bir sahne oluşturur, kök altında bir kutu ilkelini çocuk düğüm olarak ekler, (1, 2, 3) koordinatlarına konumlandırır ve sonucu bir glTF dosyası olarak dışa aktarır.
Biçim-Özel Seçeneklerle Yükleme
Yükleme sürecinde daha ince bir kontrol gerektiğinde, her format özel bir seçenek sınıfı sunar. Örneğin, açık seçeneklerle bir STL dosyası yüklemek:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
var opts = new StlLoadOptions();
scene.Open("part.stl", opts);
// Inspect the loaded scene
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);
// Re-export as OBJ
scene.Save("part.obj");
Bu scene.Open() metod, yükleme seçeneği türlerinden herhangi birini kabul eder: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, ya da TmfLoadOptions.
Sahne Grafiğini Gezinme
Bir sahne yüklendikten sonra, içeriğini incelemek veya değiştirmek için düğüm ağacında dolaşabilirsiniz:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.gltf");
foreach (var child in scene.RootNode.ChildNodes)
{
Console.WriteLine("Node: " + child.Name);
Console.WriteLine(" Translation: " + child.Transform.Translation);
if (child.Entity is Mesh mesh)
{
Console.WriteLine(" Vertices: " + mesh.ControlPoints.Count);
}
}
Bu desen, hata ayıklama, model içeriği hakkında raporlar oluşturma veya yeniden dışa aktarmadan önce bir sahnenin bölümlerini seçici olarak değiştirme için faydalıdır.
Dönüşümler
3B uzayda düğümlerin konumlandırılması şunun aracılığıyla yapılır Transform her birindeki özellik Node:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);
var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
child.Transform.Scale = new FVector3(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.Save("transformed.gltf");
Transformlar, standart ebeveyn-çocuk kalıtım modelini izler: bir çocuğun dünya uzayındaki konumu, yerel transformu ile köke kadar olan tüm ata transformlarının birleşimidir.
Neler Dahildir
Kütüphane, 3B sahne-graf modeli etrafında tasarlanmış odaklanmış bir yetenek setiyle birlikte gelir.
Sahne Grafiği
Sahne grafiği API’nin omurgasını oluşturur. Her 3D dosyası bir ağaç yapısı olarak temsil edilir:
| Sınıf | Rol |
|---|---|
Scene | Üst düzey kapsayıcı; sahne grafiğinin kökü |
Node | Ağaçta adlandırılmış bir konum; dönüşümleri ve alt düğümleri tutar |
Entity | Düğümlere eklenen görsel nesneler için soyut temel |
Mesh | Poligonal geometri – köşeler, yüzeyler, normaller |
Camera | Sanal kamera tanımı |
Transform | Bir düğüm için yerel çeviri, dönüş ve ölçek |
GlobalTransform | Hesaplanmış dünya-uzayı dönüşümü |
Yerleşik Primitifler
.NET sürümü, düğümlere doğrudan eklenebilen veya şuna dönüştürülebilen parametrik şekil sınıflarını içerir Mesh:
- Kutu – eksen hizalı kutu, ayarlanabilir genişlik, yükseklik ve derinlik.
- Küre – parametrik küre, ayarlanabilir yarıçap.
- Silindir – yapılandırılabilir yarıçap ve yüksekliğe sahip parametrik silindir.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Materyaller
Kütüphane birden fazla malzeme türü sunar:
- LambertMaterial – klasik sadece difüz malzeme, ambient, diffuse, emissive ve reflective renk bileşenleriyle.
- PhongMaterial – Lambert’ı speküler vurgular ve parlaklıkla genişletir.
- PbrMaterial – temel renk, metalik, pürüzlülük, örtüşme ve doku yuvalarına sahip fiziksel tabanlı render malzemesi.
Matematik Araçları
Bu Aspose.ThreeD namespace, temel matematik ilkel tiplerini içerir:
- FVector3 – konumlar, yönler ve ölçek için tek duyarlıklı 3 bileşenli vektör. Şu tarafından kullanılır:
Transform.TranslationveTransform.Scale. - Vector4 – kontrol noktaları ve normaller için tek duyarlıklı 4 bileşenli vektör.
- Matrix4 – 4x4 dönüşüm matrisi.
- Quaternion – dönüşüm temsili. Şu tarafından kullanılır:
Transform.Rotation. - BoundingBox – uzamsal sorgular için eksen hizalı sınırlayıcı kutu.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Yükleme ve Kaydetme Seçenekleri
Her formatın, içe ve dışa aktarma davranışını kontrol etmenizi sağlayan özel seçenek sınıfları vardır:
| Biçim | Yükleme Seçenekleri | Kaydetme Seçenekleri |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Örneğin, koordinat çevirme ve normal normalleştirme ile bir OBJ dosyasını yüklemek için:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Desteklenen Biçimler
Aşağıdaki tablo, Aspose.3D FOSS for .NET’ın okuyup yazabildiği biçimleri özetlemektedir.
| Biçim | Uzantı | İçe Aktar | Dışa Aktar | Notlar |
|---|---|---|---|---|
| OBJ | .obj | Evet | Evet | MTL malzemeleriyle |
| STL | .stl | Evet | Evet | İkili + ASCII |
| glTF 2.0 | .gltf | Evet | Evet | JSON formatı |
| GLB | .glb | Evet | Evet | İkili glTF |
| FBX | .fbx | Evet | Evet | ASCII ve ikili modlar |
| Collada | .dae | Evet | Evet | |
| 3MF | .3mf | Evet | Evet | ZIP-tabanlı 3D üretim formatı |
Biçim Seçim Kılavuzu
Doğru biçimi seçmek kullanım durumunuza bağlıdır:
- OBJ 3D araçları arasında en yüksek uyumluluğa ihtiyacınız olduğunda idealdir. Neredeyse her modelleme uygulaması OBJ’yi okuyup yazabilir. Ağ veri alışverişi için iyi çalışır ancak yalnızca eşlik eden MTL dosyaları aracılığıyla temel malzeme bilgilerini taşır.
- STL 3D baskı iş akışları için tercih edilen formattır. Malzeme veya sahne hiyerarşisi olmadan ham üçgenlenmiş geometriyi depolar, bu da dilimleyici yazılımının tam olarak beklediği şeydir.
- glTF web ve gerçek zamanlı 3D için modern standarttır. PBR malzemeleri, tam sahne hiyerarşilerini destekler ve verimli iletim için tasarlanmıştır. Web tabanlı görüntüleyiciler oluştururken veya herhangi bir gerçek zamanlı renderleme hattını hedeflerken glTF’yi kullanın.
- FBX oyun geliştirme ve dijital içerik oluşturma iş akışlarına derinlemesine entegre edilmiştir. Hiyerarşiler ve malzemeler dahil zengin sahne verilerini destekler. Aspose.3D FOSS for .NET supports FBX içe ve dışa aktarım hem ASCII hem de ikili modlarda.
- 3MF zengin meta verileri, malzemeleri ve tek bir ZIP-tabanlı pakette çoklu nesne sahnelerini destekleyen modern bir 3D baskı formatıdır.
Bilinen Sınırlamalar
Scene.Render() dır desteklenmiyor FOSS sürümünde. Bu yöntemi çağırmak bir NotImplementedException. Kütüphane, dosya tabanlı 3D işleme – yükleme, manipülasyon, dönüştürme ve modelleri kaydetme – için tasarlanmıştır; gerçek zamanlı bir ekrana render etmeye göre değil.
Açık Kaynak ve Lisanslama
Aspose.3D FOSS for .NET şu lisans altında yayınlanmıştır MIT Lisansı. Bu, şunları yapabileceğiniz anlamına gelir:
- Kütüphaneyi ticari ve tescilli uygulamalarda kullanmak.
- Kaynak kodu ihtiyaçlarınıza göre değiştirmek.
- Kütüphaneyi kendi yazılımınızın bir parçası olarak dağıtın.
MIT lisansının belirttiği şartların ötesinde hiçbir telif ücreti, kullanım sınırı ve atıf gereksinimi yoktur.
Tam kaynak kodu GitHub’da barındırılıyor ve katkılar memnuniyetle karşılanıyor: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Sistem Gereksinimleri
| Gereksinim | Ayrıntı |
|---|---|
| .NET sürümü | 10.0 or later |
| Bağımlılıklar | Yok (saf C#) |
| Platformlar | .NET çalıştıran herhangi bir platform |
| Paket yöneticisi | NuGet |
Başlarken
Başlamanıza yardımcı olacak kaynaklar şunlardır:
- Dokümantasyon – kapsamlı kılavuzlar ve API yürütmeleri şurada mevcuttur: Aspose.3D dokümantasyon sitesi.
- Bilgi Tabanı – pratik nasıl yapılır makaleleri ve sorun giderme ipuçları Aspose.3D KB.
- API Referansı – ayrıntılı sınıf ve yöntem referansı Aspose.3D API Referansı.
- Kaynak Kodu – gözat ve katkıda bulunun GitHub.
- NuGet – paket şu şekilde yayınlanır
Aspose.3D.ConverterNuGet üzerinde.
Yaygın Kullanım Senaryoları
İşte Aspose.3D FOSS for .NET’in iyi uyduğu bazı pratik senaryolar:
Biçim Dönüştürme Boru Hatları
Birçok ekip 3D varlıkları bir formatta alır ancak başka bir formatta ihtiyaç duyar. Tasarım ekibi FBX ile çalışırken web ekibi glTF’ye ihtiyaç duyabilir. Kütüphane, otomatik dönüşüm boru hatları oluşturmanıza olanak tanır:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
// Convert all incoming FBX assets to GLB for the web team
var scene = new Scene();
scene.Open("asset.fbx");
scene.Save("asset.glb");
3D Model Inspection and Validation
Uygulamanıza bir 3D varlık entegre etmeden önce, içeriğini doğrulamak isteyebilirsiniz – düğüm sayılarını kontrol etmek, geometriyi doğrulamak veya beklenen öğelerin mevcut olduğunu onaylamak:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
scene.Open("model.obj");
int nodeCount = scene.RootNode.ChildNodes.Count;
Console.WriteLine("Top-level nodes: " + nodeCount);
foreach (var child in scene.RootNode.ChildNodes)
{
if (child.Entity is Mesh mesh)
{
Console.WriteLine(child.Name + ": "
+ mesh.ControlPoints.Count + " vertices");
}
}
Sahne Montajı
Birden fazla modeli yükleyebilir ve tek bir sahnede birleştirebilirsiniz:
using Aspose.ThreeD;
var scene = new Scene();
var part1 = new Scene();
part1.Open("chassis.obj");
var part2 = new Scene();
part2.Open("wheels.obj");
// Add nodes from each part into the combined scene
foreach (var child in part1.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
foreach (var child in part2.RootNode.ChildNodes)
{
scene.RootNode.ChildNodes.Add(child);
}
scene.Save("assembled.gltf");
Sırada Ne Var?
Gelecek gönderilerde şunları ele alacağız:
- scene-graph API’sinin, malzemelerin ve matematik yardımcı programlarının temel özelliklerine derinlemesine bir bakış.
- Desteklenen her 3D formatı – OBJ, STL, glTF, FBX ve 3MF – ile çalışmaya yönelik pratik bir rehber; yükleme/kaydetme seçenekleri ve toplu dönüşüm desenlerini içerir.
Takipte kalın ve kütüphaneyi keşfetmekten çekinmeyin; geri bildirimlerinizi GitHub’ta paylaşabilirsiniz.