S radosťou oznamujeme dostupnosť Aspose.3D FOSS for .NET – bezplatná, open-source knižnica na prácu s 3D formátmi súborov v aplikáciách .NET. Vytvorená ako čisté riešenie v C# bez natívnych závislostí, knižnica cílí na .NET 10.0 a novšie, čo ju robí prístupnou pre širokú škálu projektov a prostredí.

Tento príspevok prechádza tým, čo knižnica ponúka, ako začať a kam ďalej.

Čo je Aspose.3D FOSS pre .NET?

Aspose.3D FOSS for .NET je ľahká knižnica na spracovanie 3D súborov publikovaná pod licenciou MIT. Poskytuje API pre scénový graf, ktoré vám umožní načítať, preskúmať, transformovať a uložiť 3D modely v rôznych široko používaných formátoch. Knižnica je úplne napísaná v C# a nevyžaduje žiadne externé natívne binárne súbory ani platformovo špecifické konfigurácie.

Zdrojový kód je dostupný na GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Kľúčové body

  • Čistý C# – žiadny P/Invoke, žiadne natívne knižnice, žiadne platformové obmedzenia.
  • .NET 10.0+ kompatibilný.
  • s licenciou MIT – použite ho v osobných, komerčných alebo proprietárnych projektoch bez obmedzení.
  • Architektúra scénového grafu – známy strom uzlov, sietí, kamier a materiálov.
  • Podpora viacerých formátov – čítať a zapisovať OBJ, STL, glTF 2.0, GLB, FBX, Collada a 3MF súbory.

Rýchly štart

Inštalácia cez NuGet

Pridajte NuGet balík do svojho projektu:

dotnet add package Aspose.3D --version 26.1.0

Vaša prvá konverzia

Najjednoduchší prípad použitia je načítanie 3D súboru v jednom formáte a jeho uloženie v inom. Tu je dvojriadková konverzia z OBJ do STL:

using Aspose.ThreeD;

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

The Scene trieda je centrálnym vstupným bodom. Zavolajte scene.Open() s cestou k súboru na načítanie modelu, potom zavolajte Save() s cieľovou cestou. Knižnica odvodzuje formát z prípony súboru.

Vytváranie scény od začiatku

Scény môžete tiež konštruovať programovo:

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

Týmto sa vytvorí nová scéna, pridá sa primitívny kocka ako podriadený uzol pod koreňom, umiestni sa na súradnice (1, 2, 3) a výsledok sa exportuje ako súbor glTF.

Načítanie s formátovo špecifickými možnosťami

Keď potrebujete jemnejšiu kontrolu nad procesom načítania, každý formát poskytuje samostatnú triedu možností. Napríklad načítanie STL súboru s explicitnými možnosťami:

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

The scene.Open() metóda akceptuje ktorýkoľvek z typov možností načítania: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, alebo TmfLoadOptions.

Prechádzanie grafom scény

Po načítaní scény môžete prechádzať strom uzlov a kontrolovať alebo upravovať jeho obsah:

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

Tento vzor je užitočný na ladenie, generovanie správ o obsahu modelu alebo selektívne úpravy častí scény pred opätovným exportom.

Aplikovanie transformácií

Umiestňovanie uzlov v 3D priestore sa vykonáva pomocou Transform vlastnosti na každom 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");

Transformácie nasledujú štandardný model dedičnosti rodič-dieťa: pozícia dieťaťa vo svetovom priestore je kombináciou jeho lokálnej transformácie a všetkých transformácií predkov až po koreň.

Čo je zahrnuté

Knižnica je distribuovaná so zameranou sadou schopností navrhnutých okolo modelu 3D scene-graph.

Scénový graf

Scénový graf je chrbticou API. Každý 3D súbor je reprezentovaný ako stromová štruktúra:

TriedaRola
SceneKontajner najvyššej úrovne; koreň grafu scény
NodePomenovaná pozícia v strome; obsahuje transformácie a podriadené uzly
EntityAbstraktný základ pre vizuálne objekty pripojené k uzlom
MeshPolygónová geometria – vrcholy, plochy, normály
CameraDefinícia virtuálnej kamery
TransformLokálny posun, rotácia a mierka pre uzol
GlobalTransformVypočítaná transformácia vo svetovom priestore

Vstavané primitívy

Vydanie .NET obsahuje parametrické triedy tvarov, ktoré môžu byť pripojené k uzlom priamo alebo prevedené na Mesh:

  • Kvádr – osovo zarovnaný kvádr s konfigurovateľnou šírkou, výškou a hĺbkou.
  • Guľa – parametrická guľa s konfigurovateľným polomerom.
  • Valec – parametrický valec s konfigurovateľnými polomermi a výškou.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);

Materiály

Knižnica poskytuje viacero typov materiálov:

  • LambertMaterial – klasický materiál len s difúznym odrazom s komponentmi farby ambient, diffuse, emissive a reflective.
  • PhongMaterial – rozširuje Lambert s lesklými odleskami a lesklosťou.
  • PbrMaterial – fyzicky založený renderovací materiál s základnou farbou, metallic, roughness, occlusion a texture slots.

Matematické nástroje

The Aspose.ThreeD namespace obsahuje základné matematické primitívy:

  • FVector3 – jednopresnostný 3-komponentový vektor pre pozície, smerovanie a mierku. Používa sa v Transform.Translation a Transform.Scale.
  • Vector4 – jednopresnostný 4-komponentový vektor pre kontrolné body a normály.
  • Matrix4 – 4x4 transformačná matica.
  • Quaternion – reprezentácia rotácie. Používa sa v Transform.Rotation.
  • BoundingBox – osovo zarovnaná ohraničujúca krabica pre priestorové dotazy.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations

Možnosti načítania a ukladania

Každý formát má vyhradené triedy možností, ktoré vám umožňujú ovládať správanie importu a exportu:

FormátMožnosti načítaniaMožnosti uloženia
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

Napríklad, na načítanie OBJ súboru s preklopením súradníc a normalizáciou normál:

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

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

Podporované formáty

Nasledujúca tabuľka zhrňuje formáty, ktoré Aspose.3D FOSS pre .NET dokáže čítať a zapisovať.

FormátRozšírenieImportExportPoznámky
OBJ.objÁnoÁnoS MTL materiálmi
STL.stlÁnoÁnoBinárny + ASCII
glTF 2.0.gltfÁnoÁnoJSON formát
GLB.glbÁnoÁnoBinary glTF
FBX.fbxÁnoÁnoASCII a binárne režimy
Collada.daeÁnoÁno
3MF.3mfÁnoÁnoformát 3D výroby založený na ZIP

Sprievodca výberom formátu

Výber správneho formátu závisí od vášho použitia:

  • OBJ je ideálny, keď potrebujete maximálnu kompatibilitu naprieč 3D nástrojmi. Takmer každá modelovacia aplikácia dokáže čítať a zapisovať OBJ. Funguje dobre pre výmenu sieťových dát, ale prenáša iba základné informácie o materiáloch prostredníctvom sprievodných MTL súborov.
  • STL je formátom voľby pre pracovné postupy 3D tlače. Ukladá surovú triangulovanú geometriu bez materiálov alebo hierarchie scény, čo je presne to, čo očakáva softvér na rezanie.
  • glTF je moderným štandardom pre web a real-time 3D. Podporuje PBR materiály, úplné hierarchie scény a je navrhnutý pre efektívny prenos. Používajte glTF pri tvorbe webových prehliadačov alebo pri cielení na akýkoľvek real-time renderovací pipeline.
  • FBX je hlboko integrovaný do pracovných postupov vývoja hier a tvorby digitálneho obsahu. Podporuje bohaté dáta scény vrátane hierarchií a materiálov. Aspose.3D FOSS pre .NET podporuje FBX import a export v oboch ASCII a binárnych režimoch.
  • 3MF je moderný formát 3D tlače, ktorý podporuje bohaté metadáta, materiály a viacobjektové scény v jednom balíku založenom na ZIP.

Známe obmedzenia

Scene.Render() je nie je podporované v edícii FOSS. Volanie tejto metódy vyhodí NotImplementedException. Knižnica je navrhnutá pre súborovo založené 3D spracovanie – načítanie, manipuláciu, transformáciu a ukladanie modelov – namiesto renderovania v reálnom čase na displej.

Open Source a licencovanie

Aspose.3D FOSS pre .NET je vydaný pod MIT License. To znamená, že môžete:

  • Používať knižnicu v komerčných a proprietárnych aplikáciách.
  • Upraviť zdrojový kód podľa vašich potrieb.
  • Distribuovať knižnicu ako súčasť vášho vlastného softvéru.

Neexistujú žiadne licenčné poplatky, žiadne obmedzenia používania a žiadne požiadavky na atribúciu nad rámec toho, čo špecifikuje licencia MIT.

Celý zdrojový kód je hostovaný na GitHub-e a príspevky sú vítané: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Systémové požiadavky

PožiadavkaDetail
.NET verzia10.0 or later
ZávislostiŽiadne (čistý C#)
PlatformyAkákoľvek platforma, ktorá spúšťa .NET
Správca balíkovNuGet

Začíname

Tu sú zdroje, ktoré vám pomôžu začať:

  • Dokumentácia – komplexné príručky a prechody API sú dostupné na Aspose.3D dokumentačná stránka.
  • Znalostná báza – praktické návody a tipy na riešenie problémov v Aspose.3D KB.
  • Referenčná dokumentácia API – podrobná referencia tried a metód na Aspose.3D API referenciu.
  • Zdrojový kód – prehliadať a prispievať na GitHub.
  • NuGet – balík je publikovaný ako Aspose.3D na NuGet.

Bežné použitia

Tu je niekoľko praktických scenárov, kde Aspose.3D FOSS pre .NET dobre zapadá:

Potrubia konverzie formátov

Veľa tímov dostáva 3D aktíva v jednom formáte, ale potrebuje ich v inom. Dizajnový tím môže pracovať s FBX, zatiaľ čo webový tím potrebuje glTF. Knižnica vám umožňuje vytvárať automatizované potrubia konverzie:

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

Pred integráciou 3D aktíva do vašej aplikácie môžete chcieť overiť jeho obsah – skontrolovať počet uzlov, overiť geometriu alebo potvrdiť, že očakávané prvky sú prítomné:

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

Zostavenie scény

Môžete načítať viacero modelov a skombinovať ich do jednej scény:

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

Čo ďalej

V nasledujúcich príspevkoch sa budeme venovať:

  • Hlboký ponor do kľúčových funkcií API scény-grafu, materiálov a matematických utilít.
  • Praktický sprievodca prácou s každým podporovaným 3D formátom – OBJ, STL, glTF, FBX a 3MF – vrátane možností načítania/ukladania a vzorov dávkovej konverzie.

Zostaňte naladení a neváhajte preskúmať knižnicu a zdieľať svoju spätnú väzbu na GitHub.