Mēs esam priecīgi paziņot par pieejamību Aspose.3D FOSS for .NET – bezmaksas, atvērtā koda bibliotēka darbam ar 3D failu formātiem .NET lietojumprogrammās. Izveidota kā tīra C# risinājums bez vietējām atkarībām, bibliotēka mērķē uz .NET 10.0 un jaunāku, padarot to pieejamu plašam projektu un vidi spektram.
Šajā rakstā aplūkosim, ko bibliotēka piedāvā, kā sākt darbu un kur turpināt.
Kas ir Aspose.3D FOSS for .NET?
Aspose.3D FOSS for .NET ir viegla 3D failu apstrādes bibliotēka, publicēta zem MIT license. Tā nodrošina ainas grafika API, kas ļauj ielādēt, pārbaudīt, pārveidot un saglabāt 3D modeļus vairākos plaši izmantotos formātos. Bibliotēka ir pilnīgi rakstīta C# valodā un neprasa ārējus vietējos binārus vai platformas specifiskas konfigurācijas.
Pirmkods ir pieejams GitHub: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Galvenie izcelumi
- Tīrs C# – nav P/Invoke, nav vietējo bibliotēku, nav platformas ierobežojumu.
- .NET 10.0+ savietojams.
- Licencēts ar MIT – izmantojiet to personīgajos, komerciālajos vai īpašnieka projektos bez ierobežojumiem.
- Ainas grafika arhitektūra – pazīstams mezglu, režģu, kameru un materiālu koks.
- Daudzformātu atbalsts – lasīt un rakstīt OBJ, STL, glTF 2.0, GLB, FBX, Collada, un 3MF failus.
Ātrais sākums
NuGet instalēšana
Pievienojiet NuGet pakotni savam projektam:
dotnet add package Aspose.3D --version 26.1.0
Jūsu pirmā konvertēšana
Visvienkāršākais lietošanas gadījums ir ielādēt 3D failu vienā formātā un saglabāt to citā. Šeit ir divu rindu pārveide no OBJ uz STL:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
Šis Scene class ir galvenais ieejas punkts. Izsauciet scene.Open() ar faila ceļu, lai ielādētu modeli, tad izsauciet Save() ar mērķa ceļu. Bibliotēka secina formātu no faila paplašinājuma.
Scēnas izveide no nulles
Jūs varat arī konstruēt scēnas programmatiski:
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");
Tas izveido jaunu scēnu, pievieno kastes primitīvu kā bērna mezglu zem saknes, novieto to koordinātēs (1, 2, 3) un eksportē rezultātu kā glTF failu.
Ielāde ar formātam specifiskām opcijām
Ja jums ir nepieciešama smalkāka kontrole pār ielādes procesu, katrs formāts nodrošina īpašu opciju klasi. Piemēram, STL faila ielāde ar konkrētām opcijām:
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() metode pieņem jebkuru no ielādes opciju tipiem: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, vai TmfLoadOptions.
Scēnas grafa pārlūkošana
Kad scēna ir ielādēta, jūs varat pārvietoties pa mezglu koku, lai pārbaudītu vai modificētu tā saturu:
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 ir noderīgs atkļūdošanai, atskaišu ģenerēšanai par modeļa saturu vai selektīvai scēnas daļu modificēšanai pirms atkārtotas eksportēšanas.
Transformāciju piemērošana
Mezglu novietošana 3D telpā tiek veikta, izmantojot Transform īpašību katram 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");
Transformācijas seko standartam vecāka-bērna mantības modelim: bērna pasaules telpas pozīcija ir kombinācija no tā lokālās transformācijas un visām priekšgājēju transformācijām līdz saknei.
Kas iekļauts
Bibliotēka tiek piegādāta ar koncentrētu iespēju kopumu, kas izstrādāts ap 3D scēnas grafa modeli.
Ainas grafiks
Ainas grafiks ir API pamats. Katrs 3D fails tiek attēlots kā koka struktūra:
| Klase | Loma |
|---|---|
Scene | Augstākā līmeņa konteineris; aina grafika sakne |
Node | Nosaukta pozīcija koks; satur transformācijas un bērnu mezglus |
Entity | Abstrakta bāze vizuāliem objektiem, kas pievienoti mezgliem |
Mesh | Poligonu ģeometrija — virsotnes, sejas, normāles |
Camera | Virtuālās kameras definīcija |
Transform | Lokāls pārvietojums, rotācija un mērogs mezglam |
GlobalTransform | Aprēķināta pasaules telpas transformācija |
Iebūvēti primitīvi
.NET izdevums ietver parametriskās formas klases, kuras var pievienot mezgliem tieši vai pārveidot uz Mesh:
- Kaste – assa‑līdzināta kaste ar konfigurējamu platumu, augstumu un dziļumu.
- Lode – parametriska lode ar konfigurējamu rādiusu.
- Cilindrs – parametriskais cilindrs ar konfigurējamiem rādiusiem un augstumu.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
Materiāli
Bibliotēka nodrošina vairākus materiālu tipus:
- LambertMaterial – klasiskais tikai difūzs materiāls ar ambient, difūzu, emisijas un atstarojošu krāsu komponentēm.
- PhongMaterial – paplašina Lambertu ar spekulāriem spīdumiem un spīdīgumu.
- PbrMaterial – fiziski balstīts renderēšanas materiāls ar pamata krāsu, metāliski, raupjumu, aizsegu un tekstūru slotiem.
Matemātikas utilītprogrammas
Šis Aspose.ThreeD nosaukumvieta ietver būtiskus matemātiskos primitīvus:
- FVector3 – vienkāršas precizācijas 3-komponentu vektors pozīcijām, virzieniem un mērogam. Lieto
Transform.TranslationunTransform.Scale. - Vector4 – vienkāršas precizācijas 4-komponentu vektors kontroles punktiem un normālēm.
- Matrix4 – 4x4 transformācijas matrica.
- Quaternion – rotācijas reprezentācija. Lieto
Transform.Rotation. - BoundingBox – asumu līnijām paralēla robežkaste telpiskām vaicājumiem.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
Ielādes un saglabāšanas iespējas
Katram formātam ir īpašas opciju klases, kas ļauj kontrolēt importēšanas un eksportēšanas uzvedību:
| Formāts | Ielādes iespējas | Saglabāšanas iespējas |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
Piemēram, lai ielādētu OBJ failu ar koordinātu apgriešanu un normālu normalizāciju:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
Atbalstītie formāti
Zemāk esošā tabula apkopo formātus, kurus Aspose.3D FOSS for .NET var nolasīt un rakstīt.
| Formāts | Paplašinājums | Importēt | Eksportēt | Piezīmes |
|---|---|---|---|---|
| OBJ | .obj | Jā | Jā | Ar MTL materiāliem |
| STL | .stl | Jā | Jā | Binārs + ASCII |
| glTF 2.0 | .gltf | Jā | Jā | JSON formāts |
| GLB | .glb | Jā | Jā | Binary glTF |
| FBX | .fbx | Jā | Jā | ASCII un binārie režīmi |
| Collada | .dae | Jā | Jā | |
| 3MF | .3mf | Jā | Jā | ZIP-balstīts 3D ražošanas formāts |
Formāta izvēles ceļvedis
Pareiza formāta izvēle ir atkarīga no jūsu lietošanas gadījuma:
- OBJ ir ideāls, ja jums ir nepieciešama maksimāla saderība starp 3D rīkiem. Gandrīz katra modelēšanas lietojumprogramma var nolasīt un rakstīt OBJ. Tas labi darbojas mesh datu apmaiņai, bet nes tikai pamata materiālu informāciju caur saistītajiem MTL failiem.
- STL ir izvēlētais formāts 3D drukāšanas darbplūsmām. Tas saglabā neapstrādātu trīsstūra ģeometriju bez materiāliem vai ainas hierarhijas, kas ir tieši tas, ko sagaida slicer programmatūra.
- glTF ir mūsdienu standarts tīmekļa un reāllaika 3D. Tas atbalsta PBR materiālus, pilnas ainas hierarhijas un ir izstrādāts efektīvai pārraidei. Izmantojiet glTF, veidojot tīmekļa skatītājus vai mērķējot uz jebkuru reāllaika renderēšanas cauruļvadu.
- FBX ir dziļi integrēts spēļu izstrādes un digitālās satura veidošanas darbplūsmās. Tas atbalsta bagātīgu ainas datu kopumu, ieskaitot hierarhijas un materiālus. Aspose.3D FOSS priekš .NET atbalsta FBX importēšana un eksportēšana gan ASCII, gan binārajos režīmos.
- 3MF ir mūsdienu 3D drukāšanas formāts, kas atbalsta bagātīgu metadatu, materiālu un daudzobjektu ainas vienā ZIP-balstītā paketē.
Zināmie ierobežojumi
Scene.Render() ir nav atbalstīts FOSS izlaidumā. Šīs metodes izsaukšana izraisīs NotImplementedException. Bibliotēka ir paredzēta failu balstītai 3D apstrādei – ielādei, manipulēšanai, transformēšanai un modeļu saglabāšanai – nevis reāllaika renderēšanai uz ekrāna.
Atvērtā koda un licencēšana
Aspose.3D FOSS priekš .NET tiek izlaists zem MIT licence. Tas nozīmē, ka jums ir brīvi:
- Izmantojiet bibliotēku komerciālās un proprietārās lietojumprogrammās.
- Modificējiet pirmkodu, lai tas atbilstu jūsu vajadzībām.
- Izplatiet bibliotēku kā daļu no jūsu pašu programmatūras.
Nav ne autoratlīdzības maksas, ne lietošanas ierobežojumu, ne atribūcijas prasību, izņemot to, ko nosaka MIT licence.
Pilns pirmkods ir izvietots GitHub, un ieguldījumi ir laipni gaidīti: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
Sistēmas prasības
| Prasība | Detaļas |
|---|---|
| .NET versija | 10.0 or later |
| Atkarības | Nav (tīrs C#) |
| Platformas | Jebkura platforma, kas darbojas .NET |
| Pakotņu pārvaldnieks | NuGet |
Sākums
Šeit ir resursi, kas palīdzēs jums sākt darbu:
- Dokumentācija – visaptveroši ceļveži un API pārskati ir pieejami uz Aspose.3D dokumentācijas vietne.
- Zināšanu bāze – praktiski pamācību raksti un problēmu novēršanas padomi iekš Aspose.3D KB.
- API atsauce – detalizēta klašu un metožu atsauce pie Aspose.3D API atsauce.
- Pirmkods – pārlūkot un piedalīties uz GitHub.
- NuGet – pakotne tiek publicēta kā
Aspose.3Duz NuGet.
Biežākie lietošanas gadījumi
Šeit ir daži praktiski scenāriji, kuros Aspose.3D FOSS for .NET labi iederas:
Formāta konvertēšanas caurules
Daudzas komandas saņem 3D aktīvus vienā formātā, bet tiem vajag citu. Dizaina komanda var strādāt ar FBX, kamēr tīmekļa komandai vajag glTF. Bibliotēka ļauj izveidot automatizētas konvertēšanas caurules:
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
Pirms integrēt 3D aktīvu jūsu lietotnē, var būt vēlēšanās pārbaudīt tā saturu — pārbaudīt mezglu skaitu, verificēt ģeometriju vai apstiprināt, ka sagaidāmie elementi ir klātesoši:
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");
}
}
Ainas salikšana
Jūs varat ielādēt vairākus modeļus un apvienot tos vienā ainā:
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 nākamais
Nākamos rakstos mēs aplūkosim:
- Padziļināta izpēte par ainas grafika API galvenajām funkcijām, materiāliem un matemātiskajām utilītēm.
- Praktisks ceļvedis darbam ar katru atbalstīto 3D formātu — OBJ, STL, glTF, FBX un 3MF — ieskaitot ielādes/saglabāšanas iespējas un grupas konvertēšanas modeļus.
Sekojiet jaunumiem, un droši izpētiet bibliotēku un dalieties ar savām atsauksmēm GitHub.