Introducere

3D FOSS este o bibliotecă .NET gratuită, open-source pentru a lucra cu formate de fișiere 3d. Oferă un set complet de clase de utilități care merg dincolo de simpla conversie a fișierelor, permițând dezvoltatorilor să manipuleze mășile, transformări și să genereze geometrie primitivă în mod programatic. Biblioteca este eliberată sub licența MIT, făcându-l potrivit atât pentru proiectele personale cât și comerciale fără restricții.

Acest articol se concentrează pe capacitățile utilitarilor din bibliotecă: clasele și metodele la care ajungeți atunci când aveți nevoie să triangulați o plasă, construiți un proces de transformare matrice pas cu pas sau creați geometrie parametrică. Aceste blocuri de construcție completează fluxul de lucru principal pentru încărcarea scenelor și salvarea scenei acoperit în postul introductiv.

Indiferent dacă procesați activele 3D într-o fabricare, pregătiți geometrie pentru un motor de joc sau convertiţi între formate, aceste utilități se ocupă de sarcinile comune care apar în fluxurile de lucru 3d din lumea reală.


Ce înseamnă?

Operațiuni cu plasă de rețea

În ceea ce priveşte Mesh class reprezintă geometria bazată pe poligoni. Puteți crea poligoni din indicii de vârf, întreba dimensiunile poligonului, triangula fața și optimiza datele de vertice. ControlPoints proprietatea oferă acces direct la pozițiile de vârf, în timp ce Polygons expune matricele de indice faciale.

using Aspose.3D.Converter;

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

Transformă constructorul.

În ceea ce priveşte TransformBuilder class oferă o interfață fluentă pentru construirea matrițelor de transformare printr-o secvență de operațiuni translate, rotate și scară. Controlați ordinea compoziției (apendice sau prepend) și puteți reseta constructorul pentru a începe un nou lanț.

using Aspose.3D.Converter;

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;

Modificator de poligoni

În ceea ce priveşte PolygonModifier clasa oferă metode de utilitate statice pentru prelucrarea mașinii. Triangulate metoda transformă orice plasă poligonală cu o latură n în geometrie numai triunghială, care este inputul necesar pentru majoritatea motoarelor de render și simulațiile fizice.

using Aspose.3D.Converter;

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

// Convert all polygons to triangles
Mesh triangulated = PolygonModifier.Triangulate(boxMesh);

Generația geometriei primitive

Biblioteca include clase de geometrie parametrică, cum ar fi: Box, Sphere, și Cylinder.Fiecare primitiv poate fi configurat cu dimensiuni și numere de segmente, apoi convertit într-un format digital. Mesh prin intermediul ToMesh() metodă de prelucrare ulterioară sau export.

using Aspose.3D.Converter;

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

Calcul cutie de limitare

Fiecare Entity subclasa expune o GetBoundingBox() metoda care returnează caseta de limitare aliniată la axă a geometriei. BoundingBox structura oferă Minimum și de: Maximum vectorii de colț, utile pentru interogări spațiale și încadrarea camerei.

using Aspose.3D.Converter;

var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();

FVector3 min = bounds.Minimum;
FVector3 max = bounds.Maximum;

Început rapid

Instalați pachetul de la NuGet:

dotnet add package Aspose.3D.FOSS

Încărcați un fișier, triangulați fiecare plasă și salvați rezultatul:

using Aspose.3D.Converter;

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

Formatele suportate

FormatulExtindereCiteşte.Scrie .
Collada (de la roșu).- Da, domnule.Da, sunt.Da, sunt.
FBX.fbxDa, sunt.Da, sunt.
GLB / GTF.gltf / .GLBDa, sunt.Da, sunt.
3MF.3mfDa, sunt.Nu, nu.
Obiectivul de front al undelor.obj. în limba englezăDa, sunt.Da, sunt.
PLY.plătealăDa, sunt.Nu, nu.
STL.stlDa, sunt.Da, sunt.
TMF.tmfNu, nu.Da, sunt.

Open Source & Licențiere

3D FOSS este eliberat sub licența MIT. Puteți utiliza, modifica și redistribui biblioteca atât în proiecte open-source cât și proprietare. Codul complet de sursă este disponibil pe GitHub la adresa WEB Aspose-3d-foss/Aspose.3D-FOSS-for-.NET.


Cum să începem?

  • Ghidul dezvoltatorilor – documentaţie completă care acoperă gestionarea scenelor, opţiunile de formatare şi caracteristici avansate.
  • Baza de cunoştinţe - articole de instruire și întrebări frecvente.
  • Referință API – referință clasă-cu-clasă cu semnăturile metodelor și detaliile proprietății.