Jsme nadšeni, že můžeme oznámit dostupnost 3D FOSS pro .NET Knihovna je volná a open-source knihovna pro práci s 3D formáty souborů v aplikacích .NET. Je postavená jako čisté řešení C # bez nativních závislostí, která se zaměřuje na .Net 10.0 a novější verze, což ji činí přístupnou širokému spektru projektů a prostředí.
Tento článek popisuje, co knihovna nabízí, jak začít a kam jít dál.
Co je to 3D FOSS pro .NET?
3D FOSS pro .NET je lehká knihovna na zpracování souborů v 3d vydaná pod názvem Licence MIT. Poskytuje scénografické API, které vám umožňuje načítat, kontrolovat, transformovat a ukládat 3D modely v několika široce používaných formátech. Knihovna je zcela napsaná v C # a nevyžaduje žádné externí nativní binární soubory nebo konfigurace specifické pro platformu.
Zdrojový kód je k dispozici na GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Hlavní body
- Čisté C# - žádné P/Invoke, žádná nativní knihovny, žádné omezení platformy.
- .NET 10.0+ kompatibilní.
- Licenční MIT. – používat v osobních, komerčních nebo vlastnických projektech bez omezení.
- Architektura scénografu – známý strom uzlů, sítí, kamer a materiálů.
- Podpora víceformátů – číst a psát OBJ, STL, glTF 2.0, GLB, FBX, Collada a 3MF soubory.
Rychlý start
Instalace NuGet
Přidat balíček NuGet do projektu:
dotnet add package Aspose.3D.FOSSVaše první obrácení
Nejprve je třeba nahrát 3D soubor v jednom formátu a uložit ho do jiného. Zde je dvou řádková konverze z OBJ na STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
Úřad pro bezpečnost a ochranu zdraví Scene Vstupní bod je třída. scene.Open() s dráhou souboru pro načítání modelu, pak volá Save() Knihovna odvozuje formát z rozšíření souboru.
Vytvoření scény od začátku
Můžete také programově konstruovat scény:
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ím se vytvoří nová scéna, přidá box primitiv jako dětský uzel pod kořenem, umístí ho na souřadnicích (1, 2, 3) a výsledek bude exportován do souboru glTF.
Naložení s formátem specifickými možnostmi
Když potřebujete lepší kontrolu nad procesem načítání, každý formát poskytuje vyhrazenou třídu možností. Například načtení souboru STL s explicitními možnostmi:
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");
Úřad pro bezpečnost a ochranu zdraví scene.Open() metoda přijímá jakýkoli z typů možnosti zatížení: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions,nebo: TmfLoadOptions.
Procházíme grafickou scény
Jakmile je scéna načtená, můžete projít stromem uzlů a zkontrolovat nebo upravit její 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žitečný pro debugging, vytváření zpráv o obsahu modelu nebo selektivní úpravu částí scény před re-exportem.
Uplatňování transformací
Položka uzlů v 3D prostoru je provedena prostřednictvím Transform majetek na každém z nich. 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");
Transformace následují standardní model dědictví rodičů a dětí: pozice dítěte ve vesmíru je kombinací jeho místní transformace a všech předků až po kořen.
Co se v ní nachází?
Knihovna nabízí soustředěný soubor funkcí navržených kolem 3D scénografického modelu.
Graf scény
Graf scény je páteřem API. Každý 3D soubor je reprezentován jako stromová struktura:
| Třída | Úloha: |
|---|---|
Scene | Kontejner nejvyšší úrovně; kořeny scénového grafu |
Node | Názov v stromu; obsahuje transformy a dětské uzly. |
Entity | Abstraktní základna pro vizuální objekty připojené k uzlům. |
Mesh | Polygonální geometrie - vrcholy, čelisti, normály |
Camera | Definování virtuální kamery |
Transform | Lokální překlad, otáčení a měření pro uzel |
GlobalTransform | Skonstruované světové-prostorové transformy |
Vestavěné primitivní věci
Verze .NET obsahuje parametrické třídy tvarů, které mohou být připojeny k uzlům přímo nebo přeměněny na Mesh:
- Příloha 1 – osově vyřazená krabice s konfigurační šířkou, výškou a hloubkou.
- Sféra – parametrická koule s konfigurovatelným poloměrem.
- Cylindr – parametrický válce s konfigurovatelnými poloměry a výškou.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Materiály
Knihovna poskytuje více typů materiálů:
- LambertMaterial – klasický materiál pouze pro difúzní použití s okolními, difuzními a reflektujícími barvami.
- PhongMaterial - prodlužuje Lamberta zrcadlovými zářivkami a leskem.
- PbrMaterial – fyzicky založený materiál pro renderování s základní barvou, kovovou hrubostí, okluzí a texturovými sloty.
Matematické nástroje
Úřad pro bezpečnost a ochranu zdraví Aspose.ThreeD namespace zahrnuje základní matematické primitivy:
- Fvektor3 – jednoprecisionní 3-komponentový plovoucí vektor (
X,Y,Z) Používá:Transform.Translationa)Transform.Scale. - Vektor 4 (
Aspose.ThreeD.Utilities) – dvojitě přesný čtyřkomponentový vektor (x,y,z,w) pro kontrolní body a normály.Aspose.ThreeD.Vector4(plukovní, velká slova) existuje také;Mesh.ControlPointspoužívá dvojitou přesnost variantu Utilities. - Matrix4 - 4x4 transformační matrice.
- Quaternion – rotační reprezentace. Používá se
Transform.Rotation. - BoundingBox – osově vyřazené omezující pole pro prostorové dotazy.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Možnosti načítání a ukládání
Každý formát má vyhrazené třídy možností, které vám umožňují ovládat chování při dovozu a vývozu:
| Formát | Možnosti zatížení | Uložení možností |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GLB / GTF | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Například pro načtení souboru OBJ s převrácením koordinát a normální normalizací:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Podporované formáty
Následující tabulka shrnuje formáty, které může Aspose.3D FOSS pro .NET číst a psát.
| Formát | Rozšíření | Dovoz | Vývoz | Poznámky |
|---|---|---|---|---|
| OBJ | .obj | Ano , ano . | Ano , ano . | S materiály MTL |
| STL | .stl | Ano , ano . | Ano , ano . | Binární + ASCII |
| glTF | .gltf, .glb | Ano , ano . | Ano , ano . | Formát JSON; .glb je samostatná binární varianta, |
| FBX | .fbx | Ano , ano . | Ano , ano . | Pouze binární vývoz; export ASCII je deklarován, ale není aktivní v této verzi. |
| COLLADA | .dae | Ano , ano . | Ano , ano . | |
| 3MF | .3mf | Ano , ano . | Ano , ano . | ZIP-základní 3D výrobní formát |
Průvodce výběru formátu
Výběr správného formátu závisí na vašem použití:
- OBJ Je ideální, když potřebujete maximální kompatibilitu mezi 3D nástroji. Téměř každá aplikace pro modelování může číst a psát OBJ. Funguje dobře pro výměnu dat s mečem, ale přenáší pouze základní materiální informace prostřednictvím doprovodných souborů MTL.
- STL Je to formát volby pro 3D tiskové pracovní postupy. Ukládá surovou triangulační geometrii bez materiálů nebo hierarchie scén, což je přesně to, co očekává software slicer.
- glTF Je moderní standard pro web a 3D v reálném čase. Podporuje materiály PBR, hierarchie plných scén a je navržen pro efektivní přenos. Použijte glTF při budování vizork na webu nebo cílení jakékoli real-time renderingové potrubí.
- FBX FOSS pro .NET podporuje FBX. Aspose.3D Foss pro NET podporují FBx. dovoz a vývoz.Poznámka: export vytváří pouze binární FBX Exportní kód ASCII FBx existuje ve zdrojové verzi, ale není připojen k cestě exportu v této verzi.
- 3MF je moderní 3D tiskový formát, který podporuje bohaté metadatázy, materiály a víceobjektové scény v jednom balení založeném na ZIP.
Známé omezení
Scene.Render() je: nepodporované Vyzývání této metody vrhá NotImplementedException.Knihovna je navržena pro 3D zpracování souborů - načítání, manipulace, transformace a ukládání modelů. Spíše než zobrazování v reálném čase na displeji.
Open Source a licencování
3D FOSS pro .NET je vydán pod názvem: Licence MIT.To znamená , že máte možnost:
- Používejte knihovnu v komerčních a proprietárních aplikacích.
- Změňte zdrojový kód podle svých potřeb.
- Rozdělit knihovnu jako součást svého vlastního softwaru.
Neexistují žádné poplatky za autorské práva, limity pro použití a požadavky na přidělování mimo to, co stanoví licence MIT.
Celý zdrojový kód je hostován na GitHub a příspěvky jsou vítány: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Požadavky na systém
| Požadavek | Podrobnosti |
|---|---|
| .Verze .NET | 10.0 or later |
| Závislost na jiných produktech | Žádný (čisté C#) |
| Platformy | Jakákoliv platforma na .NET |
| Správce balíčku | NuGet |
Jak začít?
Zde jsou zdroje, které vám pomohou začít pracovat:
- Dokumenty – komplexní příručky a průvodce API jsou k dispozici na stránkách www.e-mail.eu/environmental_website Stránka pro dokumentaci v 3D.
- Základní znalosti – praktické články o jakých nápadech a tipy na řešení problémů v 3D KB.
- Odkaz na API – podrobná třída a referenční metoda na adrese: Aspose.3D API Reference.
- Zdrojový kód – prohlížet a přispívat na GitHub.
- NuGet – balíček je zveřejněn jako:
Aspose.3Dna NuGet.
Časté případy použití
Zde jsou některé praktické scénáře, ve kterých se Aspose.3D FOSS pro .NET hodí dobře:
Konverzní linky formátu
Mnoho týmů dostává 3D aktiva v jednom formátu, ale potřebují je ve jiném. Designový tým může pracovat v FBX, zatímco webový team potřebuje glTF. Knihovna vám umožňuje vytvořit automatizované konverzní potrubí:
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
Před začleněním 3D aktiva do aplikace, můžete ověřit jeho obsah - zkontrolovat počet uzlů, ověření geometrie nebo potvrdit, že očekávané prvky jsou přítomny:
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");
}
}
Scenární shromáždění
Můžete si nainstalovat více modelů a kombinovat je do jedné 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");
Co bude dál?
V nadcházejících příspěvcích budeme diskutovat o:
- Hluboké ponoření do klíčových funkcí scénografického API, materiálů a matematických nástrojů.
- Praktický průvodce pro práci s každým podporovaným 3D formátem - OBJ, STL, glTF, FBX a 3MF - včetně možností načítání / uložení a vzorů konverze.
Zůstaňte na našem seznamu a můžete si prohlédnout knihovnu a sdílet své zpětné vazby na GitHub.