विशेषताएँ और कार्यात्मकताएँ
विशेषताएँ और कार्यात्मकताएँ
यह पृष्ठ प्रत्येक प्रमुख सुविधा क्षेत्र को कवर करता है 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");उपलब्ध विकल्प क्लासें:
| Class | Direction | मुख्य गुण |
|---|---|---|
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 | शेडिंग के लिए सामग्री प्रकार |