السلام عليكم ورحمة الله وبركاته
ارجو افادتي عن الـ "light" و "shadow"
من حيث الـ 2-D و 3-D
ارجو ان يكون سؤالي واضح :happy:
السلام عليكم ورحمة الله وبركاته
ارجو افادتي عن الـ "light" و "shadow"
من حيث الـ 2-D و 3-D
ارجو ان يكون سؤالي واضح :happy:
وعليكم السلام ورحمة الله وبركاته .
بالنسبة للاضاءة و الظلال في التطبيقات الثنائية البعد 2D ، لايوجد دعم مباشر من OpenGL لها ، ولكن هناك خوارزميات وأفكار لمحاكاة تلك التأثيرات في 2D ،
اممم ، أفكر في طرحها كموضوع للنقاش في القسم العام ، فكرة جيدة :wink: .
الاضاءة في عالم ثلاثي البعد أمر سهل - بشكل عام - ، ويتم باستخدام دوال بسيطة - لانشاء اضاءة عادية ، لكن الامور تتعقد اذا اردت ن تنتقل الى الواقعية ،
مثال بسيط سرقته من موقع swiftless ![]()
#include <windows.h>
#include <GL/glut.h>
GLfloat angle = 0.0;
void cube (void) {
glRotatef(angle, 1.0, 0.0, 0.0);
glRotatef(angle, 0.0, 1.0, 0.0);
glRotatef(angle, 0.0, 0.0, 1.0);
glColor3f(1.0, 0.0, 0.0);
glutSolidCube(2);
}
void init (void) {
glEnable (GL_DEPTH_TEST);
glEnable(GL_LIGHTING); // تفعيل الاضاءة بشكل عام ..
glEnable(GL_LIGHT0);// تفعيل مصدر الاضاءة الاول - في الغالب سيكون لديك 8 مصادر للاضاءة
}
void display (void) {
glClearColor (0.0,0.0,0.0,1.0);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
cube();
glutSwapBuffers();
angle ++;
}
void reshape (int w, int h) {
glViewport (0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (60, (GLfloat)w / (GLfloat)h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
}
int main (int argc, char **argv) {
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH
);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow ("A basic OpenGL Window");
init ();
glutDisplayFunc (display);
glutIdleFunc (display);
glutReshapeFunc (reshape);
glutMainLoop ();
return 0;
}وهو أبسط مثال ممكن أن تراه في تطبيقات الاضاءة ،
تحتاج بعدها لتنتقل الى خطوات أخرى :
1- تحديد نوع الاضاءة - هناك عدة انواع ، كل نوع له تأثير معين ،

2- تحديد مكان الاضاءة والتحكم به .
3- الرياضيات والاضاءة :D .
4- الخامات Materials ، فمثلاً لو حاولت اضاءة " حقيبة مصنوعة من الجلد ذات لون أحمر " ، يجب أن لاتكون مثل " اضاءة حقيبة مصنوعة من القماش العادي ذو لون أسود "
بالمزج بين خيارات الاضاءة والخامات تستطيع أن تحاكي الواقع نوعاً ما :
http://devernay.free.fr/cours/opengl/materials.html

الموضوع طويل ويحتاج لعدة مقالات حتى تبدو الامور واضحة ،
أنا لاأملك الخبرة الكافية حتى أغطي مواضيع الاضاءة ، لعل أحد الاخوة يساعد في هذا ،
موضوع الظلال : يمكن القراءة عنه في هذا الموضوع :
تطبيق طمأنينة ، نسخة بيتا على أندرويد
عبدالله الشمّري - Al-Shammari
twitter @abshammeri
abshammeri AT gmail.com
github : abshammeri