Introduction
Aspose.3D FOSS, 3D dosya formatlarıyla çalışmak için ücretsiz, açık kaynaklı bir .NET kütüphanesidir. Basit dosya dönüşümünün ötesine geçen kapsamlı bir yardımcı sınıf seti sunar; geliştiricilerin mesh’leri manipüle etmesini, dönüşümler oluşturmasını ve temel geometriyi programlı olarak üretmesini sağlar. Kütüphane MIT lisansı altında yayınlanmıştır, bu da kişisel ve ticari projeler için kısıtlama olmaksızın uygun olmasını sağlar.
Bu gönderi, kütüphane içindeki yardımcı yeteneklere odaklanıyor: bir mesh’i üçgene bölmeniz, adım adım bir dönüşüm matrisi oluşturmanız veya parametrik geometri yaratmanız gerektiğinde başvurduğunuz sınıflar ve yöntemler. Bu yapı taşları, giriş gönderisinde ele alınan temel sahne yükleme ve sahne kaydetme iş akışını tamamlar.
İster bir derleme hattında 3D varlıkları işliyor olun, ister bir oyun motoru için geometri hazırlıyor olun, ya da formatlar arasında dönüştürme yapıyor olun, bu araçlar gerçek dünyadaki 3D iş akışlarında ortaya çıkan yaygın görevleri halleder.
Ne içeriyor
Mesh İşlemleri
O zamanlar Mesh sınıf poligon tabanlı geometri temsil eder. vertex indeksleri, soru poligonu boyutları, üçgen yüzleri ve vertek veri optimizasyonu ile polygon oluşturabilirsiniz. ControlPoints Mülkiyet vertikal pozisyonlara doğrudan erişim sağlar, ancak Polygons Yüzün indeksi aralığına sahiptir.
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var mesh = new Mesh("CustomMesh");
// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));
// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);
// Triangulate all polygons in the mesh
mesh.Triangulate();
Dönüşüm Oluşturucu
O zamanlar TransformBuilder Sınıf, dönüşüm matrisleri bir çeviri, dönme ve ölçek işlemlerinin bir seansını aracılığıyla yapılandırmak için akıcı bir arayüz sağlar. kompozisyon sırasını kontrol edersiniz (aşırı veya ön) ve yeni bir zincir başlatmak üzere yapımcıyı yeniden ayarlayabilirsiniz.
using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;
var builder = new TransformBuilder(ComposeOrder.Append);
// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);
// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;
Poligon Değiştirici
O zamanlar PolygonModifier Sınıf, mesh işleme statik kullanım yöntemleri sunar. Triangulate Metod herhangi bir n-size poligon meshü üçgen tek geometri dönüştürür, bu da çoğu render motor ve fizik simülasyon için gerekli giriştir.
var scene = new Scene(); var box = new Box(2, 2, 2); Mesh boxMesh = box.ToMesh();
// Convert all polygons to triangles Mesh triangulated = PolygonModifier.Triangulate(boxMesh);
### Temel Geometri Oluşturma
Kütüphane parametrik geometri sınıfları içerir, örneğin `Box`, `Sphere`,ve `Cylinder`.Her bir ilkel boyut ve segment sayılar ile yapılandırılabilir, daha sonra bir `Mesh` yoluyla The `ToMesh()` Daha fazla işleme veya ihracat için yöntem.
```csharp
using Aspose.ThreeD.Entities;
// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();
// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();
Sınır Kutusu Hesaplaması
Every Entity Subclass A’yı gösterir GetBoundingBox() Geometri’nin as ile yapıştırılmış sınır kutusunu geri getiren yöntem. BoundingBox Stretch sağlar Minimum ve Maximum köşeli vektörler, uzay sorguları ve kamera çerçevesi için yararlıdır.
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();
FVector3 min = bounds.Minimum;
FVector3 max = bounds.Maximum;
Hızlı Başlangıç
NuGet’ten paketi yükleyin:
dotnet add package Aspose.3D.FOSSBir dosya yükleyin, her ağı üçgenleştirin ve sonucu kaydedin:
// Load a scene from an OBJ file var scene = new Scene(); scene.Open(“input.obj”);
// Walk child nodes and triangulate each mesh entity foreach (var node in scene.RootNode.ChildNodes) { foreach (var entity in node.Entities) { if (entity is Mesh mesh) { mesh.Triangulate(); } } }
// Save the triangulated scene as glTF scene.Save(“output.glb”);
---
## Desteklenen Formatlar
| Format | Extension | Read | Write |
| --------------------- | ---------------- | ----- | ----- |
| Collada | .Günlük | Evet | Evet |
| FBX | .fbx için | Evet | Evet |
| GTT / GLB | .gltf / .gb için | Evet | Evet |
| 3MF | .3MF | Evet | Hayır |
| Wavefront OBJ İndirme | .OJ | Evet | Evet |
| PLY | .Sohbet | Evet | Hayır |
| STL | .STL | Evet | Evet |
| TMF | .TMF | Hayır | Evet |
---
## Açık Kaynak & Lisans
Aspose.3D FOSS MIT lisansı altında yayınlanmaktadır. kütüphanesini hem açık kaynaklı hem de mülkiyet projelerinde kullanabilir, değiştirebilir ve yeniden dağıtabilirsiniz. tam kaynağı kodu GitHub'da mevcuttur. [aspose-3d-foss / Aspos.3D-FOSS-for-.NET için](https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-.NET.git).
---
## Başlamaya başlar
- [Geliştirici Rehberi](https://docs.aspose.org/3d/net/) - sahne yönetimi, format seçenekleri ve gelişmiş özellikleri kapsayan tam belgeler.
- [Bilgi Temeli](https://kb.aspose.org/3d/net/) - Nasıl makaleler ve sıkça sorulan sorular.
- [API Referansları](https://reference.aspose.org/3d/net/) - Sınıf-sınıf referansı, metin imzaları ve mülkiyet ayrıntıları ile.
## İlgili Kaynaklar
- [3D - İşletme Blogları](https://blog.aspose.com/)