Inleiding

Aspose.3D FOSS is een gratis, open-source .NET-bibliotheek voor het werken met 3D-bestandsformaten. Het biedt een uitgebreide reeks hulpprogrammaklassen die verder gaan dan eenvoudige bestandsconversie, waardoor ontwikkelaars meshes kunnen manipuleren, transformaties kunnen opbouwen en primitieve geometrie programmatisch kunnen genereren. De bibliotheek wordt uitgebracht onder de MIT-licentie, waardoor hij geschikt is voor zowel persoonlijke als commerciële projecten zonder beperkingen.

Deze post richt zich op de hulpfuncties binnen de bibliotheek: de klassen en methoden die je gebruikt wanneer je een mesh moet trianguleren, stap voor stap een transformatiematrix moet construeren, of parametrische geometrie moet creëren. Deze bouwblokken vullen de kernworkflow voor het laden en opslaan van scènes aan, die in de inleidende post werd behandeld.

Of je nu 3D-assets verwerkt in een build-pipeline, geometrie voorbereidt voor een game-engine, of tussen formaten converteert, deze hulpprogramma’s behandelen de veelvoorkomende taken die zich voordoen in real-world 3D-workflows.


Wat er inbegrepen is

Meshbewerkingen

De Mesh klasse vertegenwoordigt polygon-gebaseerde geometrie. Je kunt polygonen maken vanuit vertex-indices, polygon-groottes opvragen, gezichten trianguleren en vertex-data optimaliseren. De ControlPoints eigenschap biedt directe toegang tot de vertex-posities, terwijl Polygons de arrays met gezichtsindices blootlegt.

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();

Transformatie Builder

De TransformBuilder klasse biedt een vloeiende interface voor het construeren van transformatiesmatrices via een reeks verplaats-, roteer- en schaalbewerkingen. Je bepaalt de samenstellingsvolgorde (aanvoegen of voorvoegen) en kunt de builder resetten om een nieuwe keten te starten.

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;

Polygoonmodifier

De PolygonModifier klasse biedt statische hulpfuncties voor meshverwerking, inclusief een Triangulate methode bedoeld om een n-zijdige polygoonmesh om te zetten naar uitsluitend driehoekgeometrie. In deze FOSS-editie is Triangulate niet geïmplementeerd – elke overload gooit NotImplementedException tijdens runtime. Voor werkende triangulatie, gebruik Mesh.Triangulate() in plaats daarvan, zoals getoond in de sectie Meshbewerkingen hierboven.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();

Generatie van primitieve geometrie

De bibliotheek bevat parametrische geometrieklassen zoals Box, Sphere en Cylinder. Elke primitive kan worden geconfigureerd met afmetingen en segmentaantallen, en vervolgens worden omgezet naar een Mesh via de ToMesh() methode voor verdere verwerking of 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();

Berekening van de begrenzingsbox

Elke Entity subklasse biedt een GetBoundingBox() methode die de as-uitgelijnde begrenzingsbox van de geometrie retourneert. De BoundingBox struct biedt Minimum en Maximum hoekvectoren, nuttig voor ruimtelijke queries en cameraframing.

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;

Snelstart

Installeer het pakket vanaf NuGet:

dotnet add package Aspose.3D.FOSS

Laad een bestand, trianguleer elke mesh en sla het resultaat op:

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");

Ondersteunde formaten

FormaatExtensieLezenSchrijven
Collada.daeJaJa
FBX.fbxJaJa
glTF / GLB.gltf / .glbJaJa
3MF.3mfJaJa
Wavefront OBJ.objJaJa
PLY.plyJaNee
STL.stlJaJa

Open source & licenties

Aspose.3D FOSS is uitgebracht onder de MIT license. Je kunt de bibliotheek gebruiken, aanpassen en herdistribueren in zowel open-source als propriëtaire projecten. De volledige broncode is beschikbaar op GitHub op aspose-3d-foss/Aspose.3D-FOSS-for-.NET.


Aan de slag

  • Ontwikkelaarsgids – volledige documentatie over scenabeheer, formaatopties en geavanceerde functies.
  • Kennisbank – stap-voor-stap artikelen en veelgestelde vragen.
  • API Reference – klasse-per-klasse referentie met methodesignaturen en eigenschapsdetails.

Gerelateerde bronnen