Örömmel jelentjük be, hogy elérhető Aspose.3D FOSS for .NET – egy ingyenes, nyílt forráskódú könyvtár a 3D fájlformátumokkal való munkához .NET alkalmazásokban. Tiszta C# megoldásként épült, natív függőségek nélkül, a könyvtár a .NET 10.0 és újabb verziókat célozza, így széles körű projektek és környezetek számára elérhető.

Ez a bejegyzés bemutatja, mit kínál a könyvtár, hogyan lehet elkezdeni, és merre érdemes továbbmenni.

Mi az a Aspose.3D FOSS for .NET?

Aspose.3D FOSS for .NET egy könnyűsúlyú 3D fájlfeldolgozó könyvtár, amely a MIT licenc. Olyan scene-graph API-t biztosít, amely lehetővé teszi 3D modellek betöltését, vizsgálatát, átalakítását és mentését több széles körben használt formátumban. A könyvtár teljes egészében C#-ban íródott, és nem igényel külső natív bináris fájlokat vagy platformspecifikus beállításokat.

A forráskód elérhető a GitHub-on: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Főbb kiemelések

  • Tiszta C# – nincs P/Invoke, nincs natív könyvtár, nincs platformkorlátozás.
  • .NET 10.0+ kompatibilis.
  • MIT licencű – használhatja személyes, kereskedelmi vagy saját tulajdonú projektekben korlátozások nélkül.
  • Scene-graph architektúra – egy ismerős fa a csomópontokból, hálózatokból, kamerákból és anyagokból.
  • Többformátumú támogatás – OBJ, STL, glTF 2.0, GLB, FBX, Collada és 3MF fájlok olvasása és írása.

Gyors kezdés

NuGet telepítés

Adja hozzá a NuGet csomagot a projektjéhez:

dotnet add package Aspose.3D --version 26.1.0

Az első konverziója

A legegyszerűbb felhasználási eset egy 3D fájl betöltése egy formátumban és mentése egy másikba. Íme egy kétsoros konverzió OBJ-ről STL-re:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");

A Scene class a központi belépési pont. Hívja scene.Open() fájlúttal egy modell betöltéséhez, majd hívja Save() a célúttal. A könyvtár a formátumot a fájl kiterjesztéséből következteti.

Jelenet építése a semmiből

Jeleneteket programozottan is létrehozhat:

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

var scene = new Scene();
var box = new Box(2, 2, 2);
var node = scene.RootNode.CreateChildNode("Box", box);

node.Transform.Translation = new FVector3(1, 2, 3);

scene.Save("scene.gltf");

Ez létrehoz egy új jelenetet, egy doboz primitívet ad hozzá gyermekcsomópontként a gyökér alá, a (1, 2, 3) koordinátákra helyezi, és az eredményt glTF fájlként exportálja.

Betöltés formátum-specifikus beállításokkal

Ha finomabb irányításra van szüksége a betöltési folyamat során, minden formátum egy dedikált opciós osztályt biztosít. Például egy STL fájl betöltése explicit opciókkal:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
var opts = new StlLoadOptions();
scene.Open("part.stl", opts);

// Inspect the loaded scene
Console.WriteLine("Root children: " + scene.RootNode.ChildNodes.Count);

// Re-export as OBJ
scene.Save("part.obj");

Az scene.Open() A metódus elfogadja a betöltési opció típusok bármelyikét: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, vagy TmfLoadOptions.

A jelenet gráf bejárása

Miután egy jelenet betöltődött, bejárhatja a csomópontfát a tartalom ellenőrzéséhez vagy módosításához:

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

var scene = new Scene();
scene.Open("model.gltf");

foreach (var child in scene.RootNode.ChildNodes)
{
    Console.WriteLine("Node: " + child.Name);
    Console.WriteLine("  Translation: " + child.Transform.Translation);

    if (child.Entity is Mesh mesh)
    {
        Console.WriteLine("  Vertices: " + mesh.ControlPoints.Count);
    }
}

Ez a minta hasznos hibakereséshez, a modell tartalmáról szóló jelentések készítéséhez, vagy a jelenet részeinek szelektív módosításához az újraexportálás előtt.

Transzformációk alkalmazása

A csomópontok 3D térben történő elhelyezése a Transform tulajdonságon minden Node:

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

var scene = new Scene();

var parent = scene.RootNode.CreateChildNode("Parent");
parent.Transform.Translation = new FVector3(10, 0, 0);

var child = parent.CreateChildNode("Child");
child.Transform.Translation = new FVector3(5, 0, 0);
child.Transform.Scale = new FVector3(2, 2, 2);

// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance

scene.Save("transformed.gltf");

A transzformációk a szokásos szülő-gyermek öröklődési modell szerint működnek: egy gyermek világkoordinátás pozíciója a helyi transzformációja és az összes ős transzformációjának kombinációja a gyökérig.

Mi van benne

A könyvtár egy fókuszált képességkészlettel érkezik, amely a 3D jelenet-gráf modell köré épül.

Jelenet gráf

A jelenetgrafikon az API gerince. Minden 3D fájl egy fa struktúraként van ábrázolva:

OsztálySzerep
SceneLegfelső szintű tároló; a jelenet gráf gyökere
NodeA fa egy elnevezett pozíciója; tartalmaz transzformációkat és gyermekcsomópontokat
EntityAbsztrakt alap a csomópontokhoz csatolt vizuális objektumok számára
MeshPoligonális geometria – csúcsok, felületek, normálok
CameraVirtuális kamera definíció
TransformHelyi transzláció, rotáció és skálázás egy csomóponthoz
GlobalTransformKiszámított világkoordináta-transzformáció

Beépített primitívek

A .NET kiadás tartalmaz paraméteres alakzat osztályokat, amelyeket közvetlenül csomópontokhoz lehet csatolni, vagy átalakítani Mesh:

  • Box – tengelyre igazított doboz, amelynek szélessége, magassága és mélysége konfigurálható.
  • Sphere – paraméteres gömb, amelynek sugara konfigurálható.
  • Henger – paraméteres henger állítható sugárokkal és magassággal.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);

Anyagok

A könyvtár több anyagtípust biztosít:

  • LambertMaterial – klasszikus csak diffúz anyag környezeti, diffúz, emisszív és visszaverő színkomponensekkel.
  • PhongMaterial – kiterjeszti a Lambert modellt speculáris kiemelésekkel és fényességgel.
  • PbrMaterial – fizikailag alapú renderelési anyag alapszínnel, fémességgel, durvasággal, elzáródással és textúrahelyekkel.

Matematikai segédeszközök

A Aspose.ThreeD névtér tartalmazza a lényeges matematikai primitíveket:

  • FVector3 – egyszeres pontosságú, 3 komponensű vektor pozíciókhoz, irányokhoz és méretezéshez. Használja a Transform.Translation és Transform.Scale.
  • Vector4 – egyszeres pontosságú, 4 komponensű vektor vezérlőpontokhoz és normálokhoz.
  • Matrix4 – 4x4-es transzformációs mátrix.
  • Quaternion – forgatásábrázolás. Használja a Transform.Rotation.
  • BoundingBox – tengelyre igazított határoló doboz térbeli lekérdezésekhez.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations

Betöltési és mentési beállítások

Minden formátumnak saját opcióosztályai vannak, amelyek lehetővé teszik az import és export viselkedésének szabályozását:

FormátumBetöltési beállításokMentési beállítások
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

Például egy OBJ fájl betöltéséhez koordináta-fordítással és normál normalizálással:

var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;

scene.Open("model.obj", opts);

Támogatott formátumok

Az alábbi táblázat összefoglalja azokat a formátumokat, amelyeket a Aspose.3D FOSS for .NET képes olvasni és írni.

FormátumKiterjesztésImportálásExportálásMegjegyzések
OBJ.objIgenIgenMTL anyagokkal
STL.stlIgenIgenBináris + ASCII
glTF 2.0.gltfIgenIgenJSON formátum
GLB.glbIgenIgenBináris glTF
FBX.fbxIgenIgenASCII és bináris módok
Collada.daeIgenIgen
3MF.3mfIgenIgenZIP-alapú 3D gyártási formátum

Formátumválasztási útmutató

A megfelelő formátum kiválasztása az Ön felhasználási esetétől függ:

  • OBJ ideális, ha maximális kompatibilitásra van szükség a 3D eszközök között. Szinte minden modellező alkalmazás képes olvasni és írni az OBJ-t. Jól működik háló adatcseréhez, de csak alapvető anyaginformációkat hordoz a kísérő MTL fájlokban.
  • STL a 3D nyomtatási munkafolyamatok számára előnyben részesített formátum. Nyers háromszögelt geometriát tárol anyagok vagy jelenet hierarchia nélkül, ami pontosan azt a formátumot jelenti, amit a szeletelő szoftver elvár.
  • glTF a modern szabvány a webes és valós idejű 3D-hez. Támogatja a PBR anyagokat, a teljes jelenet hierarchiákat, és hatékony átvitelre lett tervezve. Használja a glTF-et webalapú megjelenítők építésekor vagy bármely valós idejű renderelési csővezeték célzásakor.
  • FBX mélyen integrálódik a játékfejlesztés és a digitális tartalomkészítés munkafolyamataiba. Támogatja a gazdag jelenet adatokat, beleértve a hierarchiákat és anyagokat. Aspose.3D FOSS a .NET számára támogatja az FBX-et importálás és exportálás mind ASCII, mind bináris módban.
  • 3MF egy modern 3D nyomtatási formátum, amely gazdag metaadatokat, anyagokat és többobjektumos jeleneteket támogat egyetlen ZIP-alapú csomagban.

Ismert korlátozások

Scene.Render() van nem támogatott a FOSS kiadásban. Ennek a metódusnak a meghívása egy NotImplementedException. A könyvtár fájl-alapú 3D feldolgozásra van tervezve – betöltés, manipulálás, transzformálás és modellek mentése – a valós idejű megjelenítés helyett egy kijelzőre.

Nyílt forráskód és licencelés

Aspose.3D FOSS for .NET a MIT License. Ez azt jelenti, hogy szabadon:

  • Használja a könyvtárat kereskedelmi és saját tulajdonú alkalmazásokban.
  • Módosítsa a forráskódot, hogy megfeleljen az igényeinek.
  • Terjessze a könyvtárat saját szoftvere részeként.

Nincsenek jogdíjak, használati korlátok, és a MIT licenc által meghatározottakon túl nem szükséges a forrás megjelölése.

A teljes forráskód a GitHubon van tárolva, és a közreműködések szívesen fogadottak: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Rendszerkövetelmények

KövetelményRészletek
.NET verzió10.0 or later
FüggőségekNincs (csak C#)
PlatformokBármely platform, amely futtatja a .NET
CsomagkezelőNuGet

Első lépések

Itt találhatók a források, amelyek segítenek elindulni:

  • Dokumentáció – átfogó útmutatók és API áttekintések érhetők el a Aspose.3D dokumentációs oldal.
  • Tudásbázis – gyakorlati útmutató cikkek és hibaelhárítási tippek a Aspose.3D KB.
  • API-referencia – részletes osztály- és metódusreferencia a Aspose.3D API-referencia.
  • Forráskód – böngészés és közreműködés a GitHub.
  • NuGet – a csomag közzétéve mint Aspose.3D a NuGet-en.

Gyakori felhasználási esetek

Itt van néhány gyakorlati forgatókönyv, ahol a Aspose.3D FOSS a .NET számára jól illeszkedik:

Formátumkonverziós csővezetékek

Sok csapat egy formátumban kap 3D eszközöket, de másikra van szükségük. Egy tervezőcsapat FBX-ben dolgozhat, míg a webcsapat glTF-re van szüksége. A könyvtár lehetővé teszi automatizált konverziós csővezetékek felépítését:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

// Convert all incoming FBX assets to GLB for the web team
var scene = new Scene();
scene.Open("asset.fbx");

scene.Save("asset.glb");

3D Model Inspection and Validation

Mielőtt egy 3D eszközt integrálnál az alkalmazásodba, érdemes lehet ellenőrizni a tartalmát – checking node counts, verifying geometry, or confirming that expected elements are present:

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

var scene = new Scene();
scene.Open("model.obj");

int nodeCount = scene.RootNode.ChildNodes.Count;
Console.WriteLine("Top-level nodes: " + nodeCount);

foreach (var child in scene.RootNode.ChildNodes)
{
    if (child.Entity is Mesh mesh)
    {
        Console.WriteLine(child.Name + ": "
            + mesh.ControlPoints.Count + " vertices");
    }
}

Jelenet összeállítása

Több modellt is betölthetsz, és egyetlen jelenetbe kombinálhatod őket:

using Aspose.ThreeD;

var scene = new Scene();

var part1 = new Scene();
part1.Open("chassis.obj");

var part2 = new Scene();
part2.Open("wheels.obj");

// Add nodes from each part into the combined scene
foreach (var child in part1.RootNode.ChildNodes)
{
    scene.RootNode.ChildNodes.Add(child);
}
foreach (var child in part2.RootNode.ChildNodes)
{
    scene.RootNode.ChildNodes.Add(child);
}

scene.Save("assembled.gltf");

Mi következik

A következő bejegyzésekben a következőket tárgyaljuk:

  • Mélyreható bemutató a scene-graph API, anyagok és matematikai segédeszközök kulcsfontosságú funkcióiról.
  • Gyakorlati útmutató a támogatott 3D formátumokkal való munkához – OBJ, STL, glTF, FBX, and 3MF – beleértve a betöltési/mentési lehetőségeket és a kötegelt konverziós mintákat.

Maradj velünk, és nyugodtan fedezd fel a könyvtárat, valamint oszd meg visszajelzésed a GitHubon.