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

    الموضوع: سؤال حول موضوع الكاميرا أرجو الإفاده

    1. #1
      التسجيل
      14-08-2003
      المشاركات
      69
      المواضيع
      3
      شكر / اعجاب مشاركة

      سؤال حول موضوع الكاميرا أرجو الإفاده

      شباب لو ممكن أحد يجيب هذا السؤال اللي طالما بحثت عن إجابه له
      هل من الممكن تحريك الكاميرا حسب توجيه الشخصيه في العاب الثري دي؟
      ولو ممكن ياليت أحد يشرحلي أو يوضحلي الصوره علما بانني أستعمل الفيجوال بيسك
      وشكرا:-) :0)

    2. #2
      التسجيل
      14-07-2003
      الدولة
      Ksa
      المشاركات
      612
      المواضيع
      31
      شكر / اعجاب مشاركة
      كيف يعني ما فهمت وضح


      :":

    3. #3
      التسجيل
      21-02-2003
      الدولة
      الإمارات العربية المتحدة
      المشاركات
      2,350
      المواضيع
      80
      شكر / اعجاب مشاركة
      سؤالك مش واضح .... لم تحدد نوع الكامير ... هل هي من الخلف مثل تومب ريدير او من الجنب مثل كره القدم ؟ ...



      على العموم انا لا اعرف الاجابة

    4. #4
      التسجيل
      16-02-2003
      الدولة
      Kuwait
      المشاركات
      33
      المواضيع
      2
      شكر / اعجاب مشاركة
      first..

      which directx version u use...??

      i use dx9 and vb.net....if u use the same then this may help u...

      just assign the world position of the desired object (character) to the device.transform.view property...thats all...ofcourse u need to play with it alittle...

      here r some sample's...

      ...............3rd person view:
      dim mainCharMesh as Mesh = yourCharacterMesh
      dim newCameraPos as Vector3
      dim newCameraLAt as Vector3
      newCameraPos.X = CSng(mainCharMesh.Device.Transform.World.M41)
      newCameraPos.Y = CSng(mainCharMesh.Device.Transform.World.M42)
      newCameraPos.Z = CSng(mainCharMesh.Device.Transform.World.M43 - 3.0F)
      newCameraLAt.X = newCameraPos.X
      newCameraLAt.Y = newCameraPos.Y
      newCameraLAt.Z = newCameraPos.Z + 3
      ...............or 1st person view:
      newCameraPos.X = CSng(mainCharMesh.Device.Transform.World.M41)
      newCameraPos.Y = CSng(mainCharMesh.Device.Transform.World.M42)
      newCameraPos.Z = CSng(mainCharMesh.Device.Transform.World.M43)
      newCameraLAt.X = newCameraPos.X
      newCameraLAt.Y = newCameraPos.Y
      newCameraLAt.Z = newCameraPos.Z - 1
      ................then use the values to set the camera into its new position
      Device.Transform.View = Matrix.LookAtLH(newCameraPos, newCameraLAt, cameraUpVec3)
      ...............put this in a sub and call the sub on each frame so the camera updates on time...

      hope this helps...

    5. #5
      التسجيل
      22-08-2002
      المشاركات
      129
      المواضيع
      30
      شكر / اعجاب مشاركة
      السلام عليكم

      هو اصلا لازم تتحرك الكاميرا مع الشخصية و الا الشخصية بتختفي من الشاشة.

      اول شيء عليك تكتب كود تحريك الشخصية ثم تساوي احداثيات الكاميرا مع حركة الشخصية .

      في الثري دي تعرف ان المحور X هو عرض الشاشة و Y هو عمق الشاشة و Z هو ارتفاع الشاشة .

      فلكل شيء موجود على الشاشة احداثيات .. الشخصيات و الكاميرا و .. و ..
      و هي x و y و z .

      فبعد برمجة حركة الشخصية يمكن استخدام المعادلات الرياضية او المصفوفات للتحكم في حركة الكاميرا و تتم حركة الكاميرا على محورين(غالباً) هما x و y .

      هذا مثال للتبسيط و ليس كود :
      افرض ان لديك شخصية بإسم man و كاميرا لمتابعة الشخصية بإسم camera ...

      فأن :

      camera.x = man.x - 320
      camera.y = man.y - 200

      هذا طبعا ليس كود و لكنه للتوضيح فقط و لو فرضنا انه كود فسيجعل الشحصية في منتصف الشاشة تقريبا .. حيث ستكون الشخصية في منتصف عرض الشاشة و هنا عرض الشاشة هو X و ستكون على بعد 200 نقطة بالنسبة لعمق الشاشة .(( Y )).
      -----------------------------------------------------------------
      لا شيء مستحيل في برمجة الالعاب

    6. #6
      التسجيل
      16-02-2003
      الدولة
      Kuwait
      المشاركات
      33
      المواضيع
      2
      شكر / اعجاب مشاركة
      hey man...

      u made it too complex...

      it is easier than that...no need for matrix...actually useing matric in these simple areas will eat the game fram rate...

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

    8. #8
      التسجيل
      14-08-2003
      المشاركات
      14
      المواضيع
      0
      شكر / اعجاب مشاركة
      wtf...

      i am using that source i pasted above in my game engine...it works 100%...

      believe me u dont need matrix...as i said once...matrix takes some process time and this is not good...

      another reason for not using matrix is that this is a simple thing and it can be done with simple addition math...

    9. #9
      التسجيل
      16-08-2002
      المشاركات
      204
      المواضيع
      16
      شكر / اعجاب مشاركة
      انا راح اعطي فكرة عامة موضوع اللاعب والكاميرا:

      اول شي لكل كاميرا موقعين:
      ***الموقع الاول: هو موقع الكامير. اسمو (posion of camera)
      ***الموقع الثاني: هو اتجاه الكامير (اي الكاميرا نتضر الى من)(lookAt)
      يعني تقدر تقول زي السهم. (1)>----------------> (2)

      وطبعا كل موقع لو احداثياته (ْX,Y,Z)

      واللاعب عنده موقع واحد وهو موقع الاعب في الفضاء الثلاثي الابعاد

      يعني اتجاه نظر الكامير = موقع اللاعب

      الاحداثيات هي:
      X هو على يمين الشاشة
      -X على يسار الشاشة
      Y للاعلى
      -Y للاسفل
      Z لخارج الشاشة
      -Z لداخل الشاشة

      هذي الفكرة العامة اما بانسبة للتحريك الكامير مع اللاعب هناك شي اخر وهو الدوران ، والدوران = الزاوية من الموضوع الاصلي ويكون حول محورY

      وهذا كود التحريك
      كود:
      dim sngPositionX As Single
      dim sngPositionZ As Single
      dim sngLookAtX As Single
      dim sngLookAtZ As Single
      dim sngAngleY as Single
      dim Dis as Single
      dis =60
      sngLookAtX = sngLookAtX + (Cos(sngAngleY)
      sngLookAtZ = sngLookAtZ + (Sin(sngAngleY)
      sngPositionX = sngLookAtX + (Cos(sngAngleY) * Dis)
      sngPositionZ = sngLookAtZ + (Sin(sngAngleY) * Dis)
      
      camera.x =sngPositionX
      camera.y = sngPositionY
      camera.z =sngPositionZ
      camera.lookAtX = sngLookAtX
      camera.lookAtY = sngLookAtY
      camera.lookAtZ = sngLookAtZ
      
      player.lookAtX = sngLookAtX
      player.lookAtY = sngLookAtY
      player.lookAtZ = sngLookAtZ
      
      player.RotationY= sngAngleY
      ستلاحظ ان هناك متغير dis هذا النتغير هو يحمل المسافة بين الكامير و نظر الكاميرا(اي الكامير واللاعب)

      ارجو ان اكون واضح في الشرح
      واي استفسار آخر انا حاضر

      شوف اللعبة رن الموجودة في التوقيع راح تفيدك في الكاميرا وتحريك الاعب واشيا اخرى
      مواضيعي القديمه
      Run3D

      ClockTower3D

    10. #10
      التسجيل
      14-08-2003
      المشاركات
      69
      المواضيع
      3
      شكر / اعجاب مشاركة
      شكرا على التفاعل من "أع ضاء المنتدى وأولا :
      الأخ zifft
      i,m vity indebted for you to your answer
      thank you for your reaction

      الأخ مبرمج الألعاب
      والله مدري كيف أشكرك
      تراك أفدتني كثيييير والله


      الأخ son of use
      مشكور أخوي وما قصرت معانا

      تسلملي يا : i386 وما قصرت

      أما انت يا الأخ كريستال فما أقدر أقلك أكثر من جزاك الله ألف ألف خير
      ومشكووووووووور على الردود

    11. #11
      التسجيل
      14-08-2003
      المشاركات
      14
      المواضيع
      0
      شكر / اعجاب مشاركة
      my old nick was zifft...and the new one is i386...

      ur welcome..

    12. #12
      التسجيل
      14-08-2003
      المشاركات
      69
      المواضيع
      3
      شكر / اعجاب مشاركة
      there is not diffrence
      zifft or i389
      in general
      thank you agin

    13. #13
      التسجيل
      07-01-2003
      الدولة
      Egypt,CA
      المشاركات
      37
      المواضيع
      1
      شكر / اعجاب مشاركة
      السلام عليكم ،،

      اولا: بخصوص المصفوفات و انها تأكل معدل تغير سرعة العرض فهو كلام خاطىء !

      نقلاً من كتاب برمجة الالعاب المرشد الكامل - الجزء الثالث
      لعمل نموذج لكاميرا :
      اولاً : هناك نوعان من الكاميرات المستخدمة فى الالعاب -
      نموذج كاميرا اويلر (Euler) و
      و معنى هذا النموذج ان الكاميرا له زوايا و اتجاه و موضع .
      و هناك نوع اخر اسمه UVN الذى لديه امكانية النظر الى هدف معين Look At Target
      و U,V,N هم متجهات .

      و عند استخدام الكامير يجب ان تكون لديك هذه المعلومات 1- مجال الرؤية Field Of View(FOV)
      2- بعد الرؤية Viewing Distance - مستويات القطع او القص البعيدة و القريبة Far and Near Clipping Planes
      - و مستوى الرؤية View Plane و منفذ رؤيتك او مكان رؤيتك View Port - كل هذه المطاليب
      تلعب دور هام فى تكوين الكاميرا .
      و بإختصار اجعل احادثيات لاعبك هى احادثيات الكاميرا طبعاً هناك خفايا و طرق عديدة مثل التدوير
      كانك تحلق فى طائرة و و التتبع و و .
      Author, Game Programming the Complete Guide (Vc,Dx)
      CEO EgyptGames.llc
      Computer Graphics,Programmer.
      انا لو لم اكن مصرياً * لوددت ان اكون مصرياُ .

    14. #14
      التسجيل
      07-01-2003
      الدولة
      Egypt,CA
      المشاركات
      37
      المواضيع
      1
      شكر / اعجاب مشاركة
      الى الاستاذ الذى يقول ان الماتريكس ليس لها فائدة او لا يستحسن استخدامها

      كيف تقول هذا و انت مستخدم المصفوفات هنا فى
      Author, Game Programming the Complete Guide (Vc,Dx)
      CEO EgyptGames.llc
      Computer Graphics,Programmer.
      انا لو لم اكن مصرياً * لوددت ان اكون مصرياُ .

    15. #15
      التسجيل
      07-01-2003
      الدولة
      Egypt,CA
      المشاركات
      37
      المواضيع
      1
      شكر / اعجاب مشاركة
      الى الاستاذ الذى يقول ان الماتريكس ليس لها فائدة او لا يستحسن استخدامها
      كيف تقول هذا و انت مستخدم المصفوفات هنا فى نقل المجسم ( MainCharMesh) من احداثياته و هو فى العالم World Coordinates او بيئته الى احداثيات الكاميرا اى قمت بعمل نقل للاحداثيات او تحويل Transform لكى تجعل هذا الكائن امام الكاميرا

      ...............3rd person view:
      dim mainCharMesh as Mesh = yourCharacterMesh
      dim newCameraPos as Vector3
      dim newCameraLAt as Vector3

      من هنا
      ----------
      newCameraPos.X = CSng(mainCharMesh.Device.Transform.World.M41)
      newCameraPos.Y = CSng(mainCharMesh.Device.Transform.World.M42)
      newCameraPos.Z = CSng(mainCharMesh.Device.Transform.World.M43 - 3.0F)
      ---------- الى هنا استخدمت المصفوفات

      newCameraLAt.X = newCameraPos.X
      newCameraLAt.Y = newCameraPos.Y
      newCameraLAt.Z = newCameraPos.Z + 3

      ...............or 1st person view:

      و هنا ايضا استخدمت المصفوفات
      newCameraPos.X = CSng(mainCharMesh.Device.Transform.World.M41)
      newCameraPos.Y = CSng(mainCharMesh.Device.Transform.World.M42)
      newCameraPos.Z = CSng(mainCharMesh.Device.Transform.World.M43)
      newCameraLAt.X = newCameraPos.X
      newCameraLAt.Y = newCameraPos.Y
      newCameraLAt.Z = newCameraPos.Z - 1
      ................then use the values to set the camera into its new position

      و هنا استخدمت المصفوفات MatrixLook At Left Hand و استخدمت نظام اليد اليسرى .

      Device.Transform.View = Matrix.LookAtLH(newCameraPos, newCameraLAt, cameraUpVec3
      Author, Game Programming the Complete Guide (Vc,Dx)
      CEO EgyptGames.llc
      Computer Graphics,Programmer.
      انا لو لم اكن مصرياً * لوددت ان اكون مصرياُ .

    صفحة 1 من 3 123 الأخيرةالأخيرة

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

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