• 0
  • مالي خلق
  • أتهاوش
  • متضايق
  • مريض
  • مستانس
  • مستغرب
  • مشتط
  • أسولف
  • مغرم
  • معصب
  • منحرج
  • آكل
  • ابكي
  • ارقص
  • اصلي
  • استهبل
  • اضحك
  • اضحك  2
  • تعجبني
  • بضبطلك
  • رايق
  • زعلان
  • عبقري
  • نايم
  • طبيعي
  • كشخة
  • صفحة 1 من 2 12 الأخيرةالأخيرة
    النتائج 1 إلى 15 من 16

    الموضوع: موضوع لمناقشة التصادم في Directx

    1. #1
      التسجيل
      20-08-2004
      المشاركات
      29
      المواضيع
      10
      شكر / اعجاب مشاركة

      موضوع لمناقشة التصادم في Directx

      السلام عليكم
      في الحقيقة هذا الموضوع استفسار عن كيفيت صناعة تصادم باستخدام كلاً من visual Basic 6 و الــ Directx7
      اول شي للتصادم يجب انك تحدد موقع المجسم
      استخدمت خاصية SetPosition لتحديد موقع الجسم باستخدام الكود التالي
      Mesh1.SetPosition scene, 20, -20, 50
      ثانياً استخدمت الكود التالي لعمل التصادم
      if Mesh1.SetPosition >= Mesh2.SetPosition Then Mesh1.SetPosition scene, 10, 20, 40
      لكن للاسف تطلع رالة تقول الخاصيه SetPosition ليست اختيارية.

      حصلت موضوع اخر
      يقول ان لعمل تصادم اجعل المجسم محاط بدائرة اومستطيل اذا كان التصادم في بعدين


      او اجعل المجسم محاط بكرة او مكعب اذا كان التصادم في ثلاثة ابعاد


      فاالرجاء مساعدتي في عمل ذلك ان أمكن

    2. #2
      التسجيل
      21-02-2003
      الدولة
      الإمارات العربية المتحدة
      المشاركات
      2,350
      المواضيع
      80
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      ليس لدي الكثير ولكن .. جرب GetPosition بدل SetPosition في كود التصادم ...
      و بالنسبة للعملية الثانية فهي صحيحة ولكن لا اعرف طريقة تطبيقها ...

      اعتقد يزيد يستطيع ان يساعدك ...

    3. #3
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة
      نفرض أن لدي دائرتان وهما c1 و c2 ولدي كل واحدة إحداثيات هم x, y, z في حالة ثلاثي الأبعاد ... و x,y في حالة ثنائي الأبعاد ..
      r1 يمثل نصف القطر لي c1
      r2 يمثل نصف القطر لي c2

      ===========

      فستكون لدي المعادلة الخاصة بالتصادم هي

      كود:
      ||c2-c1|| <= r2+r1

      ===========



      نقوم أولاً بطرح الـ vectors للدائرتان وهما c2 – c1 ونضع النتيجة بي الـ vector المسي u .. ومن ثم نحسب الـ Normalization له ... لعمل خط مستقيم بين الجسمين ...

      وبواسطة جمع أنصاف الأقطار .. نستطيع معرفة هل الدائرنات تقاطعا .. إم لا


      كود:
       
      Vector3 Vector3::operator-(Vector3& rhs)
      {
      //step 1
          Vector3 u;
          u.mX = mX - rhs.mX;
          u.mY = mY - rhs.mY;
          u.mZ = mZ - rhs.mZ;
       
      //step 2
      sqrtf(uX*uX + uY*uY + uZ*uZ);;
       
       
      //step 3
       
          float len;
       
          mX /= len;
          mY /= len;
          mZ /= len;
       
          return u;
       
      }
       
       
      

    4. #4
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      كود:
       
      visual Basic 6 و الــ Directx7
      هل يدعم الـ vb الـ DirectX 9

      إذا كان يدعم النسخة السابعة فأنا أنصحك بالأنتقال إليها ... لأنها أفضل وأسهل ...

    5. #5
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      هنا

      بالتوفيق
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    6. #6
      التسجيل
      20-08-2004
      المشاركات
      29
      المواضيع
      10
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      أشكر الجميع
      بالنسبة للاخ Son Of UAE
      في الحقيقة جربة GetPosition بس مانفع

      اما الاخ RAAAAD
      فشكر اً لشرحك بس الشرح علي c++
      والــ vb لا يدعم الDirectX 9


      والاخPRG of RPG
      فشكراً لك بس والله مافهمت شيء


    7. #7
      الصورة الرمزية RAAAAD
      RAAAAD غير متصل عضو مميز في منتدى البرمجة
      التسجيل
      09-09-2005
      المشاركات
      63
      المواضيع
      6
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      شوف إذا كان directx 7 يدعم حساب الـ normlization vector فتستطيع حساب التصادم عن طريق الدالة setnormal ...

      جرب هذا الكود

      كود:
       
      if Mesh1.setnormal >= Mesh2.setnormal Then Mesh1.SetPosition scene, 10, 20, 40

      أو شئ قريب لهذا ..

    8. #8
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      اقتباس المشاركة الأصلية كتبت بواسطة العالميه مشاهدة المشاركة
      حصلت موضوع اخر
      يقول ان لعمل تصادم اجعل المجسم محاط بدائرة اومستطيل اذا كان التصادم في بعدين

      او اجعل المجسم محاط بكرة او مكعب اذا كان التصادم في ثلاثة ابعاد
      في موقعي عرضت طرق التصادم 2D ،،، عموماً الشائعة الإستخدام هي Rect و Circle و pixel للتودي

      أما الثري دي فالشائعة هي Sphere و Box و Face زي ما تفضلت أخوي

      أبعرض هنا طريقة 2D Rectangle Collision عشان فكرة التصادم واضحة :

      هذي الخمس حالات الأساسية لأي مجسمين A و B :



      كود:
      الحالة 1
      المجسمين غير متصادمين
      الحالة 2 و 3 : توضحان متى يحدث التصادم الأفقي:
      المجسين متصادمين لأن:
      B.Right > A.left & A.Right > B.Left
      الحالة 4 و 5 : توضحان متى يحدث التصادم العامودي:
      المجسين متصادمين لأن:
      B.Buttom > A.Top & A.Buttom > B.Top
      
      وإذا حدث هذين الشرطين معاً يحدث التصادم
      *قارن الكود بالصورة*
      هذه كيفية إكتشاف التصادم بطريقة 2D Rectangle Collsion والطرق كثيرة، على حسب الحاجة

      وبالنسبة لطرق الثري دي أعقد من التو دي بس بالنهاية راح تكون داخل كلاس مغلفة وبعد فترة يمكن تنسى كيف سويتها -.-

      أتمنى فكرة التصادم وضحت ،،، والآن نحتاج منك إنك تحطنا في الصورة :

      1- تو دي ولا ثري دي
      2- نوع التصادم
      3- شغال على محرك ولا على DirectX7 مباشرة

      أول شي أقدر اقوله لك أنها GetPosition اللي تحتاجها لأنك ماتبي تغير مكان المجسم (SetPosition) بل تريد أن تعرف مكانه (GetPosition)

      ملاحظة: للأسف أنا وضعت الرابطة للنسخة الإنجليزية ، هنا النسخة العربية
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    9. #9
      التسجيل
      20-08-2004
      المشاركات
      29
      المواضيع
      10
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx


      الاخPRG of RPG

      التصادم ثري دي
      انا اشتغل على DirectX7 مباشرة


    10. #10
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      بالنسبة للثري دي DX7 ما انصحك تشتغل عليه بالمرة

      إذا إنت حاب الVisual Basic إشتغل على Visual Basic.Net - DirectX9

      الشغل عليه أسهل بكثير من DirectX7-VB6 وأمتع.... عموماً هذا ماهو الموضوع

      __________________

      بالنسبة للثري دي عندنا Box و Sphere و Face طرق لإكتشاف التصادم

      أسهلها بالطبع Sphere وهي تشبة تماماً 2D Circle Collision فقط ضيف البعد Z في المعادلة

      لنفرض أن لدينا مجسم A و مجسم B

      والآن يجب أن نوجد الجسم المحيط Boundry للمجسمين وهو في حالتنا هذه الكره

      كره تغلف المجسم A و كرة أخرة تغلف المجسم B ....

      أنظر الصورة

      ستجد نوعين من الBounders :
      1- Sphere حتى نستخدم Sphere Collision ...
      2- Box حتى نستخدم Box Collision ...

      وحتى توجد الSphere Bounder لمجسم تحتاج الCenter في الغالب هي الOrigin وتحتاج الRadius فقط لاغير
      وهي عملية إحصائية لجميع نقاط المجسم...

      الآن لدينا Sphere Bounder للمجسم A و SphereBounder للمجسم B
      المسافة بين الBounders عملية رياضية بسيطة : تأخذ المتجة بين المركزين ثم تحسب طول هذا المتجة
      ثم تقارن ما اذا كان طول المسافة أكبر من مجموع القطرين وبالتالي لا يوجد تصادم...

      ملاحظة: ليس بالضروري أن تستخدم الجذر التربيعي لحساب الطول (لأن هذا سيأخذ وقت معالجة طويل)
      ملاحظة: لا تنسى أن تأخذ بعين الإعتبار الMatrix المطبقة على المجسمات

      هذا كل شيء
      لقد وضعت في محركي مثال على إكتشاف التصادم Sphere و Box تستطيع الرجوع وتتبع سير العملية (DX9-VB.Net)

      الموضوع طويل واختصرت منه الكثير، حاول أن تنجح في صنع التصادم ولو لم تتمكن من العملية جرب أن تشتغل على Dx8 و Dx9 (أفضل بكثير) وإستخدم محركات جاهزة في البداية حتى تتعلم كيف تصنع محركك الخاص...

      ByeBye
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    11. #11
      التسجيل
      27-11-2002
      الدولة
      Demon * World
      المشاركات
      300
      المواضيع
      60
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      الدايركت إكس يبيله واحد عنده إجازة سنتين و يمه قهوة


      و شفتو اشلون الفيجوال بيسك ما يدعم الدايركت اكس 9 ؟؟

      الـ ++C يدعم اخير اصدار و المثال اللي شرحه الاخو راااااد "عملاق"
      www.nightvisiongames.com
      المشروع الحالي (غير معلن عنه) : N-1
      نوع اللعبة : RTS (إستراتيجية)
      لغة اللعبة : English + عربي (احتمال كبير)
      فريق العمل :
      حسين هاني (أنا) : مبرمج
      المهندس وائل : مبرمج
      فراس الإسكندراني : تصميم و إدارة
      Snake_x86 : المصمم القائد لرسوم الـ 3D

      إذا تبي تدخل معانا ، ادخل منتدانا الإنظمام من هذي الوصلة :
      http://nightvisiongames.com/communit...hp?showforum=4

      و شوف الموضوع المثبت

    12. #12
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      اقتباس المشاركة الأصلية كتبت بواسطة GOGENDANTESS مشاهدة المشاركة
      و شفتو اشلون الفيجوال بيسك ما يدعم الدايركت اكس 9 ؟؟
      بس أخوي لو قرأت ردي:

      اقتباس المشاركة الأصلية كتبت بواسطة PRG of RPG مشاهدة المشاركة
      إذا إنت حاب الVisual Basic إشتغل على Visual Basic.Net - DirectX9
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    13. #13
      التسجيل
      27-11-2002
      الدولة
      Demon * World
      المشاركات
      300
      المواضيع
      60
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      اقتباس المشاركة الأصلية كتبت بواسطة PRG of RPG مشاهدة المشاركة
      بس أخوي لو قرأت ردي:



      هما تتظل الـ ++C بالصدار بسبب السرعة و اهي اختيار كل شركات الألعاب
      www.nightvisiongames.com
      المشروع الحالي (غير معلن عنه) : N-1
      نوع اللعبة : RTS (إستراتيجية)
      لغة اللعبة : English + عربي (احتمال كبير)
      فريق العمل :
      حسين هاني (أنا) : مبرمج
      المهندس وائل : مبرمج
      فراس الإسكندراني : تصميم و إدارة
      Snake_x86 : المصمم القائد لرسوم الـ 3D

      إذا تبي تدخل معانا ، ادخل منتدانا الإنظمام من هذي الوصلة :
      http://nightvisiongames.com/communit...hp?showforum=4

      و شوف الموضوع المثبت

    14. #14
      التسجيل
      01-11-2006
      المشاركات
      18
      المواضيع
      2
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

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

      مسألة التصادم ليس لها علاقة بمحرك رسومي دونا عن الآخر

      فمثلا لا يختلف مبدأ التصادم في DirectX عن OpenGL و...

      ولكن المهم فهم كيفية التعامل مع التصادم..

      في الألعاب يستخدم أكثر من مدخل في عالم الحسابات والفيزياء:

      1) 3D Math:
      أ. بسيطة: وهي أبسط طريقة وتعتبر أولية جدا
      . المسافة بين نقطتين في الفضاء:
      Assume we have 2 vectors (i.e each vector is the center-point for each object in the 3d space)
      // --
      v1 = obj1.gePosition();
      v2 = obj2.getPosition();
      distance = sqrt ((v1.x-v2.x)+(v1.y-v2.y)+(v1.z-v2.z))
      // --
      فإذا كانت النتيجة صفر فهما على نفس المكان...
      الآن أنت بحاجة لمعرفة قطر كل منهما وإبدال الصفر بمجموع أنصاف أقطارهما..
      // --
      r1 = float(obj1.transform.boundingSphere[2])/2;
      r2 = float(obj2.transform.boundingSphere[2])/2;
      if (distance <= r1+r2)
      // stop Moving
      else
      // Cont. Moving
      // --
      ب. تركيبية:
      1.وهو يكون باستخدام Ray
      2. استخدام خوارزميات تحسين الآداء Octree
      2) Physics
      باستخدام إحد حزم الفيزياء وتعريف الأجسام المتحرك منها والثابت وحساب Interpenetration بين الجسيمات.

      عسى أن أكون أفدتك في شيء

      وأعتذر عن عدم تنظيم المادة بسبب عدم سهولة التعامل مع محرر المنتدى...
      H4 ZeQart

    15. #15
      التسجيل
      28-10-2002
      الدولة
      (السعودية)
      المشاركات
      1,042
      المواضيع
      71
      شكر / اعجاب مشاركة

      رد: موضوع لمناقشة التصادم في Directx

      اقتباس المشاركة الأصلية كتبت بواسطة H4 ZeQart مشاهدة المشاركة

      وأعتذر عن عدم تنظيم المادة بسبب عدم سهولة التعامل مع محرر المنتدى...
      أوافق 100% الموضوع أطول من أن يشرح بشكل كامل،،، من هنا تأخذ المقدمة والمفاهيم أو المشاكل التقنية ، ولكن لا امتلك الوقت حالياً لكتابة الأمثلة الكاملة ، اتمنى لو يتفضل احد الإخوان/أخوات بوضع مثال Visual Basic للتوضيح ....
      كود:
      Arabian Xtreme Designs : http://axdteam.com

    صفحة 1 من 2 12 الأخيرةالأخيرة

    ضوابط المشاركة

    • لا تستطيع إضافة مواضيع جديدة
    • لا تستطيع الرد على المواضيع
    • لا تستطيع إرفاق ملفات
    • لا تستطيع تعديل مشاركاتك
    •