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

ردود: 9 | زيارات: 1667
  1. #1
    عضو نشيط
    صور رمزية عمرو
    تاريخ التسجيل
    Apr 2007
    المنطقة
    مكان أحبه كثيرًا
    ردود
    675

    كيفية تنصيب اوجر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. #2
    عضو متميز
    صور رمزية Relawda
    تاريخ التسجيل
    Nov 2006
    المنطقة
    تطوان-المغرب
    العمر
    36
    ردود
    1,531
    شكرا ذ عمرو

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

  3. #3
    عضو نشيط
    صور رمزية عمرو
    تاريخ التسجيل
    Apr 2007
    المنطقة
    مكان أحبه كثيرًا
    ردود
    675
    استيراد ملفات أوجر , هذه الملفات ضرورية لكل برنامج يريد أن يعمل علي أوجر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. #4
    عضو نشيط
    صور رمزية عمرو
    تاريخ التسجيل
    Apr 2007
    المنطقة
    مكان أحبه كثيرًا
    ردود
    675
    وهذا هو النص الكامل للبرنامج , احفظه باسم 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. #5
    عضو نشيط
    صور رمزية عمرو
    تاريخ التسجيل
    Apr 2007
    المنطقة
    مكان أحبه كثيرًا
    ردود
    675
    للتصدير لأوجر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. #6
    عضو نشيط
    صور رمزية عمرو
    تاريخ التسجيل
    Apr 2007
    المنطقة
    مكان أحبه كثيرًا
    ردود
    675
    والآن لابد أن هذا السؤال يتردد في أذهانكم , كيف أتعلم المزيد عن 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. #7
    Registered User
    تاريخ التسجيل
    Aug 2006
    المنطقة
    مصر
    العمر
    30
    ردود
    7,129
    جزاك الله خيرا كثيرااااااااااااااا جدااااااااااااااااااااا
    و جارى تجربة الدروس

  8. #8
    عضو
    تاريخ التسجيل
    May 2006
    المنطقة
    مصر أينما وجدت الحضارة
    العمر
    27
    ردود
    105
    شكرا جزيلا لك يا دكتور

    ولكن هل الألعاب الموجودة فى ال gallery بالأورجى ؟ هل هو قوى لهذه الدرجة؟

  9. #9
    عضو نشيط
    صور رمزية عمرو
    تاريخ التسجيل
    Apr 2007
    المنطقة
    مكان أحبه كثيرًا
    ردود
    675
    علي الرحب والسعة أخي ابن يس

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

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

Bookmarks

قوانين الموضوعات

  • لا يمكنك اضافة موضوع جديد
  • لا يمكنك اضافة ردود
  • لا يمكنك اضافة مرفقات
  • لا يمكنك تعديل مشاركاتك
  •  
  • كود BB مفعّل
  • رموز الحالة مفعّل
  • كود [IMG] مفعّل
  • [VIDEO] code is مفعّل
  • كود HTML معطل