سؤال

في HLSL، هناك الكثير من مصفوفة الضرب وبينما أفهم كيف وأين استخدامها لست متأكدا من كيفية اشتقاقها أو أهدافها الفعلية.

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

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

المحلول

يمكنك الحصول على بعض المعلومات، من وجهة نظر رياضية، على هذه المادة ويكيبيديا أو في MSDN..

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

من أجل تقديم النموذج في الموضع الصحيح، يجب عليك قياسه وتدويره وترجمته إلى الموضع "الحقيقي" في مشهدك. هذا الموقف الذي تتحرك إليه هو المعبر عنه في "الفضاء العالمي"الإحداثيات التي تعبر أيضا عن العلاقات الحقيقية بين القمم في مشهدك. للقيام بذلك، يمكنك ببساطة مضاعفة كل موقف Vertex عالم مصفوفة. يجب إنشاء هذه المصفوفة لتضمين معلمات الترجمة / التداول / النطاق التي تحتاج إلى تطبيقها، من أجل ظهور الكائن في الموضع الصحيح في المشهد.

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

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

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

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