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

Lä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

FormatFiländelseLäsSkriv
Collada.daeJaJa
FBX.fbxJaJa
glTF / GLB.gltf / .glbJaJa
3MF.3mfJaJa
Wavefront OBJ.objJaJa
PLY.plyJaNej
STL.stlJaJa

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

Relaterade resurser