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.FOSS

Wczytaj 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

FormatRozszerzenieOdczytZapis
Collada.daeTakTak
FBX.fbxTakTak
glTF / GLB.gltf / .glbTakTak
3MF.3mfTakTak
Wavefront OBJ.objTakTak
PLY.plyTakNie
STL.stlTakTak

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.

Powiązane zasoby