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

Vaš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:
SceneKontejner nejvyšší úrovně; kořeny scénového grafu
NodeNázov v stromu; obsahuje transformy a dětské uzly.
EntityAbstraktní základna pro vizuální objekty připojené k uzlům.
MeshPolygonální geometrie - vrcholy, čelisti, normály
CameraDefinování virtuální kamery
TransformLokální překlad, otáčení a měření pro uzel
GlobalTransformSkonstruované 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.Translation a) 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.ControlPoints použí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átMožnosti zatíženíUložení možností
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
GLB / GTFGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

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átRozšířeníDovozVývozPoznámky
OBJ.objAno , ano .Ano , ano .S materiály MTL
STL.stlAno , ano .Ano , ano .Binární + ASCII
glTF.gltf, .glbAno , ano .Ano , ano .Formát JSON; .glb je samostatná binární varianta,
FBX.fbxAno , ano .Ano , ano .Pouze binární vývoz; export ASCII je deklarován, ale není aktivní v této verzi.
COLLADA.daeAno , ano .Ano , ano .
3MF.3mfAno , 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žadavekPodrobnosti
.Verze .NET10.0 or later
Závislost na jiných produktechŽádný (čisté C#)
PlatformyJakákoliv platforma na .NET
Správce balíčkuNuGet

Jak začít?

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

Č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.