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

سؤال عن "الاضاءة" و "ال Shadow"

بدأه persone في 31 ديسمبر 2009 · 2 رد · 1,286 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ارجو افادتي عن الـ "light" و "shadow"

من حيث الـ 2-D و 3-D

ارجو ان يكون سؤالي واضح :happy:

#2

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

بالنسبة للاضاءة و الظلال في التطبيقات الثنائية البعد 2D ، لايوجد دعم مباشر من OpenGL لها ، ولكن هناك خوارزميات وأفكار لمحاكاة تلك التأثيرات في 2D ،

اممم ، أفكر في طرحها كموضوع للنقاش في القسم العام ، فكرة جيدة :wink: .

الاضاءة في عالم ثلاثي البعد أمر سهل - بشكل عام - ، ويتم باستخدام دوال بسيطة - لانشاء اضاءة عادية ، لكن الامور تتعقد اذا اردت ن تنتقل الى الواقعية ،

مثال بسيط سرقته من موقع swiftless happy.gif

#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- تحديد نوع الاضاءة - هناك عدة انواع ، كل نوع له تأثير معين ،

Lesson6-LightNotion.png

2- تحديد مكان الاضاءة والتحكم به .

3- الرياضيات والاضاءة :D .

4- الخامات Materials ، فمثلاً لو حاولت اضاءة " حقيبة مصنوعة من الجلد ذات لون أحمر " ، يجب أن لاتكون مثل " اضاءة حقيبة مصنوعة من القماش العادي ذو لون أسود "

بالمزج بين خيارات الاضاءة والخامات تستطيع أن تحاكي الواقع نوعاً ما :

http://devernay.free.fr/cours/opengl/materials.html

UtahTeapotsColorPlate25.jpg

الموضوع طويل ويحتاج لعدة مقالات حتى تبدو الامور واضحة ،

أنا لاأملك الخبرة الكافية حتى أغطي مواضيع الاضاءة ، لعل أحد الاخوة يساعد في هذا ،

موضوع الظلال : يمكن القراءة عنه في هذا الموضوع :

إنشاء الإنعكاس و الضلال

1

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

راااائع ..

شكرا لك =)

You CAN

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