سؤال

أحاول معرفة ماهية ذات ثنائي في سياق برمجة الرسومات ولكنني أخرج ، رأيت في موقع أنه تم حساب الثنائي على أنه المنتج المتقاطع بين العادي والمملي (أي الصليب الطبيعي (الطبيعي ، الظل) ) ، هل هذه هي الطريقة الصحيحة لحساب ثنائي؟

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

المحلول

بالنسبة الى Mathworld, ، يتم تعريف ناقل ذا ثمين على أنه cross(tangent,normal) أين tangent و normal نكون وحدة المتجهات العادية.

لاحظ أنه ، بالمعنى الدقيق للكلمة ، أمر مهم عندما تأخذ منتجات متقاطعة. cross(tangent,normal) يشير في الاتجاه المعاكس من cross(normal,tangent). قد يهم أو لا يهم حسب طلبك. لا يهم حقًا طالما أن حساباتك متسقة داخليًا.

نصائح أخرى

فقط للإشارة إلى أن هذا ليس تعريفًا تمامًا. هذا هو تعريف BI الظل. العجين هو شيء مختلف تمامًا يتعلق بـ "الآخر" الطبيعي الذي يتكون من سطح منحني.

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

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

تمثل ناقلات الظل والثنائي الملمس الأيضي الأضواحي ، أي المتجهات الموازية للسطح الطبيعي.

من الناحية الفنية - لأنها تشكل أساسًا عظامًا ثم ثنائيًا = صليب (الظل ، طبيعي) ومع ذلك في الممارسة العملية ، نظرًا لأن الثنائيات والشفان يتم توليدها من الأشعة فوق البنفسجية في الخريطة العادية وقد يتم حساب متوسطها على عدة رؤوس ، فقد لا تكون عظمية تمامًا.

لبضع مقالات جيدة حول هذا الموضوع قراءة
http://www.3dkingdoms.com/weekly/weekly.php؟a=37
و
http://www.blacksmith-studios.dk/projects/downloads/bumpmapping_using_cg.php

في الواقع ، لا ، في بعض الأحيان ليس كذلك. في الرسومات ثلاثية الأبعاد ، على الأقل.

إذا تم تمديد نسيج ، فمن الممكن ألا يكون Binormal عموديًا على حد سواء الطبيعي والمملي (على الرغم من أنه يجب أن يكون عموديًا).

فقط استخدم كل ما حسب مصدرك. إذا كان المصدر يوفر كل من الظل والثنائي ، فهو جيد. إذا كان هناك الظل فقط ، ثم احسب ثنائيًا على أنه عمودي على الظل والطبيعية.

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

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

نعم ، الثنائي أو bitangent هو الصليب بين الطبيعي ومماس قمة الرأس. إذا كان لديك أي متجهات 2 من هؤلاء الثلاثة ، فيمكنك حساب الآخر.
على سبيل المثال ، إذا كان لديك الظل و binormal (أو bitangent) يمكنك حساب الطبيعي.
فيما يلي عينة يمكن أن تنشئ ثنائيًا و bitangents في GLSL لها الطبيعية فقط:

varying vec3 normal;
varying vec4 vpos;
varying vec3 T,B;
void main()
{
    gl_TexCoord[0] = gl_MultiTexCoord0;
    normal = normalize(gl_NormalMatrix*gl_Normal);
    gl_Position =gl_ProjectionMatrix*gl_ModelViewMatrix*gl_Vertex;
    vpos = gl_ProjectionMatrix*gl_ModelViewMatrix*gl_Vertex;
    T = cross(normal,vec3(-1,0,0));
    B = cross(T,normal);
}

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

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