Wprowadzenie
Aspose.3D FOSS jest darmową, otwarto-źródłową biblioteką .NET do pracy z formatami plików 3D. Dostarcza kompleksowy zestaw klas narzędziowych, które wykraczają poza prostą konwersję plików, umożliwiając programistom manipulację siatkami, budowanie przekształceń i generowanie prymitywnej geometrii programowo. Biblioteka jest udostępniona na licencji MIT, co czyni ją odpowiednią zarówno dla projektów prywatnych, jak i komercyjnych, bez ograniczeń.
Ten wpis koncentruje się na możliwościach narzędziowych w bibliotece: klasach i metodach, z których korzystasz, gdy musisz triangulować siatkę, krok po kroku budować macierz przekształcenia lub tworzyć geometrię parametryczną. Te elementy budulcowe uzupełniają podstawowy przepływ ładowania i zapisywania scen, opisany we wstępnym poście.
Niezależnie od tego, czy przetwarzasz zasoby 3D w potoku budowania, przygotowujesz geometrię dla silnika gry, czy konwertujesz między formatami, te narzędzia radzą sobie ze wspólnymi zadaniami pojawiającymi się w rzeczywistych przepływach pracy 3D.
Co zawiera
Operacje siatek
Klasa Mesh reprezentuje geometrię opartą na wielokątach. Możesz tworzyć wielokąty z indeksów wierzchołków, zapytywać rozmiary wielokątów, triangulować powierzchnie i optymalizować dane wierzchołków. Właściwość ControlPoints zapewnia bezpośredni dostęp do pozycji wierzchołków, natomiast Polygons udostępnia tablice indeksów twarzy.
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();
Konstruktor Transformacji
Klasa TransformBuilder zapewnia płynny interfejs do konstruowania macierzy transformacji poprzez sekwencję operacji przesunięcia, obrotu i skalowania. Kontrolujesz kolejność składania (dodawanie na końcu lub na początku) i możesz zresetować konstruktor, aby rozpocząć nowy łańcuch.
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;
Modyfikator Wielokątów
Klasa PolygonModifier oferuje statyczne metody pomocnicze do przetwarzania siatek, w tym metodę Triangulate przeznaczoną do konwersji siatki wielokątnej o n bokach na geometrię składającą się wyłącznie z trójkątów. W tej edycji FOSS, Triangulate nie jest zaimplementowane — każdy przeciążony wariant rzuca NotImplementedException w czasie wykonywania. Aby uzyskać działającą triangulację, użyj zamiast tego Mesh.Triangulate(), jak pokazano w sekcji Operacje na Siatkach powyżej.
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();
Generowanie Geometrii Pierwotnej
Biblioteka zawiera klasy geometryczne parametryczne, takie jak Box, Sphere i Cylinder. Każdy prymityw można skonfigurować za pomocą wymiarów i liczby segmentów, a następnie przekształcić w Mesh przy użyciu metody ToMesh() w celu dalszego przetwarzania lub eksportu.
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();
Obliczanie Bounding Boxa
Każda podklasa Entity udostępnia metodę GetBoundingBox(), która zwraca osiowo wyrównany bounding box geometrii. Struktura BoundingBox zapewnia wektory narożników Minimum i Maximum, przydatne do zapytań przestrzennych i kadrowania kamery.
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();
Vector3 min = bounds.Minimum;
Vector3 max = bounds.Maximum;
Szybki start
Zainstaluj pakiet z NuGet:
dotnet add package Aspose.3D.FOSSWczytaj plik, trianguluj każdą siatkę i zapisz wynik:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
// 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");
Obsługiwane formaty
| Format | Rozszerzenie | Odczyt | Zapis |
|---|---|---|---|
| Collada | .dae | Tak | Tak |
| FBX | .fbx | Tak | Tak |
| glTF / GLB | .gltf / .glb | Tak | Tak |
| 3MF | .3mf | Tak | Tak |
| Wavefront OBJ | .obj | Tak | Tak |
| PLY | .ply | Tak | Nie |
| STL | .stl | Tak | Tak |
Open Source i licencjonowanie
Aspose.3D FOSS jest udostępniony na licencji MIT. Możesz używać, modyfikować i rozpowszechniać bibliotekę zarówno w projektach open-source, jak i komercyjnych. Pełny kod źródłowy jest dostępny na GitHub pod adresem aspose-3d-foss/Aspose.3D-FOSS-for-.NET.
Rozpoczęcie
- Developer Guide – pełna dokumentacja obejmująca zarządzanie sceną, opcje formatów i zaawansowane funkcje.
- Knowledge Base – artykuły instruktażowe i najczęściej zadawane pytania.
- API Reference – referencja klas po klasie z sygnaturami metod i szczegółami właściwości.