DreamNet

دروس تطبيقية باستخدام Mogre

8 ردود في هذا الموضوع

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

نبدأ على بركة الله في دروس تطبيقية حول التغليف المعتمد للمحرك الشهير Ogre المخصص للغات الدوت نت

هذا الموضوع لن يخصص لمشاكل التشغيل فنرجو من الاخوة الذين يقرأون الموضوع لاول مرة ولم يستطيعوا تشغيل المحرك أن يراجعو الموضوع المتعلق بالتثبيت ومشاكل التشغيل هنا

ملاحظة : العمل هنا سيكون على الvb2008 او الc#2008

أولا : إنشاء مشروع جديد

نقوم بانشاء مشروع جديد سواء على الvb او السي شارب من النوع Console Application

post-23361-1215244891_thumb.jpg

نقوم بحفظ الكل Save All post-23361-1215244951_thumb.jpg

بدون أن ننسى المكان الذي تم فيه حفظ المشروع

ثانيا : نسخ الملفات الضرورية للعمل

قد تكون طريقة بدائية لكن فقط لكي نعرف الآن ماهي الملفات الضرورية للتشغيل

نقوم بنسخ هذه الملفات (ملفات الdlls الضرورية والخاصة بالتغليف وملفات الاعدادات ) إلى المجلد Debug الموجود تحت Bin أين حفظنا مشروعنا في الخطوة الأولى

post-23361-1215244913_thumb.jpg

طبعا هنا لم ننسخ ملف newton.dll ولا MogreNewt.dll لاننا لن نبدأ بهم الآن :)

(في المستقبل سنقوم بنسخ الملفات الضرورية إلى مجلد النظام ونكتفي فقط بملفات الاعدادات )

ثالثا: إضافة المراجع References التي سنستعملها

post-23361-1215244905_thumb.jpg

نبحث في مجلد الDebug عن تغليف الMogre والExampleApplication

post-23361-1215244942_thumb.jpg

رابعا : البدء بكتابة الكود

من نفس القائمة Project نضغط على Add New Item لاضافة كلاس إلى المشروع ولنسميها aGame

نعمل imports لفضاءي الأسماء الذين أضفنا لهما مرجعهما في السابق

ٍVB
Imports Mogre
Imports Mogre.Demo.ExampleApplication

C#
using Mogre;
using Mogre.Demo.ExampleApplication;

التغليف المنشئ لExampleApplication يعطينا فئة يمكن توريثها اسمها Example بها كل الوظائف الأساسية لتشغيل اللعبة وهي الفئة الأساسية التس سنستعملها دائما لذلك نقوم بعملية توريث لهذه الفئة

بعد توريثها يمكننا الاستفادة من اجراءتها وأحد أهم هاته الاجراءات هي CreateScene هنا يتم انشاء متغيرات اللعبة كلها

من أجل التشغيل فقط نقوم باضافة لون لضوء محيط Ambient Light فقط (لن يظهر ولن يكون له تأثير ) لكن حتى لا يرجع هذا الاجراء Exception لعدم احتوائه على أي أمر

ٍVB
Imports Mogre
Imports Mogre.Demo.ExampleApplication
Public Class aGame
Inherits Example

Public Overrides Sub CreateScene()
sceneMgr.AmbientLight = New ColourValue(0.2F, 0.2F, 0.2F)
End Sub
End Class

C#
using Mogre;
using Mogre.Demo.ExampleApplication;
namespace SharpTut1
{
class aGame:Example
{
public override void CreateScene()
{
sceneMgr.AmbientLight = new ColourValue(0.2f, 0.2f, 0.2f);
}
}
}

للتشغيل الآن نقوم بانشاء نسخة جديدة من الفئة aGame في الملف الرئيسي لتشغيل المشروع

VB
Dim test As aGame = New aGame
test.Go()
C#
aGame test =new aGame();
test.Go();

خامسا: قبل التشغيل

هنا قصدت من عدم نسخ كل الملفات أن أعدل على ملفات الاعدادات لاننا لو شغلنا المثال فانه سيحدث خطأ

بالنسبة لملفات الاضافات Plugins فاننا فقط نسخنا الملفات الثلاث التالية:

RenderSystem_Direct3D9

RenderSystem_GL

Plugin_ParticleFX

لكن لو فتحنا ملف plugins.cfg سنجد الاضافات الأخرى مكتوبة أيضا فالمحرك سيقوم بتحميلها لكن ملفاتها غير موجودة

لذلك نقوم بحذف الأسطر التي تشير إلى الملفات الغير موجودة ونحفظ الملف

لكن ليس هذا كل شئ مازال مكان تواجد الResources من ملفات المصادر والميديا المستعملة من قبل المحرك والمسجلة في ملف resources.cfg

الملفات المشار اليها تبدأ دائما بـ../../ أي انها يجب أن تكون في مجلد البرنامج فاما علينا أن نقوم بنسخ كل هذه المجلدات المشار إليها أو التعديل بتثبيت مكان تواحدها واستبدال ../../ بمكان تواجد الملفات وهو مجلد الSDK أي C:/MogreSDK (في الغالب عند تثبيته يكون في الC:)

وبذلك يمكننا تشغيل المثال

تطبيق المثال بالVB فقط (بدون ملفات DLLs لان الحجم سيكون كبيرا) معه فقط ملفات الأعداد بعد التعديل

Tut1_Mogre.zip

التطبيق سيحمل شاشة سوداء فقط مع شعار Ogre :D

post-23361-1215246967_thumb.jpg

بالتوفيق دائما وإلى أمثلة وتطبيقات أخرى

تم تعديل بواسطه DreamNet
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

جزاك الله خيرا

واصل دروسك

سأحاول تطبيق الدروس بعد حصولي على VS2008

ونبارك لك الترقيه

تم تعديل بواسطه Al-Mohana
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
سأحاول تطبيق الدروس بعد حصولي على VS2008

يمكنك تحميل النسخة Express سواء VB أو C# من الأنترنت مباشرة

ونبارك لك الترقيه

الله يبارك فيك :)

مجددا معكم من أجل تطبيق آخر سيكون هدفه هو رسم مكعب كما في الشكل التالي :

post-23361-1215272811_thumb.jpg

من أجل ذلك نقوم بانشاء كيان يكون شكل المكعب والمحرك Ogre يوفر لنا انشاء الكيانات القياسية مثل المكعب والكرة

هذا الكيان (Entity) نربطه بSceneNode

لذلك فنحن نحتاج إلى متغييرين لعمل ذلك واحد Entity والآخر هو SceneNode

VB
Dim box1 As Entity
Dim box1node As SceneNode

C#
Entity box1;
SceneNode box1node;

ننشئ الكيان بتحديد النوعCUBE ثم نربطه بالSceneNode

VB
box1 = sceneMgr.CreateEntity("Entity1", SceneManager.PrefabType.PT_CUBE)
box1node = sceneMgr.RootSceneNode.CreateChildSceneNode()
box1node.AttachObject(box1)

ِC#
box1 = sceneMgr.CreateEntity("Entity1", SceneManager.PrefabType.PT_CUBE);
box1node = sceneMgr.RootSceneNode.CreateChildSceneNode();
box1node.AttachObject(box1);

بعدها يمكننا اضافة اكساء للشكل المضاف داخل المشهد

VB
box1.SetMaterialName("Examples/10PointBlock")
C#
box1.SetMaterialName("Examples/10PointBlock");

كل هذه الأكواد تكتب في الإجراء CreateScene

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اذهلتنى وشكلى هترك السى بلس حاليا على ايدك :( ، حرااام عليك كنت بدرسها ههههههه

وشكلى هبطل لان المحرك ده دخل دماغى :):)

-----------------------------------

سأحاول ان انتهى من الاساسيات فيها وان ادخل فى الدايركت اكس وان اتعلم الاساسيات من بعدها نشوف شو بيصير :)

------------------------------

يا غالى لم اجد هذا الملف عندى Mogre.Demo.ExampleApplication

ياريت تساعدنى فى الحصول عليه ؟

تم تعديل بواسطه (HARD)
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
المحرك ده دخل دماغى :) :)

شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

اليوم نتطرق إلى شئ آخر وهو صناديق السماء التي يوفرها المحرك skyBoxs

لكن قبل التطرق للموضوع أردت توضيح شئ هنا كي لا يحدث التباس فيما يلي

لقد رأينا قبل اليوم كيف نضيف مكعب ونضيف له اكساء وكما لاحظنا فان عملية تحديد صورة الاكساء تختلف بعض الشئ عن المعتاد

VB
box1.SetMaterialName("Examples/10PointBlock")
C#
box1.SetMaterialName("Examples/10PointBlock");

في مجلدات الميديا للمحرك يتم ترتيب الmaterials المستعمل وفق scripts يعرف المواد المستعملة أو الميديا المستعملة تحت اسم معين

فلو فتحنا الملف Example.material الموجود داخل المجلد MogreSDK\Media\materials\scripts

سنجد الجزء المسمى Examples/10PointBlock المستعمل لتعريف اكساء المكعب الذي استعملناه سابقا معرف الكتالي:

material Examples/10PointBlock
{
technique
{
pass
{

texture_unit
{
texture 10points.png
}
}
}
}

وهذا يعرف الاعدادات الخاصة بكل جزء ونوعه هنا النوع هو اكساء موجود في الملف 10points.png

لكي نضيف صندوق سماء داخل المشهد ماعلينا إلا اضافة السطر التالي بكل بساطة داخل فئتنا الموروثة من Example والتي كنا قد سميناها aGame وفي الاجراء CreateScene

sceneMgr.SetSkyBox(True, "Examples/CloudyNoonSkyBox")

post-23361-1216727335_thumb.jpg

ولو رجعنا لملف Example.material لوجدنا تعريفا للExamples/CloudyNoonSkyBox يتضمن اعدادات هذا المشهد

يوجد أكثر من صندوق سماء يوفره المحرك يمكنكم تجريب :

Examples/StormySkyBox

Examples/SceneSkyBox1

Examples/SceneSkyBox2

Examples/SpaceSkyBox

Examples/MorningSkyBox

Examples/EveningSkyBox

طبعا مكان Examples/CloudyNoonSkyBox

بالتوفيق ان شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

هذا المجهود رائع وجيد ولكن رجاء مساعدتى فى الحصول على الملفات الضروريه لهذا البرنامج

سؤال : هل يمكن تنفيذ هذا الكود على VB2003 ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .