الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

import 3d object by openglc#

بدأه eng.toha في 11 نوفمبر 2011 · 10 رد · 2,365 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا لسه جديده فى استخدام الopengl انا عاوزه انادى على 3d object بالاوبن جل بالسى شارب

دورت كتير على النت ومش قادره اوصل للمطلوب بالظبط

ياريت لو حد يعرف يرد عليا و يساعدنى الموضوع هااااااااااااااااام جدا ومحتاجاها ضرورى

شكرا مقدما وجزاكم الله خير الجزاء

#2

ياريت لو حد يعرف الاجابه يرد او موقع يساعدنى انى اعرف الاجابه

معلش هتعبكم معايا جزاكم الله كل خير

#3

السلام عليكم ..

الــ OpenGL هي مكتبة بلغة CPP .. و لكن يوجد مكتبات أخرى بلغة C# منها يعمل Wrapping لمكتبة الـ OpenGL

و هنا الروابط ...

http://sourceforge.net/projects/csgl/files

http://www.codeproject.com/KB/openGL/sharpgl.aspx

http://sharpgl.codeplex.com

http://www.codeproject.com/KB/openGL/arcball.aspx

http://sourceforge.net/projects/opentk

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#4

شكرا جزيلا

لكن الا يوجد مكتبات اخرى بلغة visuel studio c++2008

?

#5

شكرا جزيلا على رد حضرتك

انا وصلت للمكتبات دى لكن مش عارفه ازاى انادى على 3d object بيها فى التطبيق بتاعى

يعنى اكون عامله مثلا ثرى دى اوبجكت بثرى دى ماكس وانادى عليه بالسى شارب واتحكم انا فيه بعد كدا بالليبررى دى

مش هعمل اوبجكت جديد بال sharp gl

يارب اكون قدرت اوصل سؤالى صح

#6

السلام عليكم ...

قد يكون الرد متأخر لكن .. يستفيد منه الأعضاء الذين يطلعوا على الموضوع

الــ Sharp Gl هي Porting (نقل) .. لمكتبة الــ Open GL من لغة الــ CPP إلى C# .. (ليست Wrapper) ...

تعديل :

تبين بعد القراءة أن هذه المكتبة هي wrapper .. أي تتطلب وجود الملف opengl32.dll

يمكن تحميلها من هنا لكن تحتاج لـ Framework 4 و في المرفقات تمت عملية الترجمة على Framework 3.5 (مع تعديل بسيط) ..

يمكن للمكتبة استيراد الكائنات ثلاثية الأبعاد بتنسيقات مختلفة (Formats) ..

قمت يتحميل كائن ثلاثي الأبعاد لرجل من هنا رابط و الموقع فيه الكثير من الكائنات ...بتنسيق 3ds ..

ثم قمت بتحويله إلى التنسيق COB .. باستخدام المحول 3D Object Converter من هنا على فكرة موجود بالمرفقات ملفين Apple.cob و Man.cob ..(رجل و تفاحة) ..

طريقة العمل ...

  1. إضافة Reference للمكتبات SharpGL.dll و SharpGL.WinForms.dll .
  2. Build Project
  3. نقرة يمينية على صندوق الأدوات Choose Items ثم Brows ثم نحدد المكتبة SharpGL.WinForms.dll فيتم إضافة المكونات مثل OpenGlControl و ScenceControl
  4. نسحب الــ OpenGlControl على الفورم ..(إذا اعطى إشارة إكس حمراء فلا تقلق .. تابع).و نضع له الخصائص التالية :
            	this.openGLControl1.BitDepth = 24;
            	this.openGLControl1.DrawFPS = false;
            	this.openGLControl1.FrameRate = 29.41176F;
            	this.openGLControl1.RenderContextType = SharpGL.RenderContextType.DIBSection;

  5. كي نستخدم الــ SharpGL :
    using SharpGL;
    using SharpGL.SceneGraph;

  6. على مستوى الفورم نعرف المتحولات التالية :
    float rotate = 0;
        	//  A set of polygons to draw.
        	List<Polygon> polygons = new List<Polygon>();
        	//  The camera.
        	SharpGL.SceneGraph.Cameras.CameraPerspective camera = new SharpGL.SceneGraph.Cameras.CameraPerspective();

  7. نسحب زر على الفورم و داخله الكود التالي :
    private void button1_Click(object sender, EventArgs e)
        	{
            	SharpGL.Persistence.PersistenceEngine engine = new SharpGL.Persistence.PersistenceEngine();
    
            	//  Create a a set of polygons.
            	List<Polygon> loaded = (List<Polygon>)engine.UserLoad(typeof(List<Polygon>));
            	//List<Polygon> loaded = (List<Polygon>)engine.Load(@"D:\\f\\Man.cob");
    
            	MessageBox.Show(loaded.Count.ToString());
    
            	//  If we successfully loaded, set the collection.
            	if (loaded != null)
            	{
                	polygons = loaded;
                	foreach (Polygon polygon in loaded)
                    	polygon.Attributes.PolygonDrawMode = SharpGL.SceneGraph.Attributes.Polygon.PolygonMode.Lines;
            	}
            	MessageBox.Show("OK");
        	}

    ما يهمنا ان الكائن ثلاثي الأبعاد يتم التعامل معه داخل الكود على انه List Of Polygon ..لو كان الملف بتنسيق Cob .. و للتحميل طريقتان إما:

    List<Polygon> loaded = (List<Polygon>)engine.UserLoad(typeof(List<Polygon>));

    حيث يظهر مربع حوار و نحدد الملف المطلوب أو:

    List<Polygon> loaded = (List<Polygon>)engine.Load(@"D:\\f\\Man.cob");

    حيث نحدد مسار الملف المطلوب ضمن الكود ..

  8. في الحدث OpenGLDraw للـ openGLControl1 نكتب الكود التالي :
     private void openGLControl1_OpenGLDraw(object sender, PaintEventArgs e)
        	{
            	//  Get the OpenGL object, for quick access.
            	SharpGL.OpenGL gl = this.openGLControl1.OpenGL;
    
            	//  Clear and load the identity.
            	gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            	gl.LoadIdentity();
    
            	//  View from a bit away the y axis and a few units above the ground.
            	gl.LookAt(0, -5, 3, 0, 0, 0, 0, 1, 0);
    
            	//  Rotate the objects every cycle.
            	gl.Rotate(rotate, 0.0f, 0.0f, 1.0f);
    
            	//  Move the objects down a bit so that they fit in the screen better.
            	gl.Translate(0, 0, -1);
    
            	//  Draw some axies.
            	//todo gl.StockDrawing.Axies.Call(gl);
    
            	//  Draw every polygon in the collection.
            	foreach (Polygon polygon in polygons)
                	polygon.Draw(gl);
    
            	//  Rotate a bit more each cycle.
            	rotate += 1.0f;
        	}

    يعني ببساطة نرسم الــ Polygons التي تم تحميلها من ملف الكائن ثلاثي الأبعاد مع تحديد عين الناظر (LookAt) و تدوير ..

الكود موجود بالمرفقات (و عيشوا مع نفسكوا بقى) ..

ملاحظة :

يفضل التعامل مع الــ OpenGL بلغة الــ Cpp لأن الإصدار الرئيسي للـ OpenGL بلغة Cpp ..

فغالبا عندما يتم عمل Porting لمكتبة من لغة إلى لغة أخرى ... أحيانا يتوقف تطوير هذه الــ Porting بينما المكتبة الرئيسية لا يتوقف تطويرها غالبا ..

تعديل :

كما قلنا هذه المكتبة هي wrapper

SharpGL_Test.rar

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 13 نوفمبر 2011 في 22:46

2

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

بجد انا مش عارفه اشكر حضرتك ازاى ... شكرا جدا جدا

بس كان عندى سؤال هو ينفع انادى على الاوبجكت من غير محوله للتنسيق .cop يعنى انادى عليه بالتنسيق .3ds

شكرا جدا مره تانيه جزاك الله خيرا يابشمهندس

#8

السلام عليكم ...

أولا تم تعديل مشاركتي السابقة في الجزء ..

تبين بعد القراءة أن هذه المكتبة هي wrapper .. أي تتطلب وجود الملف opengl32.dll

اقتباس
بجد انا مش عارفه اشكر حضرتك ازاى ... شكرا جدا جدا

العفو .. العفو .. لا شكر على واجب ..

اقتباس
بس كان عندى سؤال هو ينفع انادى على الاوبجكت من غير محوله للتنسيق .cop يعنى انادى عليه بالتنسيق .3ds

حسب كود المكتبة فهي تدعم التنسيق 3ds .. و يتم تحويله إلى الصف SharpGL.SceneGraph.Scene و يتم رسمه باستخدام الــ ScenceControl .أي :

Scene loaded = (Scene)engine.Load(@"D:\\f\\decoliner.3ds");
sceneControl1.Scene.Jam(loaded);

. لكنه لم يرسم أي شئ ..

و لو حملت الكود الأساس للمكتبة .. فإنه يأتي معه أمثلة ..Example5 ...يتحدث عن الــ Scene ...المثال يعمل لكن ليس عن طريق تحميل من ملف ..

انا جربته عن طريق تحميل الملف لكن لم يظهر أي شئ .. لا اعرف ما المشكلة بالضبط .. هل له علاقة بإصدار الــ 3D Max المستخدم .. (علما أنه ليس لدي 3D Max حاليا بل قمت بتحميل الملف من الموقع المذكور بالمشاركة السابقة ..)

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 13 نوفمبر 2011 في 23:17

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#9

جزاك الله كل خير يابشمهندس ربنا يكتبه فى ميزان حسناتك

ليا طلب صغير وانا عارفه انى تقلت اوى على حضرتك :mellow:

لو حضرتك بس ترشحلى كتب ازاكر منها ابقى متشكره جدا

#10

السلام عليكم ...

اقتباس

جزاك الله كل خير يابشمهندس ربنا يكتبه فى ميزان حسناتك

ليا طلب صغير وانا عارفه انى تقلت اوى على حضرتك

بارك الله بك ..

اقتباس
لو حضرتك بس ترشحلى كتب ازاكر منها ابقى متشكره جدا

أنا شخصيا لم أدرس من كتاب محدد .. بل من عدة كتب و مقالات و أمثلة ... و عن طرق الــ جوجل Google.. فهو خير صديق ..

و على النت و المنتديات يوجد الكثير من الكتب أذكر منها ...

  • فهرس شامل لقسم Opengl : دروس و مقالات وتطبيقات على منتدى الفريق العربي للبرمجة رابط
  • كتاب openGL رابط
  • مجموعة روابط لكتب عربي و انكليزي هنــــا
  • تعلم برمجة الالعاب باستخدام اوبن جي ال OpenGL مع هذه الاسطوانات رابط
  • مبادئ برمجة الرسم بـ OpenGL GLUT رابط
  • سلسلة البرمجة بـ OpenGL GLUT رابط (ربما مكرر مع الرابط في الأعلى) .
  • سلسلة البرمجة بـ OpenGL WIN API رابط
  • دروس في OpenGL -الجزء الأول رابط
  • دروس في OpenGL -الجزء الثاني رابط
  • تعلم opengl رابط
  • The Red Book رابط
  • مجموعة روابط جيدة رابط

و أهم شئ لم أراد تعلم البرمجة أن يقوم يالتوثيق و كتابة الأمثلة ...

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

مثلا تدوير الشكل يتم بالطريقة كذا .. رسمه يالطريقة كذا .. و هكذا .. مع فهم الــ Concept ... لكل شئ .. أي كيف تمثل مكتبة الــ openGL الأشكال و الرسوم داخليا (في الذاكرة).. ما هي الــ Matrix المستخدمة ..و الــ Buffer Bit ..ما تأثير glTranslate مثلا أو glRotate على الــ Matrix ...

بصراحة هذه الأمور ليست في ذهني الآن كوني لم أمارسها منذ زمن ...

بالتوفيق ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#11

بشكر حضرتك جدا على كل الروابط وعلى مجهود حضرتك جداااااااااا

انا فعلا كنت عاوزه اعرف open gl علشان اتعامل مع اوبجكت خارجى مرسوم مثلا على 3d maxاعرف ازاى احركه واتحكم فيه مش هرسم من جديد عليها

لان انا بعمل بروجكت بالسى شارب وهستخدم فيه الثرى دى وهتحكم فيه بعد كدا فى حركته ...

بس تقريبا كل الكتب والروابط بتتعامل مع ++opengl with c وليس سى شارب

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

مواضيع مشابهة