Ö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ály | Szerep |
|---|---|
Scene | Legfelső szintű tároló; a jelenet gráf gyökere |
Node | A fa egy elnevezett pozíciója; tartalmaz transzformációkat és gyermekcsomópontokat |
Entity | Absztrakt alap a csomópontokhoz csatolt vizuális objektumok számára |
Mesh | Poligonális geometria – csúcsok, felületek, normálok |
Camera | Virtuális kamera definíció |
Transform | Helyi transzláció, rotáció és skálázás egy csomóponthoz |
GlobalTransform | Kiszá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ésTransform.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átum | Betöltési beállítások | Mentési beállítások |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
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átum | Kiterjesztés | Importálás | Exportálás | Megjegyzések |
|---|---|---|---|---|
| OBJ | .obj | Igen | Igen | MTL anyagokkal |
| STL | .stl | Igen | Igen | Bináris + ASCII |
| glTF 2.0 | .gltf | Igen | Igen | JSON formátum |
| GLB | .glb | Igen | Igen | Bináris glTF |
| FBX | .fbx | Igen | Igen | ASCII és bináris módok |
| Collada | .dae | Igen | Igen | |
| 3MF | .3mf | Igen | Igen | ZIP-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ény | Részletek |
|---|---|
| .NET verzió | 10.0 or later |
| Függőségek | Nincs (csak C#) |
| Platformok | Bá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.3Da 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.