OpenSceneGraph

OpenSceneGraph هي واجهة برمجة تطبيقات رسومات ثلاثية الأبعاد مفتوحة المصدر (مكتبة أو إطار عمل)، [ 2 ] يستخدمها مطورو التطبيقات في مجالات مثل المحاكاة المرئية وألعاب الكمبيوتر والواقع الافتراضي والتصور العلمي والنمذجة .

كُتبت مجموعة الأدوات بلغة C++ القياسية باستخدام OpenGL ، [ 2 ] وتعمل على أنظمة تشغيل متنوعة تشمل Microsoft Windows و macOS و Linux و IRIX و Solaris و FreeBSD . ومنذ الإصدار 3.0.0، يدعم OpenSceneGraph أيضًا تطوير التطبيقات لمنصات الهواتف المحمولة، وتحديدًا iOS و Android .

اعتبارًا من عام 2021، حلّ مشروع VulkanSceneGraph محلّ المشروع الحالي، وهو مكتبة مبنية على Vulkan. [ 3 ] ويخضع OpenSceneGraph حاليًا لمرحلة الصيانة منذ عام 2019.

تاريخ

بدأ دون بيرنز مشروع OpenSceneGraph عام ١٩٩٨. وانضم روبرت أوسفيلد إلى المشروع خلال عام ١٩٩٩، حيث عمل على نقل المكونات الجاهزة إلى نظام مايكروسوفت ويندوز. أصبح المشروع مفتوح المصدر في سبتمبر ١٩٩٩، وتم إنشاء الموقع الإلكتروني الرسمي للمشروع . ومع اقتراب نهاية العام، تولى أوسفيلد إدارة المشروع وبدأ عملية إعادة هيكلة شاملة لقاعدة البيانات البرمجية الحالية، مع التركيز على التحديث، وتبني معايير لغة C++ الحديثة وأنماط التصميم .

في أبريل 2001، ونظرًا لتزايد عدد المستخدمين واهتمام الجمهور، أنشأ روبرت أوسفيلد شركة OpenSceneGraph Professional Services، التي تقدم الدعم التجاري والاستشارات وخدمات التدريب. وهذا يمثل اكتمال احترافية المشروع.

كان الإصدار الأول المستقر الرسمي من OpenSceneGraph هو الإصدار 1.0، الذي صدر عام 2005. تلاه إصدار موسع 2.0 عام 2007، أضاف دعمًا لأنظمة المعالجات متعددة النوى ووحدات معالجة الرسومات المتعددة، والعديد من مجموعات NodeKits المهمة، واستخدام نظام البناء الموحد متعدد المنصات CMake . كما تم إصدار كتب وأدلة للمستخدمين. [ 4 ]

يشهد المشروع نموًا سريعًا وشعبية متزايدة منذ ذلك الحين. يوجد أكثر من 530 مساهمًا مسجلين في الإصدار المستقر الحالي، وتحتوي القائمة البريدية الرسمية على آلاف الأسماء. [ 5 ]

في عام 2019، تم نقل المشروع إلى مرحلة الصيانة، وتم توجيه جهود التطوير الرئيسية إلى المشروع اللاحق VulkanSceneGraph. [ 6 ]

سمات

نظرة عامة على بنية OpenScenegraph.

الميزات في الإصدار 1.0: [ 7 ]

  • تطبيق غني بالميزات ومعتمد على نطاق واسع لرسم بياني للمشاهد
  • دعم ميزات تحسين الأداء
    1. مخروط الرؤية ، والميزات الصغيرة، وإزالة الحجب
    2. مستوى التفاصيل
    3. فرز الحالة وتحديث الحالة الكسول
    4. مسارات OpenGL السريعة وأحدث الإضافات
    5. المعالجة المتعددة وتحسين قواعد البيانات
  • دعم OpenGL، من الإصدار 1.1 إلى الإصدار 2.0 بما في ذلك أحدث الإضافات
  • دعم متكامل للغة تظليل OpenGL، تم تطويره بالتعاون مع 3Dlabs
  • يدعم البرنامج مجموعة واسعة من تنسيقات الصور ثنائية الأبعاد وقواعد البيانات ثلاثية الأبعاد، مع توفر برامج تحميل لتنسيقات مثل OpenFlight و TerraPage و OBJ و 3DS و JPEG و PNG و GeoTIFF
  • تأثيرات الجسيمات
  • دعم نص TrueType المضاد للتشويش
  • دعم سلس لكائنات إطار المخزن المؤقت ، و pbuffers ، وتأثيرات عرض إطار المخزن المؤقت على النسيج
  • دعم الترحيل متعدد الخيوط لقواعد البيانات، والذي يمكن استخدامه بالتزامن مع جميع قواعد البيانات ثلاثية الأبعاد ومحملات الصور.
  • إنشاء قاعدة بيانات جغرافية مكانية واسعة النطاق تغطي كامل الكرة الأرضية، مع تقسيمها إلى صفحات.
  • دعم الاستبطان للمكتبات الأساسية يسمح للتطبيقات الخارجية بالاستعلام عن جميع الفئات في مخطط المشهد والحصول عليها وتعيينها والعمل عليها، عبر واجهة عامة
  • دعم متعدد الخيوط وقابل للتكوين لأجهزة متعددة المعالجات المركزية/متعددة وحدات معالجة الرسومات

الميزات في الإصدار 2.8.3 [ 8 ]

الميزات في الإصدار 2.8.4: [ 9 ]

  • دعم بناء VS2010

الميزات في الإصدار 3.0.0: [ 10 ]

  • يدعم OpenGL ES 1.1 و OpenGL ES 2.0
  • يدعم OpenGL الإصدارين 3.x و 4.x بالإضافة إلى ملحقات OpenGL المرتبطة بهما
  • دعم نظام Android على الأجهزة اللوحية والهواتف
  • دعم نظام التشغيل iOS على الأجهزة اللوحية والهواتف (تم بالفعل قبول تطبيقات المستخدمين النهائيين على متجر التطبيقات).
  • تقديم تطبيق Present3D للعروض التقديمية ثلاثية الأبعاد الغامرة
  • مُسلسلات جديدة قابلة للتوسيع توفر تنسيقات ملفات أصلية جديدة: .osgb ثنائي، و .osgt ASCII، و .osgx XML
  • بنية بيانات وصفية جديدة قابلة للتسلسل ومعممة
  • مكتبة osgQt الجديدة التي تجعل دمج !OpenSceneGraph مع Qt أمرًا سهلاً، بما في ذلك تصفح الويب عبر QWebKit.
  • إضافة FBX جديدة مبنية على Autodesk FBX DSK تُمكّن من قراءة تنسيق .fbx للتأليف ثلاثي الأبعاد وتبادل البيانات
  • إضافة DirectShow جديدة لمعالجة الأفلام على نظام التشغيل Windows
  • إضافة جديدة لـ POV لتصدير المشهد إلى تنسيق POV-Ray، مما يتيح استخدام POV-Ray لإجراء تتبع الأشعة الواقعي.
  • إضافة جديدة لقراءة ملفات Ply
  • إضافة مُحسّنة لبرنامج 3ds لقراءة وكتابة ملفات .3ds
  • إضافة DXF مُحسّنة لقراءة وكتابة ملفات DXF
  • يدعم إصدار Cocoa و 64 بت لنظام التشغيل OSX

سجل إصدارات النسخة المستقرة

إصدارتاريخ الافراج عنه
3.05 فبراير 2013 [ 11 ]
3.224 يوليو 2013 [ 12 ]
3.420 يوليو 2015 [ 13 ]
3.4.128 أغسطس 2017 [ 14 ]
3.67 أبريل 2018 [ 15 ]
3.6.128 مايو 2018
3.6.229 يونيو 2018
3.6.314 سبتمبر 2018
3.6.426 يوليو 2019
3.6.531 يناير 2020

بنيان

يمكن تقسيم بنية المكتبة إلى ثلاث مجموعات فرعية رئيسية - مكتبة OpenSceneGraph الأساسية، وosgViewer، ومجموعة من NodeKits.

جوهر

يمكن تقسيم قاعدة مكتبة OpenSceneGraph إلى أربع وحدات رئيسية.

osg

يُوفّر جوهر مكتبة OpenSceneGraph فئاتٍ وأساليبَ لإنشاء ومعالجة مخطط المشهد . يحتوي على فئاتٍ تُمثّل أنواعًا مُختلفةً من العُقد ، وهندسة المشهد، وتجريد حالة OpenGL ، والتحويلات الهندسية ، بالإضافة إلى فئاتٍ رياضيةٍ لعمليات المتجهات والمصفوفات ثنائية وثلاثية الأبعاد. كما تتضمن إدارةً مُتقدّمةً للذاكرة.

OpenThreads

يحتوي مشروع OpenSceneGraph على مكتبة ترابط تُسمى OpenThreads ، وهي نموذج ترابط خفيف الوزن ومتعدد المنصات . تهدف هذه المكتبة إلى توفير واجهة ترابط كائنية التوجه (OO) بسيطة وكاملة لمبرمجي لغة C++ . وهي مستوحاة بشكل عام من واجهة برمجة تطبيقات ترابط Java ومعايير POSIX Threads .

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

بدلاً من ذلك، تم اختيار أسلوب معقد نوعاً ما - ولكنه فعال - لتوفير إخفاء البيانات/التنفيذ اللازم . يستخدم هذا الأسلوب مؤشرات فارغة خاصة لتغليف البيانات الخاصة بالكائن. تشير هذه المؤشرات الفارغة فعلياً إلى هياكل بيانات ملموسة، ولكنها توفر واجهة موحدة لـ dso.

يتمثل الهدف التصميمي لـ OpenThreads في إنشاء تطبيقات محسّنة باستخدام هياكل المعالجة المتعددة المحسّنة للمنصة مثل طرق sproc المستخدمة في IRIX وخيوط Windows.

أداة osgUtil

تحتوي مكتبة osgUtil على وظائف وأدوات خلفية للعرض ، تتولى معالجة اجتياز مخطط المشهد ، وتحسين العرض ، وتحويل المشهد إلى سلسلة من استدعاءات واجهة برمجة تطبيقات OpenGL . كما توفر وسائل للتفاعل الأساسي مع المشهد، مثل اختيار الكائنات.

osgDB

تُستخدم هذه المكتبة لتحميل ملفات النماذج ثلاثية الأبعاد. وهي تدعم العديد من تنسيقات البيانات ثنائية وثلاثية الأبعاد . تدعم المكتبة أكثر من 50 تنسيقًا مختلفًا، وأكثرها شيوعًا هي تنسيقات البيانات ثلاثية الأبعاد، مثل COLLADA (.dae)، و LightWave (.lwo)، و Wavefront (.obj)، وOpenFlight (.flt)، و 3D Studio Max (.3ds)، و DirectX (.x)، وغيرها الكثير. كما توفر OpenSceneGraph تنسيق ASCII .osg خاصًا بها . وتتوفر برامج تصدير إلى تنسيق .osg لبرامج Blender و Maya و3D Studio Max.

تشمل تنسيقات الصور المدعومة .rgb و .gif و .jpg و .png و .tiff و .pic و .bmp و .dds و .tga و quicktime .

توفر هذه الوحدة أيضًا تجريدًا لأجهزة الإدخال/الإخراج. أما المكونات الإضافية الأخرى لتحميل تنسيقات الملفات، فهي مسجلة في قاعدة بيانات osgDB.

osgGA

هذه مكتبة تجريد واجهة المستخدم الرسومية المطلوبة لمنصات مختلفة.

osgViewer

توفر مكتبة osgViewer طريقة سريعة وسهلة لعرض المشهد الرسومي. كما أنها عبارة عن تجريد مستقل عن النظام الأساسي لواجهات نظام النوافذ المختلفة .

منتج osg

يأتي نظام OSG مزودًا أيضًا ببرنامج osgProducer ، وهو مجرد عارض مستقل عن النظام الأساسي يدعم سياقات رسومية متعددة وتعدد الخيوط. [ 16 ] [ 17 ]

NodeKits

يحتوي توزيع المشروع أيضًا على مجموعة متنوعة مما يُسمى بـ "NodeKits" . وهي عبارة عن حلول لمشاكل شائعة، بالإضافة إلى مكونات تطبيقات ثلاثية الأبعاد وخوارزميات رسومية أكثر تطورًا تُستخدم بكثرة. ومن بين أهمها:

  • osgAnimation — استخدام النماذج الهيكلية، والتحريك، والتحويل.
  • osgFX — المؤثرات الخاصة ومعالجة الصور اللاحقة.
  • osgManipulator — التلاعب التفاعلي بالمشاهد ثلاثية الأبعاد.
  • osgParticle — استخدام متقدم لنظام الجسيمات .
  • osgQt — التكامل مع مجموعة أدوات Qt ودمج عناصر QtGUI في تطبيقات OSG.
  • osgShadow — إطار عمل لتقنيات عرض الظلال.
  • osgTerrain — عرض تضاريس شامل .
  • osgText — خطوط عالية الجودة مضادة للتشويش، ودعم خطوط TrueType و FreeType.
  • osgVolume — عرض الحجم ومعالجة البيانات الحجمية.
  • osgWidget — إنشاء واجهة مستخدم رسومية بسيطة.

الاستقبال والتبني

لا يوفر OpenSceneGraph أي وظائف لمنطق الألعاب المتقدم، فهو أداة مخصصة للعرض فقط. توجد العديد من محركات الألعاب المتكاملة (أو ما يُسمى بالألعاب الجادة ) التي تستخدم OSG كأساس لعرض الرسومات، وأكثرها شيوعًا هو Delta3D .

توجد مجموعة كبيرة ومتنوعة من البرامج المبنية على منصة OpenSceneGraph، من بينها Virtual Terrain Project و ViewTec TerrainView . تضم قائمة مستخدمي هذه المنصة شركات مثل بوينغ ، وناسا ، و FlightGear ، وNorcontrol ، وغيرها الكثير. [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]

على مستوى مجتمع المصادر المفتوحة، اعتمدت العديد من المشاريع نظام OSG كخلفية عرض:

  • برنامج محاكاة الطيران FlightGear
  • OpenMW (إعادة إنشاء محرك مفتوح المصدر للعبة Morrowind )

تلقى OpenSceneGraph تطبيقًا بلغة جافا سكريبت/WebGL يسمى OSG.JS والذي يستخدمه العديد من عارضات المشاهد ثلاثية الأبعاد عبر الإنترنت بما في ذلك Sketchfab و Clara.io .

يجري حاليًا تطوير غلاف من لغة C++ إلى جافا سكريبت من خلال Emscripten OGStudio .

ومن بين المنتجات الأخرى التي تستخدم OSG، يجب ذكر ما يلي:

انظر أيضاً

مراجع

  1. "إصدارات مستقرة" . www.openscenegraph.com .
  2. 1 2 آن رواس؛ كريستوفر جولد (2008). التقدم في معالجة البيانات المكانية: الندوة الدولية الثالثة عشرة حول معالجة البيانات المكانية . سبرينغر. ص 370. ISBN  978-3-540-68566-1.
  3. "مشروع VulkanSceneGraph" . openscenegraph.github.io . تم ​​الاطلاع عليه بتاريخ 2021-07-05 .
  4. مارتز، ب.: دليل البدء السريع لبرنامج OpenSceneGraph. لويزفيل، الولايات المتحدة الأمريكية، 2007.
  5. "الدعم/التاريخ - osg" . openscenegraph.org . مؤرشف من الأصل في 26 مايو 2015.
  6. "مشروع VulkanSceneGraph" . www.openscenegraph.com .
  7. "أخبار OSG" . openscenegraph.org . مؤرشف من الأصل بتاريخ 9 يونيو 2011. تم الاطلاع عليه بتاريخ 20 فبراير 2010 .
  8. "OpenSceneGraph يضيف ميزات جديدة لتطبيقات الرسومات ثلاثية الأبعاد" . 5 أبريل 2010. مؤرشف من الأصل في 15 أبريل 2010.
  9. http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt
  10. http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt
  11. توريس، جوردي. "إصدار OpenSceneGraph 3.0" . www.openscenegraph.org . تاريخ الاسترجاع: 23-09-2017 .
  12. "إصدار OpenSceneGraph 3.2" . openscenegraph.github.io . تم ​​الاطلاع عليه بتاريخ 23-09-2017 .
  13. "إصدار OpenSceneGraph-3.4" . openscenegraph.org . تم الاطلاع عليه بتاريخ 23-09-2017 .
  14. "إصدار OpenSceneGraph-3.4.1" . openscenegraph.org . تم الاطلاع عليه بتاريخ 23-09-2017 .
  15. "إصدار OpenSceneGraph-3.6" . openscenegraph.org . 7 أبريل 2018. تم الاطلاع عليه بتاريخ 14 أغسطس 2018 .
  16. أيلت، روث. "مقدمة إلى الرسم البياني للمشهد المفتوح" (ملف PDF) . جامعة هيريوت وات .
  17. "مقدمة إلى OpenSceneGraph" . openscenegraph.sourceforge.net . تم الاطلاع عليه بتاريخ 2021-07-05 .
  18. "حالات الاستخدام" . www.openscenegraph.com .
  19. "OpenSceneGraph" . openscenegraph.github.io . تم ​​الاطلاع عليه بتاريخ 13 مارس 2024 .
  20. "مشروع التضاريس الافتراضية" . vterrain.org .
  21. "منتجات شركة فيوتك" . www.viewtec.net . مؤرشف من الأصل بتاريخ 28-02-2009.
  22. "Delta3dengine 2023" . easd-design.com . تم الاطلاع عليه بتاريخ 13 مارس 2024 .
  • www.openscenegraph.org - الموقع الرسمي للمشروع
  • ملفات AlphaPixel OSG الثنائية - ملفات ثنائية مُجمّعة مسبقًا لأنظمة التشغيل Windows و Mac و Linux x86 و x64.
  • SigmaOSG - دروس OpenSceneGraph (تحتوي على جميع مواد OSGHelp السابقة من موقع OSGHelp المتوقف عن العمل)
  • مخططات المشاهد و Openscenegraph لتطوير برامج ثلاثية الأبعاد
  • OpenSceneGraph - صفحة معلومات المكتبة على موقع www.OpenGL.org (إحدى المكتبات الأربع المُروّجة)