Örömmel jelentjük be, hogy a 3D FOSS a .NET-hez. A .NET-alkalmazásokban 3D fájlformátumokkal való munkavégzéshez egy ingyenes, nyílt forráskódú könyvtár. Tiszta C# megoldásként épült, nem függő anyagi függőségek nélkül, a könyvház célja az .Net 10.0 és újabb változatok, így elérhetővé teszi a projektek széles skáláját és környezetét.
Ez a bejegyzés bemutatja, mit kínál a könyvtár, hogyan kezdhetjük el és hová megyünk innen.
Mi az a Aspose.3D FOSS .NET-ben?
Aspose.3D FOSS for .NET egy könnyű 3D fájlfeldolgozó könyvtár, amelyet a MIT-engedély.A C#-ban készült könyvtár teljesen C # és nem igényel külső bináris programokat vagy platformspecifikus konfigurációkat.
A forráskód a GitHub-on elérhető: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Fontos pontok
- Tiszta C# - nincs P/Invoke, nincsenek helyi könyvtárak, nem vannak platformkorlátozások.
- .NET 10.0+ kompatibilis.
- MIT-licencelt. – használd személyes, kereskedelmi vagy saját projektekben korlátozás nélkül.
- Színházgrafikus architektúra – egy ismerős fák, hálózatok, kamerák és anyagok.
- Többformátumú támogatás – olvasni és írni OBJ, STL, glTF 2.0, GLB, FBX, Collada és 3MF fájlok.
Gyors kezdés
NuGet telepítés
A projekthez hozzáadja a NuGet csomagot:
dotnet add package Aspose.3D.FOSSAz első megtérésed
A legegyszerűbb felhasználási eset egy 3D fájl betöltése az egyik formátumban és mentése a másikba. Itt van két soros konvertáció OBJ-ból STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
A Bizottság Scene A fő belépőpont a tanfolyam. scene.Open() egy fájl útvonal, hogy töltse be a modellt, majd hívja Save() A könyvtár a fájl kiterjesztéséből következteti a formátumot.
A kezdetektől a színpadok építése
A jeleneteket programozással is meg lehet építeni:
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 egy új jelenetet hoz létre, hozzáad egy box primitívot a gyökér alatt mint gyermek csomópontot, elhelyezi azt az koordinátáknál (1, 2, 3), és exportálja az eredményt glTF fájlokként.
Format-specifikus opciók feltöltése
Ha finomabb ellenőrzésre van szükség a betöltés folyamatán, minden formátum egy dedikált opcióosztályt biztosít. Például egy STL fájl feltöltése egyértelmű lehetőségekkel:
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");
A Bizottság scene.Open() a módszer elfogadja az egyik terhelési lehetőség típusát: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, vagy TmfLoadOptions.
A jelenet grafikon átjárása
Miután egy jelenet betöltött, a csomópárban sétálhatsz annak tartalmának ellenőrzése vagy módosítása érdekében:
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 mintázat hasznos az hibaelhárításhoz, jelentések létrehozásához a modell tartalmáról vagy egy jelenet egyes részeit való szelektív módosításához a re-exportálás előtt.
A változások alkalmazása
A 3D térben a csomópontok elhelyezése az Transform a tulajdonosok minden egyes 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 transformációk a szülő-gyermek öröklési modell szabványát követik: egy gyermek világterületbeli helyzete helyi transformációs kombinációja, és minden ősöknek az eredetig kell átváltoznia.
Mit tartalmaz?
A könyvtár egy 3D-s jelenet-grafikus modell köré tervezett, koncentrált képességekkel rendelkezik.
Színház grafikon
A jelenet grafikon a API gerincje. Minden 3D fájlt egy fa szerkezetként képviselnek:
| Az osztály | Részlet: |
|---|---|
Scene | A legmagasabb szintű tartály; a jelenet grafika gyökere |
Node | A fa egy elnevezésű pozíció; tartja átalakulások és gyermek csomópontok |
Entity | A csomópontokhoz csatolt vizuális objektumok absztrakt alapja. |
Mesh | Polygonális geometria – csúcskövek, arcok, normálok |
Camera | Virtuális kamera meghatározása |
Transform | Helyi fordítás, forgatás és méretezés egy csomópont számára |
GlobalTransform | Számítógépes világ-tér átalakítás |
Beépített primitívek
A .NET kiadás tartalmazza a paraméter-alakú osztályokat, amelyeket közvetlenül csatlakoztathatnak csomópontokhoz vagy konvertálhatják azokra. Mesh:
- Részlet: – tengelyre szorított doboz konfigurálható szélességgel, magasságral és mélységgel.
- Sféra – paraméteres gömb konfigurálható sugárral.
- Csilindrális – paraméteres, konfigurálható sugárfényű és magassági henger.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Az anyagok
A könyvtár többféle anyagot kínál:
- LambertMaterial – klasszikus, csak difúz anyag környezeti, diffúzus, kibocsátó és tükröző színkomponensekkel.
- PhongMaterial – kiterjeszti Lambert-t a fények és ragyogás.
- PbrMaterial – fizikai alapon készült anyag alapszín, fém, durvaság, elzáródás és textúra-kört.
Matematikai segédprogramok
A Bizottság Aspose.ThreeD A névterület tartalmazza az alapvető matematikai primitíveket:
- Fvektor3 – egy-pontos, háromkomponenses lebegővektor (
X,Y,Z) Az alábbiakban:Transform.Translationés a következők:Transform.Scale. - Vector4 (
Aspose.ThreeD.Utilities) – kettős pontossággal 4 komponenses vektor (x,y,z,wA vizsgálatok során a vizsgálati pontokat és normál elemeket külön kell megadni.Aspose.ThreeD.Vector4(flott, nagybetű mező) is létezik;Mesh.ControlPointsa kettős pontosságú közművek változatát használja. - Matrix4 - 4x4 átalakítási mátrix.
- Quaternion – a rotációs képlet.
Transform.Rotation. - BoundingBox – tengely-egyenlegzett 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
Töltés és mentés lehetőségek
Minden formátumnak van egy speciális opcióosztálya, amely lehetővé teszi az import és export viselkedését:
| Formátum | Töltés lehetőségei | Válaszokat menteni |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| A következők: | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Például, egy OBJ fájlt betölteni koordináták fordításával és normál normalizációval:
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 a Aspose.3D FOSS for .NET által olvasható és írható formátumokat.
| Formátum | A Bizottság | Behozatala | Kivitel | Megjegyzések |
|---|---|---|---|---|
| OBJ | .obj | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | MTL-anyagokkal |
| STL | .stl | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | Bináris + ASCII |
| glTF-t | .gltf, .glb | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | JSON formátum; .glb az önálló bináris változat; |
| FBX | .fbx | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | Csak bináris export; az ASCII-export bejelentett, de nem aktív ebben a változatban. |
| COLLADA | .dae | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | |
| 3MF | .3mf | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. | ZIP-alapú 3D gyártási formátum |
Formátum kiválasztási útmutató
A megfelelő formátum kiválasztása az Ön használati esetétől függ:
- OBJ Az OBJ-t szinte minden modellező alkalmazás képes olvasni és írni. Jól működik a hálózati adatcsere esetében, de csak az alapvető anyagi információkat hordozza társ MTL fájlokon keresztül.
- STL A 3D nyomtatás munkafolyamatokhoz a választott formátum. Nyers triangulált geometria tárolása, anyag és jelenet hierarchiája nélkül, ami pontosan az, amit a szeletelő szoftver vár el.
- glTF-t A Glitch 3D-s rendszer a modern szabvány, amely támogatja az PBR anyagokat és teljes jeleneti hierarchiákat. Az internetes nézőket vagy bármely valós idejű renderelő csővezetéket célzó glTF használatával lehet hatékony átvitelre tervezni.
- FBX A játékfejlesztés és a digitális tartalom létrehozásának munkafolyamaiban mélyen integrálódott. Támogatja az éles jelenetadatok, beleértve a hierarchiákat és anyagokat is. Aspose.3D FOSS for .NET támogatja FBX-t. import és export.Megjegyzés: az export csak bináris FBX-t generál Az ASCII FBx export kód a forrásban létezik, de ebben a változatban nem kapcsolódik az eksport útvonalhoz.
- 3MF modern 3D nyomtatási formátum, amely támogatja a gazdag metadata-t, az anyagokat és a több objektumú jeleneteket egyetlen ZIP alapú csomagban.
Ismerett korlátok
Scene.Render() az a nem támogatott A módszer hívása egy NotImplementedException.A könyvtárat fájl alapú 3D feldolgozásra tervezték – modellek betöltése, manipulálása, átalakítása és mentése – inkább mint egy kijelzőre való valós idejű megjelenítés.
Nyitott forráskód és licenc
A .NET-hez 3D FOSS a következők szerint kerül kiadásra: MIT Licenc.Ez azt jelenti, hogy szabadon:
- Használd a könyvtárat kereskedelmi és tulajdoni alkalmazásokban.
- A forráskódot a saját igényeihez igazítsa.
- Szétosztja a könyvtárat, mint saját szoftverének részét.
Nincs szabadalmi díj, nincs felhasználási határ és nincsenek MIT-licencben meghatározott követelmények.
A teljes forráskódot a GitHub-on tárolják, és az hozzájárulások szívesen fogadhatók: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Rendszerkövetelmények
| Követelmény | Részletek |
|---|---|
| .NET változat | 10.0 or later |
| Feltételezések | Nem (tiszta C#) |
| Platformok | Bármely .NET-es platform. |
| Paketkezelő | NuGet |
Kezdjük!
Itt vannak a segítségre szánt eszközök:
- Dokumentációk – a weboldalon átfogó útmutatók és API-k találhatók. A 3D dokumentáció webhelye.
- Tudásbázis – gyakorlatias, hogyan-hez cikkek és hibaelhárítási tippek a 3D KB.
- API hivatkozás – részletes osztály- és módszer hivatkozás a következőkben: Aspose.3D API hivatkozás.
- Forráskód – böngészés és hozzájárulás a GitHub.
- NuGet – a csomagot úgy teszik közzé, hogy:
Aspose.3Da NuGet-en.
Általános felhasználási esetek
Íme néhány gyakorlati forgatókönyv, ahol a .NET-hez való 3D FOSS jól illik:
Formátumkonverziós csővezetékek
Sok csapat kap 3D eszközöket egy formátumban, de szükségük van rájuk más. Egy tervezőcsapat talán FBX-ben dolgozik, míg a webes csapatnak glTF kell. A könyvtár lehetővé teszi az automatizált konverziós csövek létrehozá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 integrálnál egy 3D eszközt a alkalmazásodba, talán meg akarod hitelesíteni tartalmát - ellenőrizni az csomópontok számát, ellenőrzni a geometriát vagy megerősíteni, hogy a várt elemek jelen vannak:
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");
}
}
Színházgyűlés
Több modellt is feltölthet és egyesítheti őket egy jelenetben:
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 lesz a következő?
A következő posztokban a következőket fogjuk bemutatni:
- Egy mély merülést a kulcsfontosságú funkciói jelenet-grafikus API, anyagok és matematika segédeszközök.
- A gyakorlati útmutató minden támogatott 3D formátummal való együttműködéshez - OBJ, STL, glTF, FBX és 3MF -, beleértve a betöltés/megőrzés lehetőségeket és az osztozatos konverziós mintákat.
Maradjatok velünk, és nyugodtan fedezzétek fel a könyvtárat, hogy megoszthassátok visszajelzéseiteket a GitHub-on.