Vi er glade for å kunngjøre tilgjengeligheten av Aspose.3D FOSS for .NET – et gratis, åpen kildekode-bibliotek for å arbeide med 3D-filformater i .NET-applikasjoner. Bygget som en ren C#-løsning uten native avhengigheter, retter biblioteket seg mot .NET 10.0 og senere, noe som gjør det tilgjengelig for et bredt spekter av prosjekter og miljøer.

Dette innlegget går gjennom hva biblioteket tilbyr, hvordan du kommer i gang, og hvor du kan gå videre herfra.

Hva er Aspose.3D FOSS for .NET?

Aspose.3D FOSS for .NET er et lettvektig 3D-filbehandlingsbibliotek publisert under MIT-lisens. Den gir et scene-graph API som lar deg laste, inspisere, transformere og lagre 3D-modeller på tvers av flere mye brukte formater. Biblioteket er helt skrevet i C# og krever ingen eksterne native binærfiler eller plattformspesifikke konfigurasjoner.

Kildekoden er tilgjengelig på GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Nøkkelfunksjoner

  • Ren C# – ingen P/Invoke, ingen native biblioteker, ingen plattformrestriksjoner.
  • .NET 10.0+ kompatibel.
  • MIT‑lisensiert – bruk den i personlige, kommersielle eller proprietære prosjekter uten restriksjoner.
  • Scene-graph-arkitektur – et kjent tre av noder, mesh‑objekter, kameraer og materialer.
  • Støtte for flere formater – lese og skrive OBJ, STL, glTF 2.0, GLB, FBX, Collada og 3MF-filer.

Rask start

NuGet‑installasjon

Legg til NuGet‑pakken i prosjektet ditt:

dotnet add package Aspose.3D --version 26.1.0

Din første konvertering

Det enkleste bruksområdet er å laste inn en 3D-fil i ett format og lagre den i et annet. Her er en to‑linjes konvertering fra OBJ til STL:

using Aspose.ThreeD;

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

Den Scene klassen er det sentrale inngangspunktet. Kall scene.Open() med en filsti for å laste inn en modell, så kall Save() med målbanen. Biblioteket utleder formatet fra filendelsen.

Bygge en scene fra bunnen av

Du kan også konstruere scener programmatisk:

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

Dette oppretter en ny scene, legger til en boks‑primitiv som et underordnet node under roten, plasserer den på koordinatene (1, 2, 3), og eksporterer resultatet som en glTF‑fil.

Lasting med format‑spesifikke alternativer

Når du trenger finere kontroll over lasteprosessen, tilbyr hvert format en dedikert alternativ‑klasse. For eksempel, lasting av en STL‑fil med eksplisitte alternativer:

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

Den scene.Open() metoden godtar hvilken som helst av lastalternativ-typene: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, eller TmfLoadOptions.

Traversere scenegrafen

Når en scene er lastet, kan du gå gjennom nodetreet for å inspisere eller endre innholdet:

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

Dette mønsteret er nyttig for feilsøking, generering av rapporter om modellens innhold, eller selektiv endring av deler av en scene før re‑eksport.

Anvende transformasjoner

Posisjonering av noder i 3D-rom gjøres gjennom Transform egenskap på hver 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");

Transformasjoner følger den standard forelder‑barn arve‑modellen: et barns posisjon i verdensrommet er kombinasjonen av dets lokale transformasjon og alle forelder‑transformasjoner opp til roten.

Hva som er inkludert

Biblioteket leveres med et fokusert sett av funksjoner designet rundt 3D scene-graph-modellen.

Scene Graph

Scenegraphen er ryggraden i API-et. Hver 3D-fil er representert som en trestruktur:

KlasseRolle
SceneToppnivåbeholder; roten av scenegrafen
NodeEn navngitt posisjon i treet; inneholder transformasjoner og undernoder
EntityAbstrakt base for visuelle objekter festet til noder
MeshPolygonal geometri – hjørner, flater, normaler
CameraDefinisjon av virtuell kamera
TransformLokal translasjon, rotasjon og skalering for en node
GlobalTransformBeregnet verdensromtransformasjon

Innebygde primitive

Den .NET utgaven inkluderer parametriske formklasser som kan festes direkte til noder eller konverteres til Mesh:

  • Boks – aksejustert boks med konfigurerbar bredde, høyde og dybde.
  • Kule – parametrisk kule med konfigurerbar radius.
  • Sylinder – parametrisk sylinder med konfigurerbare radier og høyde.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);

Materialer

Biblioteket tilbyr flere materialtyper:

  • LambertMaterial – klassisk kun-diffus materiale med omgivelses-, diffus-, emissiv- og reflekterende fargekomponenter.
  • PhongMaterial – utvider Lambert med spekulære høydepunkter og glans.
  • PbrMaterial – fysisk basert renderingsmateriale med basisfarge, metallisk, ruhet, okklusjon og teksturplasser.

Matematikkverktøy

Den Aspose.ThreeD navneområdet inkluderer essensielle matematiske primitive:

  • FVector3 – enkeltpresisjons 3-komponent vektor for posisjoner, retninger og skala. Brukes av Transform.Translation og Transform.Scale.
  • Vector4 – enkeltpresisjons 4-komponent vektor for kontrollpunkter og normaler.
  • Matrix4 – 4x4 transformasjonsmatrise.
  • Quaternion – rotasjonsrepresentasjon. Brukes av Transform.Rotation.
  • BoundingBox – aksejustert begrensningsboks for romlige spørringer.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations

Laste- og lagrealternativer

Hvert format har dedikerte alternativklasser som lar deg kontrollere import- og eksportadferd:

FormatLast inn-alternativerLagre-alternativer
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

For eksempel, for å laste inn en OBJ-fil med koordinatflipping og normalisering av normaler:

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

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

Støttede formater

Tabellen nedenfor oppsummerer formatene som Aspose.3D FOSS for .NET kan lese og skrive.

FormatFiltypeImportEksportNotater
OBJ.objJaJaMed MTL-materialer
STL.stlJaJaBinær + ASCII
glTF 2.0.gltfJaJaJSON-format
GLB.glbJaJaBinary glTF
FBX.fbxJaJaASCII- og binærmoduser
Collada.daeJaJa
3MF.3mfJaJaZIP-basert 3D-produksjonsformat

Veiledning for formatvalg

Valg av riktig format avhenger av ditt brukstilfelle:

  • OBJ er ideell når du trenger maksimal kompatibilitet på tvers av 3D-verktøy. Nesten alle modelleringsprogrammer kan lese og skrive OBJ. Den fungerer bra for utveksling av mesh-data, men inneholder kun grunnleggende materialinformasjon via tilhørende MTL-filer.
  • STL er formatet som foretrekkes i 3D‑utskriftsarbeidsflyter. Det lagrer rå triangulert geometri uten materialer eller scenehierarki, noe som er akkurat det slicer‑programvaren forventer.
  • glTF er den moderne standarden for web‑ og sanntids‑3D. Den støtter PBR‑materialer, komplette scenehierarkier, og er designet for effektiv overføring. Bruk glTF når du bygger nettbaserte visere eller retter deg mot enhver sanntids‑renderingspipeline.
  • FBX er dypt integrert i spillutvikling og arbeidsflyter for digital innholdsproduksjon. Den støtter rik scenedata inkludert hierarkier og materialer. Aspose.3D FOSS for .NET støtter FBX import og eksport i både ASCII- og binærmoduser.
  • 3MF er et moderne 3D‑utskriftsformat som støtter rik metadata, materialer og flerscener i en enkelt ZIP-basert pakke.

Kjente begrensninger

Scene.Render() er ikke støttet i FOSS-utgaven. Å kalle denne metoden vil kaste en NotImplementedException. Biblioteket er designet for filbasert 3D-behandling – lasting, manipulering, transformering og lagring av modeller – snarere enn sanntidsrendering til en skjerm.

Åpen kilde og lisensiering

Aspose.3D FOSS for .NET er utgitt under MIT-lisens. Dette betyr at du er fri til å:

  • Bruk biblioteket i kommersielle og proprietære applikasjoner.
  • Endre kildekoden for å passe dine behov.
  • Distribuer biblioteket som en del av din egen programvare.

Det er ingen royalty‑gebyrer, ingen bruksbegrensninger, og ingen krav til kreditering utover det MIT‑lisensen spesifiserer.

Den fullstendige kildekoden er hostet på GitHub, og bidrag er velkomne: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Systemkrav

KravDetalj
.NET versjon10.0 or later
AvhengigheterIngen (ren C#)
PlattformerAlle plattformer som kjører .NET
PakkehåndtererNuGet

Kom i gang

Her er ressursene som hjelper deg i gang:

  • Dokumentasjon – omfattende guider og API-gjennomganger er tilgjengelige på Aspose.3D dokumentasjonsnettsted.
  • Kunnskapsbase – praktiske hvordan-gjør-artikler og feilsøkingstips i Aspose.3D KB.
  • API-referanse – detaljert klasse- og metode-referanse på Aspose.3D API-referanse.
  • Kildekode – bla gjennom og bidra på GitHub.
  • NuGet – pakken er publisert som Aspose.3D på NuGet.

Vanlige brukstilfeller

Her er noen praktiske scenarier hvor Aspose.3D FOSS for .NET passer godt:

Formatkonverterings‑pipelines

Mange team mottar 3D‑ressurser i ett format, men trenger dem i et annet. Et designteam kan jobbe i FBX, mens webteamet trenger glTF. Biblioteket lar deg bygge automatiserte konverterings‑pipelines:

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

Før du integrerer en 3D‑ressurs i applikasjonen din, kan du ønske å validere innholdet – sjekke antall noder, verifisere geometri, eller bekrefte at forventede elementer er til stede:

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

Scene‑sammensetting

Du kan laste inn flere modeller og kombinere dem til en enkelt scene:

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

Hva blir neste

I kommende innlegg vil vi dekke:

  • En grundig gjennomgang av nøkkelfunksjonene i scene‑graf‑API‑et, materialer og matematiske verktøy.
  • En praktisk veiledning for å arbeide med hvert støttet 3D‑format – OBJ, STL, glTF, FBX og 3MF – inkludert last/save-alternativer og batch‑konverteringsmønstre.

Følg med, og føl deg fri til å utforske biblioteket og dele tilbakemeldingene dine på GitHub.