Ö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.FOSS

Az 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ályRészlet:
SceneA legmagasabb szintű tartály; a jelenet grafika gyökere
NodeA fa egy elnevezésű pozíció; tartja átalakulások és gyermek csomópontok
EntityA csomópontokhoz csatolt vizuális objektumok absztrakt alapja.
MeshPolygonális geometria – csúcskövek, arcok, normálok
CameraVirtuális kamera meghatározása
TransformHelyi fordítás, forgatás és méretezés egy csomópont számára
GlobalTransformSzá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.ControlPoints a 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átumTöltés lehetőségeiVálaszokat menteni
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
A következők:GltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

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átumA BizottságBehozatalaKivitelMegjegyzések
OBJ.objIgen, igen. - Az is jó.Igen, igen. - Az is jó.MTL-anyagokkal
STL.stlIgen, igen. - Az is jó.Igen, igen. - Az is jó.Bináris + ASCII
glTF-t.gltf, .glbIgen, igen. - Az is jó.Igen, igen. - Az is jó.JSON formátum; .glb az önálló bináris változat;
FBX.fbxIgen, 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.daeIgen, igen. - Az is jó.Igen, igen. - Az is jó.
3MF.3mfIgen, 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ényRészletek
.NET változat10.0 or later
FeltételezésekNem (tiszta C#)
PlatformokBá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.3D a 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.