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:
| Luokka | Rooli |
|---|---|
Scene | Yläkontti; kohtauksen graafin juuri |
Node | Nimetty sijainti puussa; sisältää muunnokset ja lapsisolmut |
Entity | Abstrakti perusluokka visuaalisille solmuihin liitetylle objektille |
Mesh | Polygoninen geometria – kärjet, pinnat, normaalit |
Camera | Virtuaalisen kameran määrittely |
Transform | Paikallinen siirto, kierto ja skaalaus solmulle |
GlobalTransform | Laskettu 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.TranslationjaTransform.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ä:
| Muoto | Latausasetukset | Tallennusasetukset |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
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.
| Muoto | Laajennus | Tuonti | Vienti | Huomautuksia |
|---|---|---|---|---|
| OBJ | .obj | Kyllä | Kyllä | MTL-materiaalien kanssa |
| STL | .stl | Kyllä | Kyllä | Binääri + ASCII |
| glTF 2.0 | .gltf | Kyllä | Kyllä | JSON-muoto |
| GLB | .glb | Kyllä | Kyllä | Binary glTF |
| FBX | .fbx | Kyllä | Kyllä | ASCII- ja binääritilat |
| Collada | .dae | Kyllä | Kyllä | |
| 3MF | .3mf | Kyllä | 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
| Vaatimus | Yksityiskohta |
|---|---|
| .NET versio | 10.0 or later |
| Riippuvuudet | Ei (puhtaa C#) |
| Alustat | Mikä tahansa alusta, joka ajaa .NET |
| Pakettienhallinta | NuGet |
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.3DNuGetissä.
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.