الصفحة الرئيسية/ التقنية / مكتبة Assimp : دورة OpenGL لغة c++

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


for Large تمت الكتابة بواسطة : محمد



مكتبة 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.

وقت النشر : 2023-02-04 21:34:49 ·

1    التصنيفات






2    مقالات من التقنية

يعتمد هذا الموقع على عرض الإعلانات في تحقيق الدخل ، نشكر تفهمكم الدائم ونتمنى لكم قضاء وقت رائع ... وشكراً :D .