كيفية تحميل النماذج 3D في .NET
يوفر Aspose.3D for .NET API بسيط لفتح ملفات 3D دون إدمانات أصلية. 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;الخطوة الثالثة: تحميل ملف
استخدام 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 Data
إدخال كيان النود إلى 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: تطبيق خيارات الشحن المحددة للشكل
للتحكم في الحبوب الخفيفة ، اجتياز A 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 الحالات من الأسلاك المنفصلة آمنة.