विशेषताएँ और कार्यात्मकताएँ

विशेषताएँ और कार्यात्मकताएँ

विशेषताएँ और कार्यात्मकताएँ

यह पृष्ठ प्रत्येक प्रमुख सुविधा क्षेत्र को कवर करता है Aspose.3D 26.1.0 कार्यशील C# उदाहरणों के साथ।.


सीन लोड करना और सहेजना

Scene.Open() फ़ाइल लोड करता है; Scene.Save() इसे निर्यात करता है। फ़ॉर्मेट फ़ाइल एक्सटेंशन से पता लगाया जाता है:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

स्थैतिक फ़ैक्टरी का उपयोग करें Scene.FromFile() एक विकल्प के रूप में:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

फ़ॉर्मेट-विशिष्ट विकल्प

पास करें LoadOptions या SaveOptions सूक्ष्म नियंत्रण के लिए subclasses:

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

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

उपलब्ध विकल्प क्लासें:

ClassDirectionमुख्य गुण
ObjLoadOptionsआयातFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsनिर्यातFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsआयात(डिफ़ॉल्ट सेटिंग्स)
GltfLoadOptionsआयात(डिफ़ॉल्ट सेटिंग्स)
GltfSaveOptionsनिर्यात(डिफ़ॉल्ट सेटिंग्स)
StlLoadOptionsआयात(डिफ़ॉल्ट सेटिंग्स)
StlSaveOptionsनिर्यात(डिफ़ॉल्ट सेटिंग्स)
ColladaLoadOptionsआयातFlipCoordinateSystem
ColladaSaveOptionsनिर्यातIndented, TransformStyle
PlyLoadOptionsआयात(डिफ़ॉल्ट सेटिंग्स)

सीन ग्राफ बनाना

हायरार्की बनाने के लिए नोड्स बनाएं और एंटिटीज़ को संलग्न करें:

var scene = new Scene();
var root = scene.RootNode;

var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));

के माध्यम से बच्चों तक पहुँचें node.ChildNodes और संलग्न इकाई के माध्यम से node.Entity.


Mesh and Primitives

एक बनाएं Mesh नियंत्रण बिंदुओं और बहुभुजों के साथ प्रोग्रामेटिक रूप से:

// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;

var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0));   // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);

निर्मित प्रिमिटिव्स (Box, Sphere, Cylinder) को परिवर्तित किया जा सकता है Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

Vertex Elements

ज्यामिति में नॉर्मल्स, UVs, और वर्टेक्स रंग संलग्न करें:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

उपलब्ध वर्टेक्स तत्व प्रकार: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


ट्रांसफ़ॉर्म्स

हर Node एक ले जाता है Transform के साथ Translation, Rotation, और Scale:

var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);

वर्ल्ड-स्पेस पोजीशन को पढ़ें via node.GlobalTransform.Matrix या node.EvaluateGlobalTransform().


मैटेरियल्स

शेडिंग डेटा के लिए नोड्स को मैटेरियल असाइन करें:

var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;

scene.RootNode.CreateChildNode("red_box", new Box(), mat);

मैटेरियल प्रकार: LambertMaterial, PhongMaterial, PbrMaterial.


टिप्स और सर्वोत्तम प्रथाएँ

  • उपयोग करें Scene.FromFile() एक-लाइनर लोड के लिए जब आपको कस्टम की आवश्यकता न हो LoadOptions
  • प्रिमिटिव्स को परिवर्तित करें Mesh के साथ ToMesh() वर्टेक्स एलिमेंट्स जोड़ने से पहले
  • उपयोग करें GltfSaveOptions के साथ एक .glb संक्षिप्त बाइनरी आउटपुट के लिए एक्सटेंशन
  • जाँचें node.Entity के लिए null कास्ट करने से पहले — हर नोड में ज्यामिति नहीं होती
  • उपयोग करें PolygonModifier.Triangulate() क्वाड मेष को ट्रायंगल-केवल फॉर्मैट जैसे STL में निर्यात करने से पहले परिवर्तित करने के लिए

सामान्य समस्याएँ

समस्याकारणसुधार
ImportException लोड परअसमर्थित या दूषित फ़ाइलजाँचें कि फ़ाइल 3D व्यूअर में खुलती है; सुनिश्चित करें कि फ़ॉर्मेट समर्थित सूची में है
OBJ लोड करने के बाद सामग्री गायब है.mtl फ़ाइल नहीं मिलीरखें .mtl फ़ाइल को .obj या सेट करें ObjLoadOptions.EnableMaterials = true
FBX आयात के बाद स्केल असंगतिविभिन्न इकाई प्रणालियाँउपयोग करें ObjLoadOptions.Scale या लागू करें एक Transform लोड करने के बाद

FAQ

मैं किसी अज्ञात फ़ाइल का फॉर्मेट कैसे पता करूँ?

उपयोग FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

क्या मैं फ़ाइल पाथ की बजाय स्ट्रीम से लोड कर सकता हूँ?

हाँ।. Scene.Open() एक को स्वीकार करता है Stream:

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

कौन से फ़ॉर्मेट आयात और निर्यात दोनों का समर्थन करते हैं?

OBJ, STL, glTF/GLB, FBX, COLLADA, और 3MF दोनों दिशाओं को सपोर्ट करते हैं। PLY केवल इम्पोर्ट को सपोर्ट करता है (PLY एक्सपोर्टर जुड़ा नहीं है)।.


API रेफ़रेंस सारांश

क्लास / मेथडविवरण
Sceneशीर्ष-स्तरीय 3D सीन कंटेनर
Scene.Open()पथ या स्ट्रीम द्वारा 3D फ़ाइल लोड करें
Scene.Save()सीन को फ़ाइल या स्ट्रीम में निर्यात करें
Scene.FromFile()लोड करने और एक को लौटाने के लिए स्थैतिक फ़ैक्टरी Scene
Nodeएंटिटीज़ और ट्रांसफ़ॉर्म्स को धारण करने वाला सीन पदानुक्रम नोड
Node.CreateChildNode()एक चाइल्ड नोड बनाएं और संलग्न करें
Meshकंट्रोल पॉइंट्स और फेस लिस्ट्स वाला पॉलीगॉन मेष
Mesh.CreatePolygon()वर्टेक्स इंडेक्स द्वारा एक बहुभुज फेस को परिभाषित करें
Box / Sphere / Cylinderबिल्ट-इन पैरामीट्रिक प्रिमिटिव्स
Transformस्थानीय अनुवाद, घूर्णन, और स्केल
FileFormatसमर्थित फ़ॉर्मैट्स के लिए रजिस्ट्री और डिटेक्टर
LambertMaterial / PhongMaterial / PbrMaterialशेडिंग के लिए सामग्री प्रकार
 हिन्दी