السلام عليكم
كيف أستطيع تحريك مجسم mesh وتدويره و تكبير حجمه
أرجو أن يكون C# أو vb.net
مع الشكر
السلام عليكم
كيف أستطيع تحريك مجسم mesh وتدويره و تكبير حجمه
أرجو أن يكون C# أو vb.net
مع الشكر
تم تعديل هذه المشاركة بواسطة crazy Programm2007er في 13 يوليو 2008 في 17:39
http://www.chadvernon.com/blog/tutorials/directx9/
اتمني ان تفيدك هذه الدروس
BEng , Electronics and communications.
Embedded systems engineer.
Graphics Programmer
عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح
استخدم المصفوفات في d3dx
أنا لاأجيد استخدام c# أو vb
المهم أنا استخدم c++
الطريقة هي نفسها في كل لغات (على الأقل نفس الدوال)
D3DXMatrixRotationx
D3DXMatrixRotationY
D3DXMatrixRotationZ
مصفوفات الدوران على المحاور التالية بالترتيب
x
y
z
D3DXMatrixTranslation
لتحريك الجسم
D3DXMatrixScaling
لتكبير حجمه وتصغيره
أرجو أن أكون أفدتك
852147 كتب:استخدم المصفوفات في d3dxأنا لاأجيد استخدام c# أو vb
المهم أنا استخدم c++
الطريقة هي نفسها في كل لغات (على الأقل نفس الدوال)
D3DXMatrixRotationx
D3DXMatrixRotationY
D3DXMatrixRotationZ
مصفوفات الدوران على المحاور التالية بالترتيب
x
y
z
D3DXMatrixTranslation
لتحريك الجسم
D3DXMatrixScaling
لتكبير حجمه وتصغيره
أرجو أن أكون أفدتك
أشكركم على الردود ولكن لم يفي بالغرض أي رد مع الأسف
بالنسبة للأخ أحمد صالح لقد وجدت فقط عن تحريك الvertex
اقتباسأشكركم على الردود ولكن لم يفي بالغرض أي رد مع الأسفبالنسبة للأخ أحمد صالح لقد وجدت فقط عن تحريك الvertex
مرحبا اخي الكريم
ممكن لأنك محدد لغة c# أو vb
بالنسبة لسي ++ فكما تفضل الاخ 852147 بواسطة المصفوفات , ولكن يجب ان تراعي عملية الترتيب عند ضرب المصفوفات

اشهد ان لا إله إلا الله وان محمدا ً رسول الله
أسف على التأخر في الرد بسبب المشاكل في الإتصال بالإنترنت عندي
وأرجو من الأعضاء الذين يعرفون الإجابة عن الموضوع أن يعطوني مثال بسيط بلغة الC++
وشكرا
D3DXMatrixRotationY(&R,y); D3DXMatrixTranslation(&T,5.0f,5.0f,1.0f); D3DXMatrixScaling(&S,0.1f,0.1f,0.1f); W=S*R*T; Device->SetTransform(D3DTS_WORLD,&W);

اشهد ان لا إله إلا الله وان محمدا ً رسول الله
time1 كتب:D3DXMatrixRotationY(&R,y); D3DXMatrixTranslation(&T,5.0f,5.0f,1.0f); D3DXMatrixScaling(&S,0.1f,0.1f,0.1f); W=S*R*T; Device->SetTransform(D3DTS_WORLD,&W);
شكرا على الرد ولكن هذه الطريقة تقوم بتحريك جميع المجسمات في المشهد بأكملها
اقتباسشكرا على الرد ولكن هذه الطريقة تقوم بتحريك جميع المجسمات في المشهد بأكملها
بعد اجراء التحويل السابق قم برسم المجسم الشبكي Mesh وبعد الانتهاء استخدم مصفوفة Identity لمنع تطبيق التحويل على جميع الاجسام بالمشهد

اشهد ان لا إله إلا الله وان محمدا ً رسول الله
السلام عليكم
بعد تنفيذ السطر
Device->SetTransform(D3DTS_WORLD,&W);
فان كافة اوامر الرسم التي سيتم رسمها ستتأثر بهذا السطر حتي يتم تغييره مرة اخري
لان D3D عبارة عن state machine لما يتم وضع state فيه فانها تظل مستخدمة حتي يتم تغييرها مرة اخري
لذلك يمكنك تطبيق ما سبق لكل مجسم في المشهد لتحرك كل مجسم كما تريد وتضعه في المكان المناسب ويمكنك وضع مصفوفة الوحدة Identity
كما ذكر الاخ time1 فانه يمكنك استعادة الوضع الاصلي برسم كافة المجسمات التالية بدءا من نقطة الاصل بدون اي دوران او تحجيم
Ahmed Ezz
Software Engineer
انما عمرك بأعمالك ، فكم تريد أن تعيش؟
اذا كنت تفضل استخدام #C فأنصحك باستخدام Microsoft XNA Game Studio Express فيمكنك باستخدامه انشاء ألعاب على Windows, XBOX 360 و في النسخة الأخيرة من XNA يمكنك عمل ألعاب على Zune
بالنسبة لعمل Transformations أو Rotation باستخدام XNA فيمكنك عمل هذا بسهولة على الMesh باستخدام الMatrix class فهي تحتوي على جميع عمليات الrotation و الtransformation
Sr. Software Development Engineer
Hulu, LLC
My Blogs
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…