نحن متحمسون للإعلان عن توفر Aspose.3D FOSS لـ .NET – مكتبة مجانية ومفتوحة المصدر للعمل مع صيغ ملفات 3D في تطبيقات .NET. تم بناؤها كحل C# نقي دون أي تبعيات أصلية، تستهدف .NET 10.0 وما بعده، مما يجعلها متاحة لمجموعة واسعة من المشاريع والبيئات.

تستعرض هذه المشاركة ما تقدمه المكتبة، وكيفية البدء، وإلى أين يمكنك التوجه من هنا.

ما هو Aspose.3D FOSS لـ .NET؟?

Aspose.3D FOSS لـ .NET هي مكتبة معالجة ملفات 3D خفيفة الوزن منشورة تحت الـ رخصة MIT. توفر واجهة برمجة تطبيقات scene-graph التي تتيح لك تحميل، فحص، تحويل، وحفظ نماذج 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() مع مسار الهدف. تستنتج المكتبة الصيغة من امتداد الملف.

إنشاء مشهد من الصفر

يمكنك أيضًا إنشاء المشاهد برمجيًا:

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() تقبل الطريقة أيًا من أنواع خيارات التحميل: 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);
    }
}

هذا النمط مفيد لتصحيح الأخطاء، إنشاء تقارير حول محتويات النموذج، أو تعديل أجزاء معينة من المشهد بشكل انتقائي قبل إعادة التصدير.

تطبيق التحويلات

يتم وضع العقد في الفضاء ثلاثي الأبعاد عبر 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");

تتبع التحويلات نموذج الوراثة القياسي بين الأصل والابن: موضع الطفل في الفضاء العالمي هو مزيج من تحويله المحلي وجميع تحويلات الأجداد حتى الجذر.

ما الذي يتضمنه

تأتي المكتبة بمجموعة مركزة من القدرات المصممة حول نموذج رسم المشهد ثلاثي الأبعاد.

رسم المشهد البياني

مخطط المشهد هو العمود الفقري لواجهة برمجة التطبيقات. يتم تمثيل كل ملف ثلاثي الأبعاد كهيكل شجري:

فئةدور
Sceneحاوية المستوى الأعلى؛ جذر مخطط المشهد
Nodeموضع مسمى في الشجرة؛ يحتوي على التحويلات والعقد الفرعية
Entityقاعدة تجريدية للكائنات البصرية المرتبطة بالعقد
Meshهندسة متعددة الأضلاع – الرؤوس، الوجوه، المتجهات العمودية
Cameraتعريف الكاميرا الافتراضية
Transformالتحويل المحلي، الدوران، والقياس لعقدة
GlobalTransformالتحويل في الفضاء العالمي المحسوب

الأشكال الأولية المدمجة

الإصدار .NET يتضمن فئات أشكال بارامترية يمكن إرفاقها بالعقد مباشرة أو تحويلها إلى Mesh:

  • مكعب – صندوق محاذى للمحاور مع عرض، ارتفاع، وعمق قابلين للتكوين.
  • كرة – كرة بارامترية مع نصف قطر قابل للتكوين.
  • اسطوانة – اسطوانة بارامترية مع أقطار وارتفاع قابلين للتكوين.
var sphere = new Sphere(1);
var mesh = sphere.ToMesh();
Console.WriteLine("Vertices: " + mesh.ControlPoints.Count);

المواد

توفر المكتبة عدة أنواع من المواد:

  • LambertMaterial – مادة كلاسيكية تعتمد على الانتشار فقط مع مكونات اللون المحيطي، الانتشاري، الانبعاثي، والعاكس.
  • PhongMaterial – يمد Lambert بإضافة إبرازات انعكاسية ولمعان.
  • PbrMaterial – مادة تعتمد على التصيير الفيزيائي مع base color، metallic، roughness، occlusion، ومقابس القوام.

أدوات الرياضيات

ال Aspose.ThreeD المجال namespace يتضمن البدائيات الرياضية الأساسية:

  • FVector3 – متجه ثلاثي المكوّن بدقة مفردة للمواقع، الاتجاهات، والقياس. يُستخدم بواسطة Transform.Translation و Transform.Scale.
  • Vector4 – متجه رباعي المكوّن بدقة مفردة لنقاط التحكم والاتجاهات العمودية.
  • Matrix4 – مصفوفة تحويل 4×4.
  • Quaternion – تمثيل الدوران. يُستخدم بواسطة Transform.Rotation.
  • BoundingBox – صندوق احتواء محاذى للمحاور للاستعلامات المكانية.
var a = new FVector3(1, 0, 0);
var b = new FVector3(0, 1, 0);
// Vector operations for spatial computations

خيارات التحميل والحفظ

كل تنسيق يحتوي على فئات خيارات مخصصة تتيح لك التحكم في سلوك الاستيراد والتصدير:

Formatخيارات التحميلخيارات الحفظ
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptionsFbxSaveOptions
3MFTmfLoadOptionsTmfSaveOptions

على سبيل المثال، لتحميل ملف OBJ مع عكس الإحداثيات وتطبيع المتجهات العمودية:

var opts = new ObjLoadOptions();
opts.FlipCoordinateSystem = true;
opts.NormalizeNormal = true;

scene.Open("model.obj", opts);

الصيغ المدعومة

الجدول التالي يلخص الصيغ التي يمكن لـ Aspose.3D FOSS لـ .NET قراءتها وكتابتها.

تنسيقامتداداستيرادتصديرملاحظات
OBJ.objنعمنعممع مواد MTL
STL.stlنعمنعمثنائي + ASCII
glTF 2.0.gltfنعمنعمتنسيق JSON
GLB.glbنعمنعمglTF ثنائي
FBX.fbxنعمنعمأنماط ASCII و binary
Collada.daeنعمنعم
3MF.3mfنعمنعمتنسيق تصنيع ثلاثي الأبعاد يعتمد على ZIP

دليل اختيار الصيغ

اختيار الصيغة المناسبة يعتمد على حالة الاستخدام الخاصة بك:

  • OBJ مثالي عندما تحتاج إلى أقصى توافق عبر أدوات 3D. تقريبًا كل تطبيق نمذجة يمكنه قراءة وكتابة OBJ. يعمل بشكل جيد لتبادل بيانات الشبكة لكنه يحمل فقط معلومات مادة أساسية عبر ملفات MTL المرافقة.
  • STL هو التنسيق المفضل لتدفقات عمل الطباعة ثلاثية الأبعاد. يخزن الهندسة المثلثية الخام دون مواد أو هيكلية مشهد، وهو بالضبط ما تتوقعه برامج التقطيع.
  • glTF هو المعيار الحديث للويب والـ 3D في الوقت الحقيقي. يدعم مواد PBR، هياكل المشاهد الكاملة، وصُمم للنقل الفعال. استخدم glTF عند بناء عارضات ويب أو استهداف أي خط أنابيب للتصيير في الوقت الحقيقي.
  • FBX متكامل بعمق في عمليات تطوير الألعاب وتدفقات عمل إنشاء المحتوى الرقمي. يدعم بيانات مشهد غنية تشمل الهياكل والمواد. Aspose.3D FOSS لـ .NET يدعم FBX استيراد وتصدير في كل من وضعية ASCII والوضع الثنائي.
  • 3MF هو تنسيق طباعة ثلاثية الأبعاد حديث يدعم بيانات وصفية غنية، مواد، ومشاهد متعددة الكائنات في حزمة واحدة مبنية على ZIP.

القيود المعروفة

Scene.Render() هو غير مدعوم في نسخة FOSS. استدعاء هذه الطريقة سيؤدي إلى رمي NotImplementedException. تم تصميم المكتبة لمعالجة 3D القائمة على الملفات – التحميل، التعديل، التحويل، وحفظ النماذج – بدلاً من التصيير في الوقت الحقيقي إلى شاشة.

المصدر المفتوح والترخيص

تم إصدار Aspose.3D FOSS لـ .NET تحت رخصة MIT. هذا يعني أنك حر في:

  • استخدام المكتبة في التطبيقات التجارية والملكية.
  • عدّل شفرة المصدر لتناسب احتياجاتك.
  • وزّع المكتبة كجزء من برنامجك الخاص.

لا توجد رسوم ملكية، ولا حدود للاستخدام، ولا متطلبات إسناد تتجاوز ما تحدده رخصة MIT.

الكود المصدري الكامل مستضاف على GitHub، والمساهمات مرحب بها: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-NET

متطلبات النظام

المتطلباتالتفاصيل
.إصدار .NET10.0 or later
التبعياتلا شيء (C# نقي)
المنصاتأي منصة تشغّل .NET
مدير الحزمNuGet

البدء

إليك الموارد التي تساعدك على البدء والعمل:

  • التوثيق – الأدلة الشاملة وجولات API متوفرة على Aspose.3D موقع التوثيق.
  • قاعدة المعرفة – مقالات إرشادية عملية ونصائح استكشاف الأخطاء في Aspose.3D KB.
  • مرجع API – مرجع تفصيلي للفئات والطرق في مرجع Aspose.3D API.
  • الكود المصدري – تصفح وساهم على GitHub.
  • NuGet – الحزمة منشورة كـ Aspose.3D على NuGet.

حالات الاستخدام الشائعة

إليك بعض السيناريوهات العملية التي يناسب فيها Aspose.3D FOSS لـ .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

قبل دمج أصل ثلاثي الأبعاد في تطبيقك، قد ترغب في التحقق من محتوياته – فحص عدد العقد، التحقق من الهندسة، أو التأكد من وجود العناصر المتوقعة:

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");

ما التالي

في المشاركات القادمة، سنغطي:

  • غوص عميق في الميزات الرئيسية لواجهة برمجة تطبيقات مخطط المشهد، والمواد، وأدوات الرياضيات.
  • دليل عملي للعمل مع كل تنسيق ثلاثي الأبعاد مدعوم – OBJ، STL، glTF، FBX، و3MF – بما في ذلك خيارات التحميل/الحفظ وأنماط التحويل الجماعي.

تابعنا، ولا تتردد في استكشاف المكتبة ومشاركة ملاحظاتك على GitHub.