Mums džiugu pranešti apie prieinamumą Aspose.3D FOSS for .NET – nemokama, atviro kodo biblioteka, skirta dirbti su 3D failų formatais .NET programose. Sukurta kaip gryna C# sprendimas be natūralių priklausomybių, biblioteka taikoma .NET 10.0 ir vėlesnėms versijoms, todėl ji prieinama plačiam projektų ir aplinkų spektrui.
Šiame įraše apžvelgiama, ką biblioteka siūlo, kaip pradėti darbą ir kur toliau eiti.
Kas yra Aspose.3D FOSS for .NET?
Aspose.3D FOSS for .NET yra supaprastinta 3D failų apdorojimo biblioteka, publikuota pagal MIT licencija. Ji suteikia scenų grafiko API, leidžiančią įkelti, peržiūrėti, transformuoti ir išsaugoti 3D modelius keliuose plačiai naudojamuose formatuose. Biblioteka visiškai parašyta C# kalba ir nereikalauja išorinių natūralių binarinių failų ar platformos specifinių konfigūracijų.
Šaltinio kodas prieinamas GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Svarbiausi akcentai
- Grynas C# – be P/Invoke, be natūralių bibliotekų, be platformos apribojimų.
- .NET 10.0+ suderinama.
- MIT licencijos – naudokite ją asmeniniuose, komerciniuose ar nuosavybiniuose projektuose be apribojimų.
- Scenos grafiko architektūra – pažįstama medžio struktūra su mazgais, tinklais, kameromis ir medžiagomis.
- Daugelio formatų palaikymas – skaityti ir rašyti OBJ, STL, glTF 2.0, GLB, FBX, Collada ir 3MF failus.
Greitas pradžia
NuGet diegimas
Pridėkite NuGet paketą prie savo projekto:
dotnet add package Aspose.3D --version 26.1.0
Jūsų pirmasis konvertavimas
Paprastausia naudojimo atveju yra įkelti 3D failą vienu formatu ir išsaugoti jį kitu. Štai dviejų eilučių konversija iš OBJ į STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
Šis Scene klasė yra pagrindinis įėjimo taškas. Iškvieskite scene.Open() su failo keliu, kad įkeltumėte modelį, tada iškvieskite Save() su tiksliniu keliu. Biblioteka nustato formatą iš failo plėtinio.
Scenos kūrimas nuo pradžių
Taip pat galite programiškai sukurti scenas:
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");
Tai sukuria naują sceną, prideda dėžės primityvą kaip vaikų mazgą po šaknimi, nustato jo poziciją koordinatėse (1, 2, 3) ir eksportuoja rezultatą kaip glTF failą.
Įkėlimas su formatui specifinėmis parinktimis
Kai reikia smulkesnės kontrolės įkėlimo procesui, kiekvienas formatas suteikia atskirą parinkčių klasę. Pavyzdžiui, įkelti STL failą su aiškiomis parinktimis:
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");
Šis scene.Open() metodas priima bet kurį iš įkėlimo parinkčių tipų: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, arba TmfLoadOptions.
Scenos grafiko perėjimas
Kai scena įkelta, galite vaikščioti po mazgų medį, kad patikrintumėte arba modifikuotumėte jo turinį:
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);
}
}
Šis modelis naudingas derinimui, ataskaitų generavimui apie modelio turinį arba selektyviam scenos dalių modifikavimui prieš iš naujo eksportavimą.
Transformacijų taikymas
Mazgų pozicionavimas 3D erdvėje atliekamas per Transform savybę kiekvienam 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");
Transformacijos seka standartinį tėvo-vaiko paveldėjimo modelį: vaiko pasaulio erdvės pozicija yra jo vietinės transformacijos ir visų tėvų transformacijų iki šaknies kombinacija.
Kas įtraukta
Biblioteka tiekiama su sutelkta galimybių rinkinį, sukurtą aplink 3D scenos grafiko modelį.
Scenos grafas
Scenos grafas yra API pagrindas. Kiekvienas 3D failas yra atvaizduojamas kaip medžio struktūra:
| Klasė | Rolė |
|---|---|
Scene | Aukščiausio lygio konteineris; scenos grafiko šaknis |
Node | Pavadinta pozicija medyje; saugo transformacijas ir vaikų mazgus |
Entity | Abstrakti bazė vizualiems objektams, priskirtiems mazgams |
Mesh | Poligoninė geometrija – viršūnės, paviršiai, normalės |
Camera | Virtualios kameros apibrėžimas |
Transform | Lokalių perkėlimų, sukimo ir mastelio parametrų mazgui |
GlobalTransform | Apskaičiuotas pasaulio erdvės transformavimas |
Įtaisytosios primityvos
„.NET“ leidimas apima parametrines formų klases, kurias galima tiesiogiai priskirti mazgams arba konvertuoti į Mesh:
- Dėžė – ašies lygiuota dėžė su konfigūruojamu pločiu, aukščiu ir gylio.
- Sfera – parametrinė sfera su konfigūruojamu spinduliu.
- Cilindras – parametrinis cilindras su konfigūruamais spinduliais ir aukščiu.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Medžiagos
Biblioteka suteikia kelias medžiagų tipų:
- LambertMaterial – klasikinė tik difuzinė medžiaga su aplinkos, difuzijos, šviesos ir atspindžio spalvų komponentais.
- PhongMaterial – išplečia Lambertą su spekuliariniais švytėjimais ir blizgesiu.
- PbrMaterial – fiziškai pagrįstos atvaizdavimo medžiaga su bazinės spalvos, metalinio, šiurkštumo, uždangos ir tekstūros lizdais.
Matematinės priemonės
Ši Aspose.ThreeD vardų erdvė apima esminius matematikos primityvus:
- FVector3 – viengubo tikslumo 3 komponentų vektorius pozicijoms, kryptims ir mastui. Naudojamas su
Transform.TranslationirTransform.Scale. - Vector4 – viengubo tikslumo 4 komponentų vektorius kontrolės taškams ir normalių.
- Matrix4 – 4x4 transformacijos matrica.
- Quaternion – sukimo atvaizdavimas. Naudojamas
Transform.Rotation. - BoundingBox – ašies lygiavietė apribojimų dėžė erdviniams užklausoms.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Įkėlimo ir įrašymo parinktys
Kiekvienas formatas turi atskiras parinkčių klases, kurios leidžia valdyti importo ir eksporto elgseną:
| Format | Įkėlimo parinktys | Išsaugojimo parinktys |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Pavyzdžiui, įkelti OBJ failą su koordinatų apvertimu ir normalių vektorių normalizavimu:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Palaikomi formatai
Žemiau pateikta lentelė apibendrina formatus, kuriuos Aspose.3D FOSS for .NET gali skaityti ir rašyti.
| Formatas | Plėtinys | Importuoti | Eksportuoti | Pastabos |
|---|---|---|---|---|
| OBJ | .obj | Taip | Taip | Su MTL medžiagomis |
| STL | .stl | Taip | Taip | Dvejetainis + ASCII |
| glTF 2.0 | .gltf | Taip | Taip | JSON formatas |
| GLB | .glb | Taip | Taip | Binary glTF |
| FBX | .fbx | Taip | Taip | ASCII ir binariniai režimai |
| Collada | .dae | Taip | Taip | |
| 3MF | .3mf | Taip | Taip | ZIP-pagrindo 3D gamybos formatas |
Formato pasirinkimo vadovas
Tinkamo formato pasirinkimas priklauso nuo jūsų naudojimo atvejo:
- OBJ yra idealus, kai reikia didžiausios suderinamumo su 3D įrankiais. Beveik kiekviena modeliavimo programa gali skaityti ir rašyti OBJ. Jis gerai tinka tinklo duomenų mainams, tačiau perduoda tik pagrindinę medžiagos informaciją per pagalbinius MTL failus.
- STL yra pasirinktas formatas 3D spausdinimo darbo srautams. Jis saugo neapdorotą trianguliuotą geometriją be medžiagų ar scenos hierarchijos, kas yra būtent tai, ko tikisi pjaustymo (slicer) programinė įranga.
- glTF yra šiuolaikinis standartas žiniatinkliui ir realaus laiko 3D. Jis palaiko PBR medžiagas, pilnas scenų hierarchijas ir sukurtas efektyviam perdavimui. Naudokite glTF kuriant žiniatinklio peržiūros programas arba siekiant bet kokios realaus laiko atvaizdavimo grandinės.
- FBX yra giliai integruotas į žaidimų kūrimo ir skaitmeninio turinio kūrimo darbo srautus. Jis palaiko turtingus scenų duomenis, įskaitant hierarchijas ir medžiagas. Aspose.3D FOSS for .NET supports FBX importavimas ir eksportavimas ir ASCII, ir binariniuose režimuose.
- 3MF yra modernus 3D spausdinimo formatas, kuris palaiko turtingus metaduomenis, medžiagas ir kelių objektų scenas viename ZIP-pagrinde pakete.
Žinomi apribojimai
Scene.Render() yra nepalaikoma FOSS leidime. Iškviečiant šį metodą bus išmesta NotImplementedException. Biblioteka sukurta failų pagrindu 3D apdorojimui – įkėlimui, manipuliavimui, transformavimui ir modelių išsaugojimui – o ne realaus laiko atvaizdavimui ekrane.
Atviro kodo ir licencijavimas
Aspose.3D FOSS for .NET yra išleista pagal the MIT licencija. Tai reiškia, kad esate laisvi:
- Naudokite biblioteką komercinėse ir nuosavybinėse programose.
- Modifikuokite šaltinio kodą pagal savo poreikius.
- Platinkite biblioteką kaip savo programinės įrangos dalį.
Nėra autorinių mokėjimų, naudojimo apribojimų ir priskyrimo reikalavimų, išskyrus tai, ką nurodo MIT licencija.
Visas šaltinio kodas talpinamas GitHub platformoje, o indėliai yra laukiami: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Sistemos reikalavimai
| Reikalavimas | Detalės |
|---|---|
| .NET versija | 10.0 or later |
| Priklausomybės | Nėra (grynas C#) |
| Platformos | Bet kuri platforma, kuri veikia .NET |
| Paketo tvarkyklė | NuGet |
Pradžia
Štai ištekliai, kurie padės jums pradėti darbą:
- Dokumentacija – išsamios vadovės ir API apžvalgos prieinamos Aspose.3D dokumentacijos svetainė.
- Žinių bazė – praktiniai „kaip padaryti“ straipsniai ir problemų sprendimo patarimai Aspose.3D KB.
- API nuoroda – išsamus klasės ir metodų nuorodų aprašymas Aspose.3D API nuoroda.
- Šaltinio kodas – naršyti ir prisidėti prie GitHub.
- NuGet – paketas publikuojamas kaip
Aspose.3DNuGet platformoje.
Dažni naudojimo atvejai
Štai keli praktiniai scenarijai, kur Aspose.3D FOSS for .NET puikiai tinka:
Formato konvertavimo kanalai
Daugelis komandų gauna 3D išteklius vienu formatu, bet jiems reikia kito. Projektavimo komanda gali dirbti su FBX, o žiniatinklio komanda – su glTF. Biblioteka leidžia sukurti automatizuotas konvertavimo konvejerius:
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
Prieš integruojant 3D išteklius į savo programą, gali prireikti patikrinti jų turinį – patikrinti mazgų skaičių, patvirtinti geometriją arba įsitikinti, kad yra numatyti elementai:
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");
}
}
Scenos surinkimas
Galite įkelti kelis modelius ir sujungti juos į vieną sceną:
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");
Kas toliau
Būsimiame įrašuose aptarsime:
- Išsamus pagrindinių scenų grafų API, medžiagų ir matematikos įrankių savybių tyrimas.
- Praktinis vadovas, kaip dirbti su kiekvienu palaikomu 3D formatu – OBJ, STL, glTF, FBX ir 3MF – įskaitant įkėlimo/išsaugojimo parinktis ir masinio konvertavimo šablonus.
Sekite naujienas, ir drąsiai tyrinėkite biblioteką bei dalinkitės savo atsiliepimais GitHub platformoje.