أوبن إنفينتور

Open Inventor ، المعروف سابقًا باسم IRIS Inventor ، هو مجموعة أدوات رسومات ثلاثية الأبعاد مكتوبة بلغة C++، تعتمد على البرمجة الكائنية ، ومصممة من قبل شركة SGI لتوفير طبقة برمجة متقدمة لـ OpenGL . تتمثل أهدافه الرئيسية في تحسين تجربة المبرمجين وكفاءتهم. يتوفر Open Inventor كبرنامج احتكاري ، بالإضافة إلى كونه برنامجًا مجانيًا ومفتوح المصدر ، ويخضع لمتطلبات رخصة جنو العمومية الصغرى (LGPL)، الإصدار 2.1.

كان الهدف الرئيسي هو جعل برمجة الرسومات ثلاثية الأبعاد في متناول الجميع من خلال تقديم واجهة برمجة تطبيقات كائنية التوجه، مما يسمح للمطورين بإنشاء مشاهد معقدة دون الحاجة إلى التعامل مع تعقيدات OpenGL منخفضة المستوى. تضمنت مجموعة الأدوات ميزات مثل مخططات المشاهد، والأشكال المُعرَّفة مسبقًا، والإزالة التلقائية للعناصر المخفية لتبسيط إدارة المشاهد. بينما ركز برنامج Open Inventor على سهولة الاستخدام، ركز مشروع OpenGL Performer، الذي انبثق من السياق نفسه، على تحسين الأداء. لاحقًا، اندمج المشروعان في محاولة لتحقيق التوازن بين سهولة الاستخدام والأداء، مما أدى إلى ظهور مبادرات مثل Cosmo 3D وOpenGL++. مرّت هذه المشاريع بمراحل تطوير وتحسين مختلفة، مما ساهم في تطور نماذج برمجة الرسومات ثلاثية الأبعاد.

التاريخ المبكر

في الفترة ما بين عامي 1988 و 1989، طلب وي ين من ريك كاري قيادة مشروع IRIS Inventor. كان هدفهم إنشاء مجموعة أدوات تُسهّل تطوير تطبيقات الرسومات ثلاثية الأبعاد. استندت الاستراتيجية إلى فرضية أن عدد مطوري تطبيقات الرسومات ثلاثية الأبعاد باستخدام IRIS GL كان قليلاً، نظرًا للوقت الطويل الذي يستغرقه ذلك مع واجهة المستخدم منخفضة المستوى التي توفرها IRIS GL. فإذا ما تم تبسيط برمجة الرسومات ثلاثية الأبعاد، من خلال استخدام واجهة برمجة تطبيقات كائنية التوجه، سيزداد عدد مطوري تطبيقات الرسومات ثلاثية الأبعاد، وستستفيد شركة SGI من ذلك. لذا، كان شعارهم دائمًا "سهولة الاستخدام" قبل "الأداء"، وسرعان ما انتشر شعار "برمجة الرسومات ثلاثية الأبعاد للبشر" على نطاق واسع.

يستخدم

OpenGL (OGL) هي واجهة برمجة تطبيقات منخفضة المستوى ، تستقبل قوائم من المضلعات البسيطة وتعرضها بأسرع ما يمكن. ولتنفيذ مهمة عملية كـ"رسم منزل"، يجب على المبرمج تقسيم المجسم إلى سلسلة من تعليمات OGL البسيطة وإرسالها إلى محرك العرض. تكمن إحدى المشكلات في أن أداء OGL شديد الحساسية لطريقة إرسال هذه التعليمات إلى النظام، مما يتطلب من المستخدم معرفة التعليمات التي يجب إرسالها وترتيبها، ويجبره على انتقاء البيانات بعناية لتجنب إرسال مجسمات غير مرئية في الصورة الناتجة. بالنسبة للبرامج البسيطة، يتطلب الأمر جهدًا برمجيًا هائلاً لمجرد البدء.

تم تطوير برنامج Open Inventor (OI) لمعالجة هذه المشكلة، وتوفير طبقة أساسية مشتركة للبدء بالعمل عليها. يمكن اشتقاق الكائنات من عدد من الأشكال الجاهزة مثل المكعبات والمضلعات، ثم تعديلها بسهولة إلى أشكال جديدة. يتم وضع "العالم" المراد رسمه في مخطط مشهد يُشغّله برنامج OI، حيث يقوم النظام تلقائيًا بتطبيق تقنية إخفاء العناصر في المخطط. كما يتضمن OI عددًا من كائنات التحكم وأنظمة لتطبيقها على المشهد، مما يُسهّل مهام التفاعل الشائعة. وأخيرًا، يوفر OI أيضًا تنسيق ملف مشترك لتخزين "العوالم"، بالإضافة إلى الكود اللازم لحفظ أو تحميل العالم تلقائيًا من هذه الملفات. وبذلك، يمكن كتابة تطبيقات ثلاثية الأبعاد أساسية في بضع مئات من الأسطر باستخدام OI، وذلك بربط أجزاء من مجموعة الأدوات معًا باستخدام كود "الربط".

من عيوب OI أنها تميل إلى أن تكون أبطأ من البرمجة اليدوية، إذ من المعروف صعوبة تحسين أداء مهام الرسومات ثلاثية الأبعاد دون إعادة ترتيب البيانات في مخطط المشهد يدويًا. ومن المشاكل العملية الأخرى أن OI لا يمكن استخدامها إلا مع تنسيق ملفاتها الخاص، مما يجبر المطورين على كتابة برامج تحويل من وإلى النظام الداخلي.

مؤدي

بعد مرور عام تقريبًا على مشروع Inventor، بدأت تتبلور فلسفة مختلفة. فبدلًا من تسهيل كتابة التطبيقات على أنظمة SGI، تغير الهدف ليصبح من الصعب كتابة تطبيقات بطيئة. انفصل أعضاء فريق Inventor لتشكيل فريقهم الخاص، الذي وضع الأساس لمشروع OpenGL Performer . اعتمد Performer أيضًا على مخطط مشهد داخلي، ولكن سُمح له بتعديله لتحسين السرعة حسب الحاجة، حتى أنه حذف بعض العناصر والمضلعات "الأقل أهمية" للحفاظ على مستويات أداء مضمونة. كما استخدم Performer عددًا من العمليات لتشغيل المهام بالتوازي لزيادة الأداء، مما سمح بتشغيله (بإصدار واحد) على معالجات متعددة. على عكس Inventor، ظل Performer مشروعًا احتكاريًا، مما منح SGI المرونة اللازمة لتعديل واجهة برمجة التطبيقات (API) حسب الحاجة لمواكبة أحدث تحسينات الأجهزة.

منتصف التسعينيات

في منتصف التسعينيات، تبيّن أنه لا يوجد سبب وجيه يمنع دمج النظامين، مما أدى إلى واجهة برمجة تطبيقات (API) واحدة عالية المستوى تجمع بين الأداء العالي وقابلية البرمجة. بدأت شركة SGI العمل على مشروع آخر يهدف إلى دمج النظامين، وتُوّج في النهاية ببرنامج Cosmo 3D . إلا أن Cosmo واجه عددًا من المشاكل العملية التي كان من الممكن تجنبها بتصميم أفضل.

في نهاية المطاف، تضافرت كل هذه الأفكار لتُشكّل مشروع OpenGL++ ، بالتعاون مع إنتل وآي بي إم ودي إي سي . كان OpenGL++ في جوهره نسخة مُحسّنة وأكثر انفتاحًا من Cosmo 3D، فتوقف العمل على Cosmo وتفرّغت SGI تمامًا لتطوير OpenGL++. استمر مشروع OpenGL++ لفترة طويلة حتى توقف، ثم حاولت SGI مجددًا مع مايكروسوفت مشروع Fahrenheit المشابه ، والذي فشل أيضًا. في عام 1994، منحت SGI ترخيص Open Inventor لشركتين تطوير خارجيتين، هما Template Graphics Software (TGS) وPortable Graphics؛ وفي عام 1996، استحوذت TGS على Portable Graphics، لتصبح بذلك المرخّص الوحيد.

التاريخ الحديث

بعد سنوات عديدة من توفره حصريًا بموجب ترخيص احتكاري من شركة TGS (التي أصبحت الآن FEI )، أُصدر برنامج Inventor بموجب ترخيص LGPL مفتوح المصدر في أغسطس 2000، وهو متوفر الآن من شركة SGI. في نفس الفترة تقريبًا، أصدرت شركة SIM (Systems in Motion) مكتبة Coin3D API المُستنسخة. استحوذت مجموعة Kongsberg لاحقًا على SIM وأعادت تسميتها إلى Kongsberg SIM . كُتبت مكتبة Coin من الصفر بطريقة "غرفة نظيفة" ، ولا تشترك في أي كود مع مكتبة SGI Inventor الأصلية، ولكنها تُطبّق نفس واجهة برمجة التطبيقات (API) لأسباب تتعلق بالتوافق. أنهت Kongsberg تطوير Coin3D في عام 2011، [ 2 ] وأصدرت الكود بموجب ترخيص BSD ثلاثي البنود.

لا يتم تحديث النسخة مفتوحة المصدر من SGI، ولم تُبدِ الشركة أي التزام بتطوير المكتبة. مع ذلك، تُستخدم هذه النسخة في MeVisLab (من MeVis Medical Solutions AG وFraunhofer MEVIS)، ويستمر تطويرها. [ 3 ] لا يزال برنامج Thermo Scientific Open Inventor قيد التطوير، وقد أُضيفت إليه تحسينات عديدة على واجهة برمجة التطبيقات (API) الأصلية لبرنامج Inventor، وذلك في مجالات التصوير الطبي ، وحوسبة الصور الطبية ، وعلم الزلازل الانعكاسي ثلاثي الأبعاد ، ونمذجة مكامن النفط .

لا تزال واجهة برمجة تطبيقات Open Inventor تُستخدم على نطاق واسع في أنظمة التصور العلمي والهندسي حول العالم لتطوير برامج تطبيقات ثلاثية الأبعاد معقدة. استحوذت شركة Mercury Computer Systems على شركة TGS عام 2004، ثم أصبحت شركة مستقلة باسم Visualization Sciences Group (VSG) في يونيو 2009. وفي عام 2012، استحوذت شركة FEI على VSG، ثم استحوذت عليها شركة Thermo Fisher Scientific Materials & Strengthural Analysis Division عام 2016، والتي تواصل تطوير ودعم Open Inventor.

مراجع

  1. "SGI - مركز المطورين مفتوح المصدر - Open Inventor" . مؤرشف من الأصل بتاريخ 19-10-2017 . تم الاطلاع عليه بتاريخ 25-10-2013 .
  2. "Coin3D / Coin / wiki / Home — Github" . GitHub . 30 مارس 2020.
  3. مختبر ميفيس