headerlogo

الأرشيف وأقسام الموقع
ابحث عن منشور

لوغو هايبر أكتيف


تظهر نتائج البحث هنا..

مكتبة Assimp : دورة OpenGL لغة c++

2023-02-04 21:34:49 تم النشر بتاريخ

مكتبة Assimp هي احدى النماذج التي يتم الاعتماد عليها كثيرًا في بناء النماذج. بالتالي نلاحظ أن جميع الدروس السابقة كانت تتناول رسم النماذج بعيدًا عن مكتبة Assimp.[1]

لكن ماذا لو أننا نريد استدعاء نماذج أخرى أكثر تعقيدًا في بيئة الرسم.[1]لقد وفرت لنا برامج الرسم مجموعة كبيرة من الأدوات التي من خلالها سوف يتم استدعاء أي نموذج إلى بيئة الرسم عبر مكتبة Assimp.[1]

بالتالي تتضمن هذه البرامج اصطلاح 3D modeling tools. على سبيل المثال يعتبر برنامج Blender و 3D Max و Maya واحدا منها. تمكنك هذه البرامج من رسم واستدعاء أكثر مكونات الرسم تعقيدا في فضاء 3D مع الحفاظ على معادلات الإضاءة والتمثيل كما هي.[1]

 

 



مكتبة Assimp


تقوم مكتبة Assimp بدور عمليات الإستدعاء التي تم رسمها مسبقًا في برامج الرسم المعقدة مثل Blender.[1] بالتالي يمكنك استدعاء كل نموذج عن طريق توليد الإحداثيات والإتصال بها من جديد في المشروع.[1] تحتوي مكتبة OpenGL على عوامل مشتركة مع هذه البرامج لأنها مكتبة قياسية. ما يعني أنها مدمجة في غالبية برامج الرسم. وقد وفرت لنا مكتبة Assimp استدعاء جميع عناصر Vertex و texture  إن وجدت.[1]

 

بالتالي توفر لك أحدث البرامج امكانية التصدير بصيغة obj حيث أنها تحتوي على بيانات النموذج الأساسية مثل الألوان والإحداثيات وقابلية استقبال إضاءة diffuse و specular.[1] بينما توفر لك تقنية Collada من شركة sony صيغة ملفات قد تشمل بيانات أكثر تعقيدًا عند عمليات الاستدعاء. على سبيل المثال , تعد الحركة ومحركات Animation واحدة منها.[1]  

 

على سبيل المثال , تساعدك مكتبة Assimp على ابتكار آلية متطورة وموحدة في مناداة النماذج. يمكن اعتبار UV الخاصة بــ Texture و أيضًا Indices المتعلقة بالمضلعات إحدى أدوات تشكيل النماذج. وبالتالي عند تمكين الشيفرة الإفتراضية من توحيد عمليات الاستدعاء سيسهل على المبرمجين بناء العالم الإفتراضي بشكل قياسي مع الأخذ بامكانيات كل نموذج.

 

تستدعي منك المكتبة أيضًا الإلمام بأساسيات البرمجة من تعريف عناوين الإتصال بالكود وأماكن وجودها. وكذلك الأمر بالنسبة لتضمين الصفحات وخاصة في المشاريع الكبيرة.  


مكتبة استدعاء النماذج


يمكن اعتبار مكتبة Assimp أداة قوية في استدعاء جميع صيغ ملفات الرسم. تمتثل إلى اصطلاح Open Asset Import Library.[1] بالتالي فهي قادرة على استدعاء عشرات بل مئات نماذج الرسم ذات الصيغ المختلفة. تختصر هذه المكتبة الكثير من أكواد الرسم static والتي تمثل الإحداثيات وخصائص الإضاءة. ما يعني أنك أمام كبسولة برمجية سوف تأخذ عن كاهلك الكثير من المهام.[1]

 

يحتوي النموذج على عقدة node وتتكون كل عقدة من بيانات الرسم والإحداثيات بالإضافة إلى مجموعة من children التي تتولى بعض المهام.[1] تتمثل إحدى مراحل الرسم وأول مرحلة هي Scene التي تحتوي على materials و meshes الخاصة بالكائن بالإضافة إلى احتوائها على عنوان العقدة.[1] بينما تتكون مرحلة Root node من عقد children للنموذج. يتم من خلالها ضبط نقاط الإحداثيات للمشهد.[1]

 

مرحلة Mesh تتكون من جميع بيانات النموذج بما فيها بيانات الإستدعاء و vertex و normal vectors بالإضافة إلى تنسيقات texture. على سبيل المثال فإن أول ما يمكن العمل فيه هو تحميل النموذج في مرحلة scene object. بالتالي استرجاع كائنات  Mesh المطابقة له.[1]  

توضيح وظائف الرسم

قد يقع الكثيرين ببعض الأخطاء الناجمة عن التمييز بين Vertex و Normal vectors. حيث تمثل إحداثيات Vertex نقاط الرسم مثل العمق و xyz الخالية من التعبئة. بينما يتم تعبئة هذه النقاط بعناصر normal وهي الأسطح التي يتم رؤيتها على جسم الكائنات. يمكن التعبير عن كافة الأسطح بكل من المربعات والمثلثات. وتعتبر المثلثات حجر الأساس في تكوين المربعات وأية عناصر هندسية أخرى.

 

على سبيل المثال , تعبر أيضًا Normal عن تلوين تلك الأسطح بألوان مثل الأحمر والأخضر أو الأبيض. بينما يتم الوصول أخيرا عن طريق Mesh إلى نماذج UV المتعلقة بــ Texture. وهي الطبقة الثالثة التي يتم من خلالها تركيب الصور مثل الحجارة أو الأعشاب أو الأخشاب. ولا يمكن بناء طبقة Texture دون المرور بمرحلتي Vertex و Normal.

بينما تستطيع تكوين وبناء الأسطح الخام دون الإستعانة بــ Texture. وبالتالي في حال كان لديك مشروع كبير يمكنك تمكين وتعطيل إحدى أدوات الرسم باستخدام هيكلة البيانات.  


تحميل مكتبة Assimp


 

تتطلب مكتبة Assimp أيضا الإستعانة بملف assimp.dll.[1]

يعتبر ملف assimp واحدًا من أدوات السواقة الخاصة بالمكتبة. يتم من خلاله التعرف التلقائي على الدوال البرمجية في الداخل. كما يسهل من خلالها الهروب من الأخطاء الناتجة عن نقص في ملفات المكتبة.  

المراجع
  1. [1]^ كتاب ـــــــ offline learn OpenGL created by Joey de Vries.
  2. [2]^ Collada format.
  3. [3] ^ مصادر Assimp.