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.FOSSLaad 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
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| 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 | Nee |
| STL | .stl | Ja | Ja |
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.