Jsme nadšeni, že můžeme oznámit dostupnost Aspose.3D FOSS for .NET – bezplatná, open-source knihovna pro práci s 3D formáty souborů v aplikacích .NET. Vytvořena jako čisté C# řešení bez nativních závislostí, knihovna cílí na .NET 10.0 a novější, což ji činí přístupnou širokému spektru projektů a prostředí.

Tento příspěvek vás provede tím, co knihovna nabízí, jak začít a kam dál.

Co je Aspose.3D FOSS pro .NET?

Aspose.3D FOSS for .NET je lehká knihovna pro zpracování 3D souborů publikovaná pod MIT licence. Poskytuje API pro scénový graf, které vám umožní načíst, prozkoumat, transformovat a uložit 3D modely napříč několika široce používanými formáty. Knihovna je kompletně napsána v C# a nevyžaduje žádné externí nativní binární soubory ani platformně specifické konfigurace.

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

Klíčové body

  • Čisté C# – žádné P/Invoke, žádné nativní knihovny, žádná omezení platformy.
  • .NET 10.0+ kompatibilní.
  • licencováno pod MIT – použijte ji v osobních, komerčních nebo proprietárních projektech bez omezení.
  • Architektura scénového grafu – známý strom uzlů, sítí, kamer a materiálů.
  • Podpora více formátů – číst a zapisovat soubory OBJ, STL, glTF 2.0, GLB, FBX, Collada a 3MF files.

Rychlý start

Instalace přes NuGet

Přidejte balíček NuGet do svého projektu:

dotnet add package Aspose.3D --version 26.1.0

Vaše první konverze

Nejjednodušší případ použití je načtení 3D souboru v jednom formátu a jeho uložení v jiném. Zde je dvouřádková konverze z OBJ do STL:

using Aspose.ThreeD;

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

The Scene třída je centrálním vstupním bodem. Zavolejte scene.Open() s cestou k souboru pro načtení modelu, pak zavolejte Save() s cílovou cestou. Knihovna odvozuje formát z přípony souboru.

Vytvoření scény od nuly

Scény můžete také konstruovat programově:

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á se primitivní krychle jako podřízený uzel pod kořen, umístí se na souřadnice (1, 2, 3) a výsledek se exportuje jako soubor glTF.

Načítání s formátově specifickými možnostmi

Když potřebujete jemnější kontrolu nad procesem načítání, každý formát poskytuje vlastní 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");

Ten scene.Open() metoda přijímá libovolný typ možností načtení: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, nebo TmfLoadOptions.

Procházení grafu scény

Jakmile je scéna načtena, můžete procházet strom uzlů a kontrolovat nebo upravovat 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žitečný pro ladění, generování zpráv o obsahu modelu nebo selektivní úpravu částí scény před opětovným exportem.

Aplikace transformací

Umístění uzlů ve 3D prostoru se provádí pomocí Transform vlastnosti na každém 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ědičnosti rodič‑potomek: pozice dítěte ve světovém prostoru je kombinací jeho lokální transformace a všech transformací předků až po kořen.

Co je zahrnuto

Knihovna je dodávána s úzce zaměřenou sadou funkcí navržených kolem modelu 3D grafu scény.

Graf scény

Scénový graf je páteří API. Každý 3D soubor je reprezentován jako stromová struktura:

TřídaRole
SceneKontejner nejvyšší úrovně; kořen grafu scény
NodePojmenovaná pozice ve stromu; obsahuje transformace a podřízené uzly
EntityAbstraktní základ pro vizuální objekty připojené k uzlům
MeshPolygonální geometrie – vrcholy, plochy, normály
CameraDefinice virtuální kamery
TransformLokální posunutí, rotace a měřítko uzlu
GlobalTransformVypočtená transformace ve světovém prostoru

Vestavěné primitivy

Edice .NET zahrnuje parametrické třídy tvarů, které lze přímo připojit k uzlům nebo převést na Mesh:

  • Krabice – osově zarovnaná krabice s nastavitelnou šířkou, výškou a hloubkou.
  • Koule – parametrická koule s nastavitelným poloměrem.
  • Válec – parametrický válec 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 s difúzním odrazem, s komponentami barvy ambientní, difúzní, emisivní a reflexní.
  • PhongMaterial – rozšiřuje Lambert o spekulární odlesky a lesk.
  • PbrMaterial – materiál založený na fyzikálně založeném renderování s základní barvou, metalicitou, drsností, oklúzí a sloty pro textury.

Matematické utility

Tento Aspose.ThreeD jmenný prostor obsahuje základní matematické primitivy:

  • FVector3 – vektor se třemi komponentami v jednoduché přesnosti pro pozice, směry a měřítko. Používá se v Transform.Translation a Transform.Scale.
  • Vector4 – vektor se čtyřmi komponentami v jednoduché přesnosti pro kontrolní body a normály.
  • Matrix4 – 4x4 transformační matice.
  • Quaternion – reprezentace rotace. Používá se v Transform.Rotation.
  • BoundingBox – osově zarovnaný ohraničovací box 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í řídit chování importu a exportu:

FormátMožnosti načítáníMožnosti ukládání
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

Například pro načtení souboru OBJ s převrácením souřadnic a normalizací normál:

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é Aspose.3D FOSS pro .NET dokáže číst a zapisovat.

FormátRozšířeníImportExportPoznámky
OBJ.objAnoAnoS MTL materiály
STL.stlAnoAnoBinární + ASCII
glTF 2.0.gltfAnoAnoJSON formát
GLB.glbAnoAnoBinary glTF
FBX.fbxAnoAnoASCII a binární režimy
Collada.daeAnoAno
3MF.3mfAnoAnoformát 3D výroby založený na ZIP

Průvodce výběrem formátu

Volba správného formátu závisí na vašem použití:

  • OBJ je ideální, když potřebujete maximální kompatibilitu napříč 3D nástroji. Téměř každá modelovací aplikace dokáže číst a zapisovat OBJ. Funguje dobře pro výměnu síťových dat, ale přenáší pouze základní informace o materiálech prostřednictvím doprovodných souborů MTL.
  • STL je preferovaným formátem pro workflow 3D tisku. Ukládá surovou triangulovanou geometrii bez materiálů nebo hierarchie scény, což je přesně to, co očekává slicer software.
  • glTF je moderním standardem pro web a real-time 3D. Podporuje PBR materiály, kompletní hierarchie scén a je navržen pro efektivní přenos. Používejte glTF při tvorbě webových prohlížečů nebo při cílení na jakýkoli real-time renderovací pipeline.
  • FBX je hluboce integrován do workflow vývoje her a tvorby digitálního obsahu. Podporuje bohatá data scény včetně hierarchií a materiálů. Aspose.3D FOSS pro .NET podporuje FBX import a export v obou režimech, ASCII i binárním.
  • 3MF je moderní formát pro 3D tisk, který podporuje bohatá metadata, materiály a scény s více objekty v jednom balíčku založeném na ZIP.

Známá omezení

Scene.Render() je není podporováno v edici FOSS. Volání této metody vyvolá NotImplementedException. Knihovna je navržena pro souborově založené 3D zpracování – načítání, manipulaci, transformaci a ukládání modelů – spíše než pro renderování v reálném čase na displej.

Open source a licencování

Aspose.3D FOSS pro .NET je vydán pod licencí MIT License. To znamená, že můžete:

  • Používat knihovnu v komerčních a proprietárních aplikacích.
  • Upravte zdrojový kód tak, aby vyhovoval vašim potřebám.
  • Distribuujte knihovnu jako součást vašeho vlastního softwaru.

Neexistují žádné poplatky za licence, žádná omezení používání ani požadavky na uvedení autorství nad rámec toho, co stanoví licence MIT.

Celý zdrojový kód je hostován na GitHubu a příspěvky jsou vítány: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Systémové požadavky

PožadavekDetail
.verze .NET10.0 or later
ZávislostiŽádné (čistý C#)
PlatformyJakákoli platforma, která spouští .NET
Správce balíčkůNuGet

Začínáme

Zde jsou zdroje, které vám pomohou začít:

  • Dokumentace – komplexní průvodce a procházení API jsou k dispozici na webu dokumentace Aspose.3D.
  • Znalostní báze – praktické návody a tipy na řešení problémů v Aspose.3D KB.
  • Reference API – podrobná reference tříd a metod na Aspose.3D API Reference.
  • Zdrojový kód – procházet a přispívat na GitHub.
  • NuGet – balíček je publikován jako Aspose.3D na NuGetu.

Běžné případy použití

Zde jsou některé praktické scénáře, kde se Aspose.3D FOSS pro .NET dobře hodí:

Pipelines pro konverzi formátů

Mnoho týmů dostává 3D aktiva v jednom formátu, ale potřebuje je v jiném. Designérský tým může pracovat s FBX, zatímco webový tým potřebuje glTF. Knihovna vám umožní vytvořit automatizované pipelines pro konverzi:

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 integrací 3D assetu do vaší aplikace možná budete chtít ověřit jeho obsah – kontrolou počtu uzlů, ověřením geometrie nebo potvrzením, ž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");
    }
}

Sestavení scény

Můžete načíst více modelů a sloučit 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 dál

V nadcházejících příspěvcích se budeme věnovat:

  • Hloubkový pohled na klíčové funkce scene-graph API, materiály a matematické utility.
  • Praktický průvodce prací s každým podporovaným 3D formátem – OBJ, STL, glTF, FBX a 3MF – včetně možností načítání/ukládání a vzorů hromadné konverze.

Zůstaňte naladěni a neváhejte prozkoumat knihovnu a sdílet svou zpětnou vazbu na GitHubu.