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

طريقة تحريك كل جسم وحده

بدأه 852147 في 10 أكتوبر 2008 · 14 رد · 3,330 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤال ارجة ان تجيبوني عليها وستفعلون ان شاء الله :P :wink:

لنفترض ان لدي جسمان

كيف أجعل لكل منهما حركة خاصة به

يعني لديهما حركتين مختلفتين في نفس المشهد

مثلا واحد يدور والآخر يتحرك حركة أخرى

#2

لكل مجسم له مصفوفة ازاحة و دوران و تكبير ، في الاخر SetTransform للمجسم .. طالما حركت واحد هتعرف تحرك الاخر

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

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

#3

لم أفهم

ممكن التوضيح وشكرا

#4
// نرسم الكائن الأول بمصفوفتة الخاصة
Device->SetTransform(D3DTS_WORLD,&mat1);
box1->DrawSubset(0);
// نرسم الكائن الثاني بمصفوفتة الخاصة وهكذا فقط لاغير
Device->SetTransform(D3DTS_WORLD,&mat2);
box2->DrawSubset(0);

أرجو أن أكون قد أجبتك

#5
اقتباس
نرسم الكائن الأول بمصفوفتة الخاصة

ماذا تعني بذلك

تم تعديل هذه المشاركة بواسطة 852147 في 11 أكتوبر 2008 في 15:41

#6
اقتباس
ماذا تعني بذلك

موقعه الخاصة به

أعطينا الكود وسأعدله لك وبعض الشرح له :thumb_up:

تم تعديل هذه المشاركة بواسطة crazy Programm2007er في 11 أكتوبر 2008 في 23:34

#7
HRESULT Box ()



if ( FAILED ( D3DXCreateBox ( Device ,1.5,1.5,1.5,&mdoor, NULL)))
	{
		return E_FAIL ; 
	}


   if ( FAILED ( D3DXCreateTextureFromFile ( Device , "glass.bmp" , &door )))
	{
		return E_FAIL ; 
	}


D3DXMATRIX anim1;
D3DXMatrixRotationX ( &anim1 , timeGetTime()/1000.0f);
Device->setTransforme ( D3DTS_WORLD , &anim1);
Device->SetTexture ( 0 , door);



HRESULT O1 ()
{
	 D3DXCreateTeapot ( Device , &Mesh , NULL);


D3DXMATRIX anim2;
D3DXMatrixRotationY ( &anim1 , timeGetTime()/1000.0f);
Device->setTransforme ( D3DTS_WORLD , &anim1);	

Device->SetTexture ( 0 , door);
	return S_OK ; 
}
VOID Camera ()
{

	D3DXMATRIXA16 Map ; 
	D3DXMATRIXA16 View ;
	D3DXVECTOR3 V1 ( -3.0f , 0.0f , -5.0f);
	D3DXVECTOR3 V2 ( 0.0f , 0.0f ,  0.0f);
	D3DXVECTOR3 V3 ( 0.0f , 1.0f ,  0.0f);

	D3DXMatrixLookAtLH ( &View , &V1 , &V2 , &V3 );
	Device->SetTransform ( D3DTS_VIEW , &View);

	D3DXMatrixPerspectiveFovLH ( &Map , D3DX_PI/4 , 1.0f , 1.0f , 100.0f);
	Device->SetTransform ( D3DTS_PROJECTION , &Map);

}


VOID Render ()
{


	Device->Clear ( 0 , NULL , D3DCLEAR_TARGET   , D3DCOLOR_XRGB(0,0,0) , 1.0f , 0);

	if ( SUCCEEDED ( Device->BeginScene ()))
	{	
		Mesh->DrawSubset (0);
		mdoor->DrawSubset (0);
		Camera();
		Device->EndScene ();
	}
	Device->Present ( NULL , NULL , NULL , NULL );
}

تم تعديل هذه المشاركة بواسطة 852147 في 14 أكتوبر 2008 في 20:46

#9
D3DXMATRIX anim2;
D3DXMatrixRotationY ( &anim1 , timeGetTime()/1000.0f);
Device->setTransforme ( D3DTS_WORLD , &anim1);

anim2 وليس anim1

D3DXMATRIX anim2;
D3DXMatrixRotationY ( &anim2 , timeGetTime()/1000.0f);
Device->setTransforme ( D3DTS_WORLD , &anim2);
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#10

حاولت لكن نفس المشكلة ياصديقي

ممكن مثال كامل من عندك

شكرا وآسف على التأخير

#11
852147 كتب:
حاولت لكن نفس المشكلة ياصديقي

ممكن مثال كامل من عندك

شكرا وآسف على التأخير

تكرم اخي ولا يهمك , سأقوم بتحظير مثال بسيط :happy:

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#12
		D3DXMATRIX R1,R2;
		D3DXMatrixRotationY(&R1,x1);
		D3DXMatrixRotationY(&R2,x2);

		Device->SetStreamSource(0,Triangle,0,sizeof(Vertex));
		Device->SetFVF(Vertex::FVF);
		Device->SetTexture(0,Tex);
//////////////////////////////////////////////////////
		Device->SetTransform(D3DTS_WORLD,&R1);
		Device->DrawPrimitive(D3DPT_TRIANGLELIST,0,12);
		Device->SetTransform(D3DTS_WORLD,&R2);
		Device->DrawPrimitive(D3DPT_TRIANGLELIST,0,12);
//////////////////////////////////////////////////////
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#13

لقد نجحت شكرا ياأخي

#14

برافووووو :clapping:

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#15

شكرا

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