Olemme innoissamme ilmoittaessamme saatavuudesta Aspose.3D FOSS for .NET – ilmainen, avoimen lähdekoodin kirjasto 3D‑tiedostomuotojen käsittelyyn .NET-sovelluksissa. Rakennettu puhtaana C#‑ratkaisuna ilman natiiviriippuvuuksia, kirjasto kohdistuu .NET 10.0:een ja uudempiin, mikä tekee siitä saavutettavan laajalle projekti‑ ja ympäristövalikoimalle.

Tässä artikkelissa käydään läpi, mitä kirjasto tarjoaa, miten pääsee alkuun ja minne seuraavaksi kannattaa suunnata.

Mikä on Aspose.3D FOSS for .NET?

Aspose.3D FOSS for .NET on kevyt 3D‑tiedostojen käsittelykirjasto, joka on julkaistu MIT license. Se tarjoaa scene-graph API:n, jonka avulla voit ladata, tarkastella, muuntaa ja tallentaa 3D‑malleja useiden laajasti käytettyjen formaattien välillä. Kirjasto on kokonaan kirjoitettu C#:lla eikä vaadi ulkoisia natiivibinaareja tai alusta‑kohtaisia asetuksia.

Lähdekoodi on saatavilla GitHubissa: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Keskeiset kohokohdat

  • Pure C# – no P/Invoke, no native libraries, no platform restrictions.
  • .NET 10.0+ compatible.
  • MIT licensed – use it in personal, commercial, or proprietary projects without restrictions.
  • Scene-graph architecture – a familiar tree of nodes, meshes, cameras, and materials.
  • Multi-format support – lue ja kirjoita OBJ-, STL-, glTF 2.0-, GLB-, FBX-, Collada- ja 3MF-tiedostoja.

Pikakäynnistys

NuGet-asennus

Lisää NuGet‑paketti projektiisi:

dotnet add package Aspose.3D --version 26.1.0

Ensimmäinen muunnoksesi

Yksinkertaisin käyttötapaus on ladata 3D‑tiedosto yhdessä formaatissa ja tallentaa se toiseen. Tässä on kaksirivinen muunnos OBJ:sta STL:ään:

using Aspose.ThreeD;

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

Se Scene luokka on keskeinen sisäänkäyntipiste. Kutsu scene.Open() tiedostopolulla mallin lataamiseksi, sitten kutsu Save() kohdepolun kanssa. Kirjasto päätelsee formaatin tiedostopäätteestä.

Rakentaminen alusta alkaen

Voit myös rakentaa kohtauksia ohjelmallisesti:

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ä luo uuden kohtauksen, lisää laatikko-alkioelementin lapsisolmuna juuren alle, asettaa sen koordinaatteihin (1, 2, 3) ja vie tuloksen glTF-tiedostona.

Lataaminen formaattikohtaisten asetusten avulla

Kun tarvitset tarkempaa hallintaa latausprosessiin, jokainen formaatti tarjoaa oman asetusluokkansa. Esimerkiksi STL-tiedoston lataaminen eksplisiittisillä asetuksilla:

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() menetelmä hyväksyy minkä tahansa latausvaihtoehdon tyypeistä: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, tai TmfLoadOptions.

Kohtausgraafin läpikäynti

Kun kohtaus on ladattu, voit kävellä solmupuun läpi tarkastellaksesi tai muokataksesi sen sisältöä:

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

Tämä malli on hyödyllinen virheenkorjaukseen, raporttien luomiseen mallin sisällöstä tai kohtauksen osien valikoimaiseen muokkaamiseen ennen uudelleenvientiä.

Transformaatioiden soveltaminen

Solmujen sijoittaminen 3D-tilassa tehdään kautta Transform ominaisuus jokaisessa 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");

Transformaatioiden periytymismalli on standardi vanhempi‑lapsi -malli: lapsen maailmanavaruuden sijainti on sen paikallisen transformaation ja kaikkien vanhempien transformaatioden yhdistelmä juureen asti.

Mitä sisältyy

Kirjasto toimitetaan kohdennetun ominaisuuskokonaisuuden kanssa, joka on suunniteltu 3D‑kohtausgraafimallin ympärille.

Kohtausgraafi

Kohtausgrafiikka on API:n selkäranka. Jokainen 3D-tiedosto esitetään puurakenteena:

LuokkaRooli
SceneYläkontti; kohtauksen graafin juuri
NodeNimetty sijainti puussa; sisältää muunnokset ja lapsisolmut
EntityAbstrakti perusluokka visuaalisille solmuihin liitetylle objektille
MeshPolygoninen geometria – kärjet, pinnat, normaalit
CameraVirtuaalisen kameran määrittely
TransformPaikallinen siirto, kierto ja skaalaus solmulle
GlobalTransformLaskettu maailmanavaruuden muunnos

Sisäänrakennetut primitiivit

Versio .NET sisältää parametrisia muotoluokkia, jotka voidaan liittää solmuihin suoraan tai muuntaa Mesh:

  • Laatikko – akselikohtainen laatikko, jonka leveys, korkeus ja syvyys ovat säädettävissä.
  • Pallo – parametrinen pallo, jonka säde on säädettävissä.
  • Sylinteri – parametrinen sylinteri, jonka säteet ja korkeus ovat säädettävissä.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);

Materiaalit

Kirjasto tarjoaa useita materiaalityyppejä:

  • LambertMaterial – klassinen vain hajautettu materiaali, jossa on ambient, diffuse, emissive ja reflective colour -komponentit.
  • PhongMaterial – laajentaa Lambertia spekulaarisilla korostuksilla ja kiiltoisuudella.
  • PbrMaterial – fysikaalisesti perustuva renderöintimateriaali, jossa on base color, metallic, roughness, occlusion ja texture -paikat.

Matematiikan apuohjelmat

The Aspose.ThreeD nimialue sisältää olennaiset matemaattiset primitiivit:

  • FVector3 – yksittäistarkkuuden 3-komponenttivektori paikoille, suunnille ja skaalaus. Käytetty Transform.Translation ja Transform.Scale.
  • Vector4 – yksittäistarkkuuden 4-komponenttivektori ohjauspisteille ja normaalivektoreille.
  • Matrix4 – 4x4 muunnosmatriisi.
  • Quaternion – kiertosuuntaesitys. Käytetty Transform.Rotation.
  • BoundingBox – akselin suuntaisesti kohdistettu rajauslaatikko spatiaalikyselyitä varten.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations

Lataus- ja tallennusasetukset

Jokaisella tiedostomuodolla on omat valintaluokkansa, joiden avulla voit hallita tuonti- ja vientikäyttäytymistä:

MuotoLatausasetuksetTallennusasetukset
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

Esimerkiksi ladataksesi OBJ-tiedoston koordinaattien kääntämisellä ja normaalien normalisoinnilla:

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

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

Tuetut tiedostomuodot

Seuraava taulukko tiivistää tiedostomuodot, jotka Aspose.3D FOSS for .NET voi lukea ja kirjoittaa.

MuotoLaajennusTuontiVientiHuomautuksia
OBJ.objKylläKylläMTL-materiaalien kanssa
STL.stlKylläKylläBinääri + ASCII
glTF 2.0.gltfKylläKylläJSON-muoto
GLB.glbKylläKylläBinary glTF
FBX.fbxKylläKylläASCII- ja binääritilat
Collada.daeKylläKyllä
3MF.3mfKylläKylläZIP-pohjainen 3D-valmistusformaatti

Tiedostomuodon valintagide

Oikean tiedostomuodon valinta riippuu käyttötapauksestasi:

  • OBJ on ihanteellinen, kun tarvitset maksimaalista yhteensopivuutta 3D-työkalujen välillä. Lähes jokainen mallinnusohjelma osaa lukea ja kirjoittaa OBJ-tiedostoja. Se toimii hyvin verkkoaineiston (mesh) vaihdossa, mutta siirtää vain perusmateriaalitiedot kumppani-MTL-tiedostojen kautta.
  • STL on 3D-tulostusprosessien ensisijainen formaatti. Se tallentaa raakan kolmioituneen geometrian ilman materiaaleja tai kohtaushierarkiaa, mikä on juuri se, mitä leikkausohjelmisto odottaa.
  • glTF on moderni standardi verkko- ja reaaliaikaiselle 3D:lle. Se tukee PBR-materiaaleja, täysiä kohtaushierarkioita, ja on suunniteltu tehokkaaseen siirtoon. Käytä glTF:ää rakentaessasi verkkopohjaisia katselijoita tai kohdistuessasi mihin tahansa reaaliaikaiseen renderöintiputkeen.
  • FBX on syvästi integroitunut pelikehitykseen ja digitaalisen sisällön luomisen työnkulkuihin. Se tukee rikasta kohtausdataa, mukaan lukien hierarkiat ja materiaalit. Aspose.3D FOSS for .NET tukee FBX tuonti ja vienti sekä ASCII- että binääritiloissa.
  • 3MF on moderni 3D-tulostusformaatti, joka tukee rikasta metatietoa, materiaaleja ja monen objektin kohtauksia yhdessä ZIP-pohjaisessa paketissa.

Tunnetut rajoitukset

Scene.Render() on ei tueta FOSS-versiossa. Tämän metodin kutsuminen heittää poikkeuksen NotImplementedException. Kirjasto on suunniteltu tiedostopohjaiseen 3D-käsittelyyn – lataamiseen, muokkaamiseen, muuntamiseen ja mallien tallentamiseen – eikä reaaliaikaiseen renderöintiin näytölle.

Avoin lähdekoodi ja lisensointi

Aspose.3D FOSS for .NET on julkaistu MIT License. Tämä tarkoittaa, että olet vapaa tekemään:

  • Käyttää kirjastoa kaupallisissa ja omistusoikeudellisissa sovelluksissa.
  • Muokkaa lähdekoodia vastaamaan tarpeitasi.
  • Jaa kirjasto osana omaa ohjelmistoasi.

Ei ole rojaltimaksuja, käyttörajoituksia eikä nimeämisvaatimuksia MIT-lisenssin määrittelemän lisäksi.

Koko lähdekoodi on isännöity GitHubissa, ja kontribuutiot ovat tervetulleita: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

Järjestelmävaatimukset

VaatimusYksityiskohta
.NET versio10.0 or later
RiippuvuudetEi (puhtaa C#)
AlustatMikä tahansa alusta, joka ajaa .NET
PakettienhallintaNuGet

Aloittaminen

Tässä ovat resurssit, jotka auttavat sinua pääsemään alkuun:

  • Dokumentaatio – kattavat oppaat ja API-käyttöoppaat ovat saatavilla Aspose.3D-dokumentaatiosivusto.
  • Tietopankki – käytännön ohjeartikkelit ja vianmääritysvinkit tietopankissa Aspose.3D KB.
  • API-viite – yksityiskohtainen luokka- ja menetelmäviite osoitteessa Aspose.3D API-viite.
  • Lähdekoodi – selaa ja osallistu GitHub.
  • NuGet – paketti on julkaistu muodossa Aspose.3D NuGetissä.

Yleisiä käyttötapauksia

Tässä on joitakin käytännön skenaarioita, joissa Aspose.3D FOSS for .NET sopii hyvin:

Formaattimuunnosputket

Monet tiimit vastaanottavat 3D‑omaisuuksia yhdessä formaatissa, mutta tarvitsevat ne toisessa. Suunnittelutiimi saattaa työskennellä FBX‑muodossa, kun taas web‑tiimi tarvitsee glTF:n. Kirjasto mahdollistaa automatisoitujen muunnosputkien rakentamisen:

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

Ennen kuin integroit 3D‑resurssin sovellukseesi, saatat haluta validoida sen sisällön – tarkistamalla solmujen määrän, varmistamalla geometrian tai vahvistamalla, että odotetut elementit ovat läsnä:

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

Kohtauksen kokoaminen

Voit ladata useita malleja ja yhdistää ne yhdeksi kohtaukseksi:

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

Mitä seuraavaksi

Tulevissa julkaisuissa käsittelemme:

  • Syväluotaus scene-graph API:n, materiaalien ja matemaattisten apuohjelmien keskeisiin ominaisuuksiin.
  • Käytännön opas jokaisen tuetun 3D-muodon – OBJ, STL, glTF, FBX, ja 3MF – kanssa työskentelyyn, sisältäen lataus-/tallennusvaihtoehdot ja erämuunnosmallit.

Pysy kuulolla, ja ole vapaa tutustumaan kirjastoon ja jakamaan palautteesi GitHubissa.