Introduktion
Aspose.3D FOSS är ett gratis, öppen källkod .NET bibliotek för att arbeta med 3D-filformat. Det tillhandahåller en omfattande uppsättning verktygsklasser som går bortom enkel filkonvertering, vilket möjliggör för utvecklare att manipulera mesh-objekt, bygga transformationer och generera primitiv geometri programatiskt. Biblioteket är släppt under MIT-licensen, vilket gör det lämpligt för både personliga och kommersiella projekt utan restriktioner.
Detta inlägg fokuserar på de verktygsfunktioner som finns i biblioteket: de klasser och metoder du använder när du behöver triangulera ett mesh-objekt, konstruera en transformationsmatris steg för steg, eller skapa parametrisk geometri. Dessa byggstenar kompletterar det grundläggande scen-laddnings- och scen-sparningsarbetsflödet som behandlades i introduktionsinlägget.
Oavsett om du bearbetar 3D-tillgångar i en byggpipeline, förbereder geometri för en spelmotor, eller konverterar mellan format, så hanterar dessa verktyg de vanliga uppgifterna som uppstår i verkliga 3D-arbetsflöden.
Vad som ingår
Mesh-operationer
Klassen Mesh representerar polygonbaserad geometri. Du kan skapa polygoner från vertex-index, fråga efter polygonstorlekar, triangulera ytor och optimera vertex-data. Egenskapen ControlPoints ger direkt åtkomst till vertexpositionerna, medan Polygons visar ansiktsindex-arrayerna.
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();
Transformationsbyggare
Klassen TransformBuilder tillhandahåller ett flytande gränssnitt för att konstruera transformationsmatriser genom en sekvens av translate, rotate och scale-operationer. Du styr sammansättningsordningen (append eller prepend) och kan återställa byggaren för att påbörja en ny kedja.
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;
Polygonmodifierare
Klassen PolygonModifier erbjuder statiska verktygsmetoder för mesh-behandling, inklusive en Triangulate-metod avsedd att konvertera ett n-sidigt polygon-mesh till enbart triangel-geometri. I denna FOSS-utgåva är Triangulate inte implementerad – varje överlagring kastar NotImplementedException vid körning. För fungerande triangulering, använd Mesh.Triangulate() istället, vilket visas i avsnittet Mesh-operationer ovan.
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();
Generering av primitiv geometri
Biblioteket innehåller parametriska geometriklasser såsom Box, Sphere och Cylinder. Varje primitiv kan konfigureras med dimensioner och segmentantal, och sedan konverteras till en Mesh via ToMesh()-metoden för vidare bearbetning eller export.
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();
Beräkning av bounding box
Varje Entity-subklass exponerar en GetBoundingBox()-metod som returnerar geometrins axel-justerade bounding box. Strukturen BoundingBox tillhandahåller Minimum- och Maximum-hörnvektorer, användbara för spatiala frågor och kameraramning.
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;
Snabbstart
Installera paketet från NuGet:
dotnet add package Aspose.3D.FOSSLäs in en fil, triangulera varje mesh och spara resultatet:
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");
Stödda format
| Format | Filändelse | Läs | Skriv |
|---|---|---|---|
| Collada | .dae | Ja | Ja |
| FBX | .fbx | Ja | Ja |
| glTF / GLB | .gltf / .glb | Ja | Ja |
| 3MF | .3mf | Ja | Ja |
| Wavefront OBJ | .obj | Ja | Ja |
| PLY | .ply | Ja | Nej |
| STL | .stl | Ja | Ja |
Öppen källkod & licensiering
Aspose.3D FOSS är släppt under MIT-licensen. Du kan använda, modifiera och distribuera biblioteket i både open-source- och proprietära projekt. Den fullständiga källkoden finns på GitHub på aspose-3d-foss/Aspose.3D-FOSS-for-.NET.
Komma igång
- Developer Guide – fullständig dokumentation som täcker scenhantering, formatalternativ och avancerade funktioner.
- Knowledge Base – instruktionsartiklar och vanliga frågor.
- API Reference – klass-för-klass-referens med metodsignaturer och egenskapsdetaljer.