Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

كيفية تنصيب اوجر3د-بايثون

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • كيفية تنصيب اوجر3د-بايثون

    السلام عليكم ورحمة الله وبركاته

    ogre3d هو أفضل محرك ألعاب مفتوح المصدر حتي الآن
    python-ogre هو ربط للمحرك بلغة بايثون
    للمزيد من المعلومات عن المحرك زوروا موقع المحرك هنا www.ogre3d.org
    والمعرض الذي يحوي بعض اللقطات من الألعاب التي نفذت باستخدام ogre3d تجدونه هنا http://www.ogre3d.org/index.php?opti...lery&Itemid=55
    وهذان ردان لي في أحد المواضيع يحوي بعض هذه اللقطات
    http://www.maxforums.net/showpost.ph...1&postcount=64
    http://www.maxforums.net/showpost.ph...1&postcount=65
    ----------------
    كيفية التنصيب :
    1- نزل بايثون النسخة 2.51 من هنا
    http://www.python.org:80/ftp/python/...thon-2.5.1.msi

    2- نزل python-Ogre من هنا http://dfn.dl.sourceforge.net:80/sou...ler1.0RC1c.exe


    3- قم بتنصيب بايثون أولاً ثم قم بتنصيب بايثون-أوجر بعده


    4- حاول تشغيل بعض ال demos وإذا وجدت هذه الرسالة :

    this application has failed to start because d3dx9_31.dll was not found, Re-installing the application may fix this problem

    هذا يعني أنك تحتاج لأن تنزل آخر نسخة من الدايركت إكس من هنا :
    http://www.microsoft.com/downloads/d...displaylang=en



    الآن أوجر 3د - بايثون منصب علي جهازك , مبروك

    في الرد القادم درس تقديمي لكيفية الكتابة لبايثون-أوجر
    التعديل الأخير تم بواسطة عمرو; 17 / 05 / 2007, 11:15 PM. سبب آخر: إضافة مقدمة
    http://blog.amr-g.com

    إن امتلاك الحياة الدنيا عن قدرة وخبرة هو السبيل الأوحد لنصرة المبادئ والمذاهب... *محمد الغزالي*

  • #2
    شكرا ذ عمرو

    متابع لدروسك أخي الكريم

    تعليق


    • #3
      استيراد ملفات أوجر , هذه الملفات ضرورية لكل برنامج يريد أن يعمل علي أوجر3د
      كود:
      import ogre.renderer.OGRE as ogre
      import SampleFramework as sf
      import sys
      تعريف الأزرار , OIS هو نظام التحكم بالدخل المستخدم في أوجر3د , وهو اختصار كلمة Open Input System ويختص بالتحكم في الدخل مثل لوحة المفاتيح والفأرة , ونعرف هنا الزر N

      كود:
      import ogre.io.OIS as OIS
      KC_N = OIS.KC_N
      والآن فلنأتي للفئة الرئيسية في البرنامج myApplication

      كود:
       class myApplication(sf.Application):
      ولنأتي للوظيفة createScene وهي تنفذ عند بدء البرنامج , وبها يوضع الكود المطلوب تنفيذه لإعداد المشهد للعمل

      كود:
           def _createScene(self):
      يلزمنا أولاً أن ننشئ منظم المشهد الخاص بأوجر
      كود:
              sceneManager = self.sceneManager
      نعين الإضاءة العامة للمشهد بهذا الكود , نستخدم لون رمادي متوسط بقيمة 0.5 و 0.5 و 0.5
      كود:
           sceneManager.ambientLight = ogre.ColourValue(0.5, 0.5, 0.5)
      نعين خلفية السماء بخلفية من الأمثلة تسمي SpaceSkyBox
      كود:
              sceneManager.setSkyBox(True, "Examples/SpaceSkyBox&quot...
      نحتاج إلي مصباح للإضاءة, نأمر منظم المشهد بإنشاء ضوء في المتغير light , ونسميه باسم MainLight , ننشئه ونعين موضعه في الفضاء
      كود:
              light = sceneManager.createLight('MainLight')
              light.setPosition (20, 80, 50)
      لنضع نموذج سفينة فضاء تجريبي , نأمر منظم المشهد بأن ينشئ كيان في المتغير ent ونعين لهذا الكيان مودل الطائرة razor.mesh ونسميه razor

      كود:
          ent = sceneManager.createEntity( "razor", "razor.mesh" )
      لكي يظهر الكيان في فضاء المشهد لابد أن نلصقه بعقدة_مشهد تحدد موضعه في الفضاء , نطلب من منظم المشهد بأن يصنع عقدة حرة (غير تابعة لأي عقدة أخري) وذلك بإنشائها كعقدة تابعة للعقدة الأم rootSceneNode

      كود:
              node = sceneManager.getRootSceneNode().createChildSceneNode()
      ثم نأمر هذه العقدة بأن تربط بها الكيان "ent"
      كود:
      node.attachObject( ent )
      والآن فلنجرب بعض أوامر الدوران الخاصة بالعقدة, وهي تعمل كما في الصور


      كود:
              node.yaw(ogre.Degree(d=60.0), ogre.Node.TS_PARENT)
              node.pitch(ogre.Degree(d=30.0), ogre.Node.TS_PARENT)
              node.roll(ogre.Degree(d=20.0), ogre.Node.TS_PARENT)
      كود:
      def _createFrameListener(self):
      ال frameListener هي الفئة التي تهتم بالتعامل مع تحديث المشهد كل لحظة , ويتم استدعاء الوظيفة framestarted منها في كل دورة حاسوبية أي كل مرة يتم فيها تحديث الشاشة,
      نعين الفئة myListener بالمشهد كما بالكود التالي :
      كود:
      self.frameListener = myListener(self.renderWindow, self.camera, self.sceneManager)
              self.root.addFrameListener(self.frameListener)
      نعرف الفة myListener
      كود:
      class myListener(sf.FrameListener):
          def __init__(self, renderWindow, camera, sceneManager):
              sf.FrameListener.__init__(self, renderWindow, camera)
              self.sceneManager = sceneManager
      والوظيفة framestarted التي سيتم استدعائها في كل مرة يتم فيها تحديث المشهد
      كود:
          def frameStarted(self, frameEvent):
      يمكنك كتابة الكود الذي يتحكم في اللعبة هنا , مثلاً كود يحرك المودل بناءًا علي علي ضربات لوحة المفاتيح أو الفأرة , مثال
      كود:
               if self._isToggleKeyDown(KC_N, 0.1):
                  أي أوامر هنا تنفذ إذا كان الزر ن مضغوطًا
      ويمكنك أن تعيد الوظيفة/الدالة باستدعاء الوظيفة frameStarted الافتراضية , وهي تحوي وظيفة تحريك الكاميرا عن طريق الأزرار W للأمام , ِA لليسار , S للخلف , D لليمين , وتحريك وجهة الكاميرا عن طريق الماوس , وتستطيع استدعاء هذه الدالة الافتراضية عند الإعادة من الدالة كما بالكود التالي :
      كود:
      return sf.FrameListener.frameStarted(self, frameEvent)
      والآن هذا الكود يختص بتشغيل البرنامج والعناية بالأخطاء exceptions
      كود:
      if __name__ == '__main__':
          try:
              application = myApplication()
              application.go()
          except ogre.OgreException, e:
              print e
      http://blog.amr-g.com

      إن امتلاك الحياة الدنيا عن قدرة وخبرة هو السبيل الأوحد لنصرة المبادئ والمذاهب... *محمد الغزالي*

      تعليق


      • #4
        وهذا هو النص الكامل للبرنامج , احفظه باسم test.py وضعه في المجلد
        كود:
        C:\PythonOgre\demos\ogre
        ثم قم بتشغيله بأن تفتح نافذة الكونسول من قائمة start وتكتب فيها cmd
        وتكتب الأمر
        كود:
        c:
        cd \
        cd PythonOgre\demos\ogre\
        c:\python25\python.exe test.py
        وهذا هو النص الكامل للبرنامج
        كود:
        import ogre.renderer.OGRE as ogre
        import SampleFramework as sf
        import sys
        
        import ogre.io.OIS as OIS
        KC_N = OIS.KC_N
        
        
        class myApplication(sf.Application):
            def _createScene(self):
                sceneManager = self.sceneManager
                sceneManager.ambientLight = ogre.ColourValue(0.5, 0.5, 0.5)
                sceneManager.setSkyBox(True, "Examples/SpaceSkyBox&quot...
        
                light = sceneManager.createLight('MainLight')
                light.setPosition (20, 80, 50)
        
                ent = sceneManager.createEntity( "razor", "razor.mesh" )
        
                node = sceneManager.getRootSceneNode().createChildSceneNode()
                node.attachObject( ent )
        
                node.yaw(ogre.Degree(d=60.0), ogre.Node.TS_PARENT)
                node.pitch(ogre.Degree(d=30.0), ogre.Node.TS_PARENT)
                node.roll(ogre.Degree(d=20.0), ogre.Node.TS_PARENT)
                
        
            def _createFrameListener(self):
                self.frameListener = myListener(self.renderWindow, self.camera, self.sceneManager)
                self.root.addFrameListener(self.frameListener)
        
        class myListener(sf.FrameListener):
            def __init__(self, renderWindow, camera, sceneManager):
                sf.FrameListener.__init__(self, renderWindow, camera)
                self.sceneManager = sceneManager
                   
            def frameStarted(self, frameEvent):
                global pThrusters
           
                return sf.FrameListener.frameStarted(self, frameEvent)
        
        if __name__ == '__main__':
            try:
                application = myApplication()
                application.go()
            except ogre.OgreException, e:
                print e
        عندما تشغل البرنامج ستظهر لك نافذة تطلب منك أن تحدد المصير الذي تريد أن تستخدمه سواء أوبن ج ل أو دايركت إكس , اختر ما تريد , وعين خجم الشاشة المناسب وإذا كانت شاشة كاملة أم لا وما إلي ذلك , ثم اضغط موافق

        يمكنك التحرك في المشهد بواسطة الأزرار W A S D والفأرة تحدد وجهة الكاميرا

        وهذه هي لقطة من البرنامج الناتج :





        تحياتي لكم

        ملحوظة مهمة , أنا أكتب للأوجر3د بالسي++ ولا أفقه شيئًا في البايثون , أرجوكم لا استطيع أن أجاوب عن أي سؤال يخص البايثون , أما الأوجر نفسه وطريقة عمله فيمكنني
        http://blog.amr-g.com

        إن امتلاك الحياة الدنيا عن قدرة وخبرة هو السبيل الأوحد لنصرة المبادئ والمذاهب... *محمد الغزالي*

        تعليق


        • #5
          للتصدير لأوجر3د

          من الماكس :

          ofusion


          مواد تعليمية


          فيديوهات

          لقطة من الشاشة




          من البلندر :

          OgreBlenderExporter



          مواد تعليمية

          لقطة من الشاشة :

          http://ogre.cvs.sourceforge.net/*che...esexporter.png


          والمصدرات لبقية البرامج تجدونها في الرابط التالي , وفيه مصدرات للمايا والسوفت إيمج والهوديني

          http://www.ogre3d.org/index.php?opti...413&Itemid=133
          http://blog.amr-g.com

          إن امتلاك الحياة الدنيا عن قدرة وخبرة هو السبيل الأوحد لنصرة المبادئ والمذاهب... *محمد الغزالي*

          تعليق


          • #6
            والآن لابد أن هذا السؤال يتردد في أذهانكم , كيف أتعلم المزيد عن ogre3d ؟

            1- بما أن المشروع جديد (الربط python-ogre جديد لكن ogre3d نفسه قديم) حيث أنه كان هناك ربط قديم اسمه pyogre ولكنه تم استبداله حديثًا ب python-ogre والذي هو أكثر كفاءة من الربط القديم , وناتج هذه المسألة أن الدروس التعليمية قليلة نوعًا ما بالنسبة للربط python-ogre , ولكن علي أي حال يمكنكم الإطلاع علي دروس pyogre والتحويل بين الاثنين ليس معقدًا لأي شخص يعرف لغة بايثون (ليس أنا ) ودروس pyogre يمكنكم الحصول عليهم من هنا http://www.ogre3d.org/wiki/index.php/PyOgre

            2- الديموهات الموجودة مع python-ogre يجب أن تكون هي المصدر الرئيسي للتعليم , فكل خواص python-ogre مشروحه فيه في صورة كود يعمل فعلاً وهذه الديموهات موجودة أصلاً لكي تفتحوها وتقرأوا الكود لتتعلموا منه , والدرس في الأعلي يجب أن يكون قد شرح المبادئ لكيفية عمل برامج python-ogre , ويمكنكم أن تجدوا الديموهات في المجلد C:\PythonOgre\demos\ogre
            والمجلدات الأخري تحوي ربطات مع بعض المكتبات الأخري الخاصة بالصوت والفيزياء والواجهة الرسومية يمكنكم الاطلاع عليهم أيضًا

            3- منتدي python-ogre يمكنكم السؤال فيه إذا استعصت عليكم أي مشكلة , وتجدونه في الرابط http://www.ogre3d.org/phpBB2addons/viewforum.php?f=3

            4- الكتيب التعليمي الرسمي ل ogre وتجدونه هنا http://www.ogre3d.org/docs/manual/

            5- موقع python-ogre وتجدونه هنا www.python-ogre.org

            6- عندمًا يزيد عدد مستخدمي المحرك العرب يمكنكم إنشاء مجموعات مع بعضكم البعض ومساعدة بعضكم البعض وسيكون هذا أفعل طريقة للتعليم للإخوة الذين لا يتقنون اللغة الانجليزية , وللأسف أنا ليست لدي خبرة بلغة python وليس لدي الدافع لتعلمها لذا لن أستطيع أن ألعب دورًا في هذا الأمر , والدرس السابق مجرد نقلت فكرته الرئيسية من أحد الديموهات وترجمتها باللغة العربية لأن الفكرة واحدة , وpython-ogre ماهو إلا ترجمة بايثون ل ogre المكتوب أصلاً بلغة سي++ وهي اللغة الوحيدة التي أتقنها وليس لدي دافع يدفعني لتعلم غيرها , وما وضعت هذا الدرس هنا إلا بناء علي طلب من أحد إخوتي

            شكرًا لكم
            http://blog.amr-g.com

            إن امتلاك الحياة الدنيا عن قدرة وخبرة هو السبيل الأوحد لنصرة المبادئ والمذاهب... *محمد الغزالي*

            تعليق


            • #7
              جزاك الله خيرا كثيرااااااااااااااا جدااااااااااااااااااااا
              و جارى تجربة الدروس

              تعليق


              • #8
                شكرا جزيلا لك يا دكتور

                ولكن هل الألعاب الموجودة فى ال gallery بالأورجى ؟ هل هو قوى لهذه الدرجة؟
                لعبة (اللواء الخامس ) مهمة فى قلب إسرائيل صناعة مصرية

                تعليق


                • #9
                  علي الرحب والسعة أخي ابن يس

                  Airforce : نعم كل ماهو موجود في معرضهم نفذ بواسطة ogre3d , ونعم هو بهذه القوة لمن يعرف كيف يستخدمه
                  http://blog.amr-g.com

                  إن امتلاك الحياة الدنيا عن قدرة وخبرة هو السبيل الأوحد لنصرة المبادئ والمذاهب... *محمد الغزالي*

                  تعليق

                  يعمل...
                  X