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:
| Trieda | Rola |
|---|---|
Scene | Kontajner najvyššej úrovne; koreň grafu scény |
Node | Pomenovaná pozícia v strome; obsahuje transformácie a podriadené uzly |
Entity | Abstraktný základ pre vizuálne objekty pripojené k uzlom |
Mesh | Polygónová geometria – vrcholy, plochy, normály |
Camera | Definícia virtuálnej kamery |
Transform | Lokálny posun, rotácia a mierka pre uzol |
GlobalTransform | Vypočí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.TranslationaTransform.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át | Možnosti načítania | Možnosti uloženia |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
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át | Rozšírenie | Import | Export | Poznámky |
|---|---|---|---|---|
| OBJ | .obj | Áno | Áno | S MTL materiálmi |
| STL | .stl | Áno | Áno | Binárny + ASCII |
| glTF 2.0 | .gltf | Áno | Áno | JSON formát |
| GLB | .glb | Áno | Áno | Binary glTF |
| FBX | .fbx | Áno | Áno | ASCII a binárne režimy |
| Collada | .dae | Áno | Áno | |
| 3MF | .3mf | Áno | Áno | formá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žiadavka | Detail |
|---|---|
| .NET verzia | 10.0 or later |
| Závislosti | Žiadne (čistý C#) |
| Platformy | Akákoľvek platforma, ktorá spúšťa .NET |
| Správca balíkov | NuGet |
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.3Dna 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.