हमें यह घोषणा करते हुए उत्साहित हैं कि उपलब्धता है Aspose.3D FOSS for .NET – एक मुफ्त, ओपन-सोर्स लाइब्रेरी जो .NET अनुप्रयोगों में 3D फ़ाइल फ़ॉर्मेट्स के साथ काम करने के लिए है। यह शुद्ध C# समाधान के रूप में निर्मित है, जिसमें कोई नेटिव निर्भरताएँ नहीं हैं, लाइब्रेरी .NET 10.0 और बाद के संस्करणों को लक्षित करती है, जिससे यह विभिन्न प्रोजेक्ट्स और पर्यावरणों के लिए सुलभ बनती है।.
यह पोस्ट लाइब्रेरी क्या पेश करती है, कैसे शुरू करें, और आगे कहाँ जाएँ, इस पर मार्गदर्शन देती है।.
क्या है Aspose.3D FOSS for .NET?
Aspose.3D FOSS for .NET एक हल्की 3D फ़ाइल प्रोसेसिंग लाइब्रेरी है, जो प्रकाशित की गई है MIT license. यह एक सीन-ग्राफ API प्रदान करता है जो आपको कई व्यापक रूप से उपयोग किए जाने वाले फ़ॉर्मेट्स में 3D मॉडल लोड, निरीक्षण, रूपांतरण और सहेजने की अनुमति देता है। लाइब्रेरी पूरी तरह से C# में लिखी गई है और इसे कोई बाहरी नेटिव बाइनरी या प्लेटफ़ॉर्म-विशिष्ट कॉन्फ़िगरेशन की आवश्यकता नहीं है।.
सोर्स कोड GitHub पर उपलब्ध है: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
मुख्य विशेषताएँ
- शुद्ध C# – कोई P/Invoke नहीं, कोई नेटिव लाइब्रेरी नहीं, कोई प्लेटफ़ॉर्म प्रतिबंध नहीं।.
- .NET 10.0+ संगत।.
- MIT लाइसेंस प्राप्त – इसे व्यक्तिगत, व्यावसायिक, या स्वामित्व वाले प्रोजेक्ट्स में बिना किसी प्रतिबंध के उपयोग करें।.
- सीन-ग्राफ आर्किटेक्चर – नोड्स, मेष, कैमरा और मैटेरियल्स का परिचित पेड़।.
- बहु-फ़ॉर्मेट समर्थन – OBJ, STL, glTF 2.0, GLB, FBX, Collada, और 3MF फ़ाइलों को पढ़ें और लिखें।.
त्वरित प्रारंभ
NuGet इंस्टॉलेशन
अपने प्रोजेक्ट में NuGet पैकेज जोड़ें:
dotnet add package Aspose.3D --version 26.1.0
आपका पहला रूपांतरण
सबसे सरल उपयोग केस एक फ़ॉर्मेट में 3D फ़ाइल लोड करना और उसे दूसरे में सहेजना है। यहाँ OBJ से STL में दो पंक्तियों का रूपांतरण दिया गया है:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("cube.obj");
scene.Save("output.stl");
यह Scene क्लास केंद्रीय प्रवेश बिंदु है। कॉल करें scene.Open() फ़ाइल पथ के साथ मॉडल लोड करने के लिए, फिर कॉल करें Save() target path के साथ। लाइब्रेरी फ़ाइल एक्सटेंशन से फ़ॉर्मेट का अनुमान लगाती है।.
शुरुआत से एक सीन बनाना
आप प्रोग्रामेटिक रूप से भी सीन बना सकते हैं:
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");
यह एक नया सीन बनाता है, रूट के तहत एक बॉक्स प्रिमिटिव को चाइल्ड नोड के रूप में जोड़ता है, इसे निर्देशांक (1, 2, 3) पर स्थित करता है, और परिणाम को glTF फ़ाइल के रूप में एक्सपोर्ट करता है।.
फ़ॉर्मेट-विशिष्ट विकल्पों के साथ लोड करना
जब आपको लोडिंग प्रक्रिया पर अधिक सूक्ष्म नियंत्रण चाहिए, तो प्रत्येक फ़ॉर्मेट एक समर्पित विकल्प क्लास प्रदान करता है। उदाहरण के लिए, स्पष्ट विकल्पों के साथ एक STL फ़ाइल लोड करना:
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");
यह scene.Open() method किसी भी load option प्रकार को स्वीकार करता है: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, FbxLoadOptions, या TmfLoadOptions.
सीन ग्राफ़ को ट्रैवर्स करना
एक बार सीन लोड हो जाने पर, आप नोड ट्री को ट्रैवर्स करके उसकी सामग्री का निरीक्षण या संशोधन कर सकते हैं:
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);
}
}
यह पैटर्न डिबगिंग, मॉडल सामग्री के बारे में रिपोर्ट जनरेट करने, या पुनः एक्सपोर्ट करने से पहले सीन के भागों को चयनात्मक रूप से संशोधित करने के लिए उपयोगी है।.
ट्रांसफ़ॉर्म लागू करना
3D स्पेस में नोड्स को पोजिशन करना … के माध्यम से किया जाता है Transform प्रॉपर्टी प्रत्येक पर 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");
ट्रांसफ़ॉर्म मानक पैरेंट-चाइल्ड इनहेरिटेंस मॉडल का पालन करते हैं: किसी चाइल्ड की वर्ल्ड-स्पेस पोज़िशन उसके लोकल ट्रांसफ़ॉर्म और रूट तक के सभी एंसेस्टर ट्रांसफ़ॉर्म्स के संयोजन से बनती है।.
क्या शामिल है
लाइब्रेरी 3D सीन-ग्राफ़ मॉडल के आसपास डिज़ाइन किए गए एक केंद्रित क्षमताओं के सेट के साथ आती है।.
सीन ग्राफ़
सीन ग्राफ API की रीढ़ है। प्रत्येक 3D फ़ाइल को एक ट्री संरचना के रूप में दर्शाया जाता है:
| क्लास | भूमिका |
|---|---|
Scene | टॉप-लेवल कंटेनर; सीन ग्राफ का रूट |
Node | ट्री में एक नामित स्थिति; ट्रांसफ़ॉर्म और चाइल्ड नोड्स को रखता है |
Entity | नोड्स से जुड़े विज़ुअल ऑब्जेक्ट्स के लिए एब्स्ट्रैक्ट बेस |
Mesh | पॉलीगॉनल जियोमेट्री – वर्टिसेज, फेसेस, नॉर्मल्स |
Camera | वर्चुअल कैमरा परिभाषा |
Transform | एक नोड के लिए लोकल ट्रांसलेशन, रोटेशन, और स्केल |
GlobalTransform | कम्प्यूटेड वर्ल्ड-स्पेस ट्रांसफ़ॉर्म |
बिल्ट-इन प्रिमिटिव्स
The .NET edition में पैरामीट्रिक शेप क्लासेज़ शामिल हैं जिन्हें नोड्स से सीधे जोड़ा जा सकता है या परिवर्तित किया जा सकता है Mesh:
- बॉक्स – अक्ष-समरूप बॉक्स जिसमें चौड़ाई, ऊँचाई और गहराई को कॉन्फ़िगर किया जा सकता है।.
- गोला – पैरामीट्रिक गोला जिसमें त्रिज्या को कॉन्फ़िगर किया जा सकता है।.
- सिलिंडर – कॉन्फ़िगर करने योग्य त्रिज्या और ऊँचाई के साथ पैरामीट्रिक सिलिंडर।.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);
मैटेरियल्स
लाइब्रेरी कई सामग्री प्रकार प्रदान करती है:
- LambertMaterial – क्लासिक डिफ्यूज़-ओनली मैटेरियल जिसमें एंबिएंट, डिफ्यूज़, एमिसिव, और रिफ्लेक्टिव रंग घटक होते हैं।.
- PhongMaterial – लैम्बर्ट को स्पेक्युलर हाइलाइट्स और शाइननेस के साथ विस्तारित करता है।.
- PbrMaterial – फिजिकली बेस्ड रेंडरिंग मैटेरियल जिसमें बेस कलर, मेटैलिक, रफ़नेस, ऑक्लूज़न, और टेक्सचर स्लॉट्स होते हैं।.
गणित उपयोगिताएँ
यह Aspose.ThreeD नेमस्पेस में आवश्यक गणितीय प्रिमिटिव्स शामिल हैं:
- FVector3 – सिंगल-प्रिसीजन 3-घटक वेक्टर जो पोजीशन, दिशा, और स्केल के लिए है। द्वारा उपयोग किया गया
Transform.TranslationऔरTransform.Scale. - Vector4 – सिंगल-प्रिसीजन 4-घटक वेक्टर जो कंट्रोल पॉइंट्स और नॉर्मल्स के लिए है।.
- Matrix4 – 4x4 ट्रांसफ़ॉर्मेशन मैट्रिक्स।.
- Quaternion – रोटेशन प्रतिनिधित्व। द्वारा उपयोग किया गया
Transform.Rotation. - BoundingBox – स्थानिक क्वेरीज़ के लिए अक्ष-संरेखित बाउंडिंग बॉक्स।.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations
लोड और सेव विकल्प
प्रत्येक फ़ॉर्मेट में समर्पित विकल्प क्लासेज़ होते हैं जो आपको आयात और निर्यात व्यवहार को नियंत्रित करने की अनुमति देते हैं:
| फ़ॉर्मेट | लोड विकल्प | सेव विकल्प |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | FbxSaveOptions |
| 3MF | TmfLoadOptions | TmfSaveOptions |
उदाहरण के लिए, कोऑर्डिनेट फ़्लिपिंग और नॉर्मल नॉर्मलाइज़ेशन के साथ OBJ फ़ाइल लोड करने के लिए:
var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;
scene.Open("model.obj", opts);
समर्थित फ़ॉर्मेट्स
निम्न तालिका उन फ़ॉर्मेट्स का सारांश प्रस्तुत करती है जिन्हें Aspose.3D FOSS for .NET पढ़ और लिख सकता है।.
| फ़ॉर्मेट | एक्सटेंशन | आयात | निर्यात | नोट्स |
|---|---|---|---|---|
| OBJ | .obj | हाँ | हाँ | MTL सामग्री के साथ |
| STL | .stl | हाँ | हाँ | बाइनरी + ASCII |
| glTF 2.0 | .gltf | हाँ | हाँ | JSON फ़ॉर्मेट |
| GLB | .glb | हाँ | हाँ | Binary glTF |
| FBX | .fbx | हाँ | हाँ | ASCII और बाइनरी मोड |
| Collada | .dae | हाँ | हाँ | |
| 3MF | .3mf | हाँ | हाँ | ZIP-आधारित 3D निर्माण फ़ॉर्मेट |
फ़ॉर्मेट चयन गाइड
सही फ़ॉर्मेट चुनना आपके उपयोग केस पर निर्भर करता है:
- OBJ जब आपको 3D टूल्स के बीच अधिकतम संगतता चाहिए तब यह आदर्श है। लगभग हर मॉडलिंग एप्लिकेशन OBJ को पढ़ और लिख सकता है। यह मेष डेटा एक्सचेंज के लिए अच्छा काम करता है लेकिन केवल बुनियादी सामग्री जानकारी सहायक MTL फ़ाइलों के माध्यम से ले जाता है।.
- STL 3D प्रिंटिंग वर्कफ़्लो के लिए यह पसंदीदा फ़ॉर्मेट है। यह कच्ची त्रिकोणीय ज्यामिति को बिना सामग्री या सीन पदानुक्रम के संग्रहीत करता है, जो बिल्कुल वही है जो स्लाइसर सॉफ़्टवेयर अपेक्षा करता है।.
- glTF वेब और रीयल‑टाइम 3D के लिए आधुनिक मानक है। यह PBR सामग्री, पूर्ण सीन पदानुक्रम का समर्थन करता है, और कुशल ट्रांसमिशन के लिए डिज़ाइन किया गया है। वेब‑आधारित व्यूअर्स बनाते समय या किसी भी रीयल‑टाइम रेंडरिंग पाइपलाइन को लक्षित करते समय glTF का उपयोग करें।.
- FBX गेम विकास और डिजिटल कंटेंट निर्माण वर्कफ़्लो में यह गहराई से एकीकृत है। यह पदानुक्रम और सामग्री सहित समृद्ध सीन डेटा का समर्थन करता है। Aspose.3D FOSS for .NET supports FBX आयात और निर्यात ASCII और बाइनरी दोनों मोड में।.
- 3MF एक आधुनिक 3D प्रिंटिंग फ़ॉर्मेट है जो समृद्ध मेटाडेटा, सामग्री, और एकल ZIP-आधारित पैकेज में बहु‑ऑब्जेक्ट सीन का समर्थन करता है।.
ज्ञात सीमाएँ
Scene.Render() है समर्थित नहीं है FOSS संस्करण में। इस मेथड को कॉल करने पर एक अपवाद फेंकेगा NotImplementedException. लाइब्रेरी फ़ाइल-आधारित 3D प्रोसेसिंग के लिए डिज़ाइन की गई है — लोडिंग, मैनिपुलेटिंग, ट्रांसफ़ॉर्मिंग, और मॉडल्स को सेव करने — बजाय वास्तविक‑समय रेंडरिंग के डिस्प्ले पर।.
ओपन सोर्स और लाइसेंसिंग
Aspose.3D FOSS for .NET को जारी किया गया है के तहत MIT License. इसका मतलब है कि आप स्वतंत्र हैं:
- व्यावसायिक और स्वामित्व वाले अनुप्रयोगों में लाइब्रेरी का उपयोग करें।.
- स्रोत कोड को अपनी आवश्यकताओं के अनुसार संशोधित करें।.
- लाइब्रेरी को अपने स्वयं के सॉफ़्टवेयर का हिस्सा बनाकर वितरित करें।.
MIT लाइसेंस में निर्दिष्ट शर्तों के अलावा कोई रॉयल्टी शुल्क, उपयोग सीमा, या एट्रिब्यूशन आवश्यकताएँ नहीं हैं।.
पूरा स्रोत कोड GitHub पर होस्ट किया गया है, और योगदान का स्वागत है: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET
सिस्टम आवश्यकताएँ
| आवश्यकता | विवरण |
|---|---|
| .NET संस्करण | 10.0 or later |
| निर्भरताएँ | कोई नहीं (शुद्ध C#) |
| प्लेटफ़ॉर्म | कोई भी प्लेटफ़ॉर्म जो .NET चलाता है |
| पैकेज मैनेजर | NuGet |
शुरू करना
यहाँ वे संसाधन हैं जो आपको शुरू करने में मदद करेंगे:
- दस्तावेज़ीकरण – व्यापक गाइड और API walkthroughs उपलब्ध हैं Aspose.3D दस्तावेज़ीकरण साइट.
- ज्ञान आधार – व्यावहारिक कैसे‑करें लेख और समस्या निवारण टिप्स में Aspose.3D KB.
- API संदर्भ – विस्तृत क्लास और मेथड रेफ़रेंस पर Aspose.3D API रेफ़रेंस.
- सोर्स कोड – ब्राउज़ करें और योगदान दें GitHub.
- NuGet – पैकेज प्रकाशित किया गया है
Aspose.3DNuGet पर।.
सामान्य उपयोग केस
यहाँ कुछ व्यावहारिक परिदृश्य हैं जहाँ Aspose.3D FOSS for .NET अच्छी तरह फिट बैठता है:
फ़ॉर्मेट कन्वर्ज़न पाइपलाइन
कई टीमें 3D एसेट्स एक फ़ॉर्मेट में प्राप्त करती हैं लेकिन उन्हें दूसरे में चाहिए। एक डिज़ाइन टीम FBX में काम कर सकती है जबकि वेब टीम को glTF चाहिए। लाइब्रेरी आपको स्वचालित कन्वर्ज़न पाइपलाइन बनाने की अनुमति देती है:
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
अपने एप्लिकेशन में 3D एसेट को एकीकृत करने से पहले, आप उसकी सामग्री को सत्यापित करना चाह सकते हैं — नोड गिनती की जाँच, ज्यामिति की पुष्टि, या यह सुनिश्चित करना कि अपेक्षित तत्व मौजूद हैं:
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");
}
}
सीन असेंबली
आप कई मॉडल लोड कर सकते हैं और उन्हें एक ही सीन में संयोजित कर सकते हैं:
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");
आगे क्या है
आगामी पोस्टों में, हम कवर करेंगे:
- सीन-ग्राफ API, मैटेरियल्स, और गणितीय यूटिलिटीज़ की प्रमुख विशेषताओं में गहरा विश्लेषण।.
- प्रत्येक समर्थित 3D फ़ॉर्मेट — OBJ, STL, glTF, FBX, और 3MF — के साथ काम करने के लिए एक व्यावहारिक गाइड, जिसमें लोड/सेव विकल्प और बैच रूपांतरण पैटर्न शामिल हैं।.
जुड़े रहें, और लाइब्रेरी का अन्वेषण करने तथा GitHub पर अपना फीडबैक साझा करने में संकोच न करें।.