تحديد أعلى في Direct3D عرض مصفوفة عندما الكاميرا تتحرك باستمرار

StackOverflow https://stackoverflow.com/questions/252991

  •  05-07-2019
  •  | 
  •  

سؤال

في تطبيق Direct3D بلدي، يمكن نقل الكاميرا باستخدام الماوس أو مفاتيح الأسهم. ولكن إذا كنت رمز القرص الثابت (0،1،0) كما متجه اتجاه يصل في LookAtLH، والإطار يذهب فارغة في بعض التوجهات من الكاميرا.

ولقد علمت بالطريقة الصعبة أن عند النظر على طول Y-محور، (0،1،0) لم يعد يعمل والاتجاه لأعلى (يبدو واضحا؟). إنني أفكر في التحول بلدي الاتجاه تصل إلى شيء آخر لكل من هذه الحالات الخاصة. هل هناك طريقة أكثر رشيقة للتعامل مع هذا؟

هل كانت مفيدة؟

المحلول

وعلى افتراض انك يمكن حساب متجه لافتا إلى الأمام (ما كنت تبحث في - موقفكم) وناقلات مشيرا الحق (دائما على XZ-الطائرة ما لم تتمكن من لفة). تطبيع كل من هذه النواقل، ثم يصل هو حق x (حيث x هو عبر المنتج) إلى الأمام.

في عام، يمكنك سد العجز في الخاص بك ياو، في الملعب ولفة في مصفوفة دوران وتدوير ناقلات محور للحصول على حق، صعودا وإلى الأمام، لكنني أعتقد أن هذا ما كنت تستخدم LookAtLH لتجنب.

http://en.wikipedia.org/wiki/Rotation_matrix#The_3- dimensional_rotation_matricies

نصائح أخرى

والطريقة رشيقة للتعامل مع هذا هو استخدام وحدة كواتيرنيون. A من أربعة هو متجه من 4 القيم الذي يشفر التوجه في الفضاء 3D (وليس دوران كما تؤكد بعض المواد) ومن أربعة وحدة واحدة حيث طول ناقلات الجذر التربيعي (س ^ 2 + ص ^ 2 + Z ^ 2 + ث ^ 2) هو 1.0. وهناك مجموعة من العمليات الحسابية للعمل مع كواتيرنيون التي هي مماثلة لاستخدام المصفوفات لترميز التناوب، مع مكافأة إضافية أن كواتيرنيون لا يمكن أبدا أن يمثل التوجه منحط. يمكنك تحويل بحرية كواتيرنيون إلى 3X3 أو 4X4 المصفوفة عندما كنت في حاجة لتغذية نتيجة لGPU.

والمشكلة هي أنه في حين تقوم بنقله الكاميرا الخاص بك، فإنك سوف يعرض تطور قليلا في الاتجاه لأعلى الكاميرا. من خلال إجبار الكاميرا لإعادة المركز نفسه على (0،1،0) ناقلات كل التكرار، وكنت في الواقع الدورية للكاميرا ثم تحامل توجه الكاميرا على البقاء على سطح الكرة، ولكن عندما يضرب الكاميرا ل قطب هذا المجال ليس هناك اتجاه جيد لاستدعاء "حتى" ومصفوفة يذهب المفرد ويعطيك المضلعات الصفر الحجم (وبالتالي شاشة سوداء). كواتيرنيون لديها القدرة على دس من خلال هذين القطبين ويخرج الجانب الآخر على ما يرام، ويترك لك مع مصفوفة صالحة في جميع الأوقات. كل ما عليك القيام به هو السيطرة على "تحريف".

لقياس هذا تطور يجب عليك قراءة المادة كين شوميك في "الحد من تطور الألياف حزمة" في الرسومات الأحجار الكريمة 4. الكتاب وقال انه تبين وسيلة جيدة لقياس هذا تطور المتراكمة وكيفية إزالته عندما يكون الهجوم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top