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

التحريك باستخدام gluLookAt

مغلق
بدأه opengl programmer في 20 يونيو 2006 · 5 رد · 2,154 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

سؤالي حول lookat التي أتعبتني فعلاً و إني عاتب قليلاً على المشرف الذي أغلق المشاركة حول lookat لأنه كان لدي سؤال عليها و أجو أن يتسع صدركم لها :

المشكلة هي في التحريك إلى الأمام و إلى الخلف .. فعندما أقوم بزيادة قيمة الإحداثي z للنقطة التي تنظر إليها الكاميرا أجد أن الكاميرا أصبحت تنظر إلى أعلى !!!!! بدلاً من النظر إلى الأمام!!!!! و كذلك الأمر بالنسبة إلىالحركة نحو الخلف أيضا ...

هذا جزء من الكود :

z=z+1; 
gluLookAt(0, 1.5f,18,x, 0  ,z,0, 1, 0);

مع العلم أن الدوران يتم بشكل رائع إلى اليمين و اليسار .....

أرجو تصحيح الكود ... و أشكر الجميع

#2

في معادلة الازاحة

Z=Z+1

حاول ان تضف معامل للزمن t مضروباً في الZ لوضع ازاحة ناعمة و معتمدة علي الزمن ...

و استخدم الاعداد العشرية بطريقة صحيحة يعني 18.0f , 1.0f ...

اجعل البارمتر الثاني ب 0.0f ...

و قم بإضافة سالب المعامل Z في البارمتر السادس لكي يعكس الاتجاه ...

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

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

حياك الله أخوي

شاهد هذا الرابط ... لعله يفيدك ... اذا لم تستوعبه حنا حاضرين ...

/index.php?showtopic=86958

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

شكراُ جزيلاً أخي الشمري .. و لكن لي سؤال :

عندما يقوم المستخدم بالإستدارة إلى اليمين فإني أقوم بعملية دوران بزاوية 30 درجة .. الآن عندما يريد التحرك إلى الأمام تصبح الحركة غير منطقية .. أي إنني أقوم بزيادة z بمقدار 1 عند الحركة إلى الأمام و هذا لن يعطي حركة منطقية في الحالة التي ذكرتها .. و سؤالي بالتحديد هو : هل توجد معادلة بين x, z بحيث تصبح الحركة مائلة في حالة قام بالدوران ؟؟؟ أرجو أن سؤالي مفهوم و أشكر الجميع

#5

يمكنك أخي الاستفادة من الكود التالي :

void orientMe(float ang) {

	lx = sin(ang);
	lz = -cos(ang);


}
void moveMeFlat(int direction) {
	x += direction*(lx)*0.5;
	z += direction*(lz)*0.5;
			   }

الإستدعاء :

case VK_LEFT:
					angle -= 0.01f;
				   orientMe(angle);
				   break;
			case VK_RIGHT:								
				angle +=0.01f;
				orientMe(angle);
				break;
			case VK_DOWN : 
					  moveMeFlat(-1);break;
			case VK_UP : 
				moveMeFlat(1);break;

الآن في renderScene :

 gluLookAt(x, y, z, x + lx,y +ly,z + lz, 0.0f,1.0f,0.0f);

أرجو أني قد أجبت على سؤالك ...

#6

لم افهم بالظبط ماهي المشكلة ... لكن انظر الى الوصلات التالية ..

http://www.lighthouse3d.com/opengl/glut/index.php?6

http://www.lighthouse3d.com/opengl/glut/index.php?8

وايضا glLookAt هي مجرد دالة تعتمد على دوال الازاحة والتدوير المعروفة ..

شاهد هذا المثال الذي يحرك الكاميرا بدون glLookAt..

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=10

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

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

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

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