.NET में 3D मॉडल कैसे लोड करें

.NET में 3D मॉडल कैसे लोड करें

.NET के लिए Aspose.3D एक सरल एपीआई प्रदान करता है 3 डी फ़ाइलों को बिना मूल निर्भरताओं के खोलने के। Scene आप नोड्स द्रव्यमान पर चल सकते हैं और प्रत्येक मस्जिद के लिए भूमेट्री डेटा पढ़ सकते है।.

कदम-दर-चरण गाइड

चरण 1: पैकेज स्थापित करें

अपने परियोजना में NuGet पैकेज जोड़ें:

dotnet add package Aspose.3D.FOSS

जांच करें :

using Aspose.ThreeD;
Console.WriteLine("Aspose.3D loaded.");

चरण 2: दृश्य वर्ग का आयात करें

के लिए Scene क्लास सभी 3D डेटा के लिए शीर्ष स्तर का कंटेनर है. नामस्पेस आयात करें:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

चरण 3: फ़ाइल लोड करें

उपयोग करें Scene.Open() किसी भी समर्थित प्रारूप को लोड करने के लिए. पुस्तकालय फ़ाइल एक्सटेंशन से प्रारंभिक रूप का पता लगाता है:

var scene = new Scene();
scene.Open("model.obj");

या स्टैटिक कारखाने का उपयोग करें:

var scene = Scene.FromFile("model.obj");

दोनों समर्थन OBJ, STL, glTF 2.0 / GLB, FBX, COLLADA, PLY और 3MF।.


चरण 4: दृश्य नोड्स के माध्यम से पार करें

एक लोड दृश्य एक पेड़ है Node वस्तुओं में जड़ें scene.RootNode:

void Walk(Node node, int depth = 0)
{
    var indent = new string(' ', depth * 2);
    Console.WriteLine($"{indent}Node: {node.Name}");
    foreach (var child in node.ChildNodes)
        Walk(child, depth + 1);
}

Walk(scene.RootNode);

हर एक Node एक ले जा सकते हैं Entity (महाराज, कैमरा और प्रकाश) देखें। node.Entity पहुंचने से पहले।.


चरण 5: Vertex और Polygon डेटा तक पहुंच

एक नोड के इकाई को काटें Mesh और इसके नियंत्रण बिंदुओं और पॉलीगोन को पढ़ें:

using Aspose.ThreeD.Entities;

foreach (var node in scene.RootNode.ChildNodes)
{
    if (node.Entity is Mesh mesh)
    {
        Console.WriteLine($"Mesh '{node.Name}': " +
            $"{mesh.ControlPoints.Count} vertices, " +
            $"{mesh.PolygonCount} polygons");

        if (mesh.ControlPoints.Count > 0)
        {
            var v = mesh.ControlPoints[0];
            Console.WriteLine($"  First vertex: ({v.x:F4}, {v.y:F4}, {v.z:F4})");
        }
    }
}

चरण 6: प्रारूप-विशिष्ट लोड विकल्पों को लागू करें

एक ही समय में, एक को नियंत्रित करें। LoadOptions उप वर्ग :

var options = new ObjLoadOptions
{
    FlipCoordinateSystem = true,
    Scale = 0.01,
    EnableMaterials = true
};

var scene = new Scene();
scene.Open("model.obj", options);

अन्य विकल्पों के लिए: FbxLoadOptions, GltfLoadOptions, StlLoadOptions, ColladaLoadOptions, PlyLoadOptions.


सामान्य समस्याएं और सुधार

ImportException जब कॉल करते हैं Scene.Open()

फ़ाइल को भ्रष्ट या एक असहाय प्रारूप में परिवर्तित किया जा सकता है. यह सुनिश्चित करें कि फ़ील्ड 3D दृश्य में खुलता है और यह कि प्रारंभ समर्थित सूची में है।.

OBJ लोड के बाद खोया हुआ सामग्री

जगह है .mtl फ़ाइल के साथ-साथ .obj फ़ाइल और सुनिश्चित करें ObjLoadOptions.EnableMaterials = true.

सिस्टम कोरनाट गलत मिश्रण (प्रकार घूर्णन दिखाई देता है)

सेट ObjLoadOptions.FlipCoordinateSystem = true या रूट नोड पर एक घूर्णन लागू करें Transform.

NullReferenceException पहुंच node.Entity

हर नोड में भूमी नहीं होती. हमेशा जांच करें if (node.Entity is Mesh mesh) मस्जिद की संपत्ति के लिए आवेदन करने से पहले।.


अक्सर पूछे जाने वाले प्रश्न (FAQ)

3D में कौन सा फ़ॉर्मेट लोड कर सकते हैं?

OBJ, STL (बिना और ASCII), glTF 2.0 / GLB, FBX, COLLADA (DAE), PLY, और 3MF।.

क्या मैं एक स्ट्रीम से लोड कर सकता हूं?

हाँ।. Scene.Open() स्वीकार करते हैं A Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

मैं सतह सामान्य कैसे प्राप्त कर सकता हूं?

चार्जिंग के बाद, कॉल करें mesh.GetElement(VertexElementType.Normal) पहुंचने के लिए VertexElementNormal स्लाइडर.

क्या पुस्तकालय सुरक्षित है?

हर एक Scene अलग फ़ाइलों को अलग-अलग में लोड करें Scene अलग-अलग तारों से उदाहरण सुरक्षित हैं।.

 हिन्दी