سؤال

إجابة على سيدي يشير إلى أن الإضاءة DOT3 يمكن أن تساعد في عرض OpenGL ES، ولكن أواجه مشكلة في العثور على تعريف لائق لما هو إضاءة Dot3.

تحرير 1.

معلومات حول iPhone هي موضع تقدير كبير.

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

المحلول

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

الطريقة التي تتم اسم DOT3 يأتي من حالة التجسيد هذه:

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB);

ينظر الى هذه مدونة مدونة على Wolfgang Engels بلوق لمزيد من المعلومات حول كيفية ضبط هذا الأمر.

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

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

أخيرا كثافة الإضاءة المنتشرة في النقطة يتناسب مع جيب التمام الزاوية بين السطح الطبيعي واتجاه الضوء. لاثنين من ناقل المنتج نقطة يكون معرف كما:

a dot b = |a||b| cos(theta)

أين |a| و |b| هو طول المتجهات a و b على التوالي و theta هي الزاوية بينهما. إذا كان الطول يساوي واحد، |a| و |b| يشار إليها باسم ناقلات الوحدة والصيغة تبسط إلى:

a dot b = cos(theta)

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

نصائح أخرى

من هنا:

يضع Bumpmapping نسيجا على نموذج حيث يحدد سطوع كل تكسيل ارتفاع ذلك Texel.

ثم يتم استخدام ارتفاع كل تكسيل لإضطرب الإضاءة عبر السطح.

يعرض التعيين العادي نسيجا على نموذج حيث يكون لون كل Texel ثلاثة قيم تحدد الاتجاه الذي موقعه على نقاط السطح.

قد يعني لون (255، 0، 0) على سبيل المثال، أن السطح في الموقع يشير إلى أسفل المحور X الإيجابي.

بمعنى آخر، كل تكسيل أمر طبيعي.

اسم DOT3 يأتي من ما تفعله بالفعل بهذه الأحياء الطبيعية.

دعنا نقول أن لديك متجه يندرج في الاتجاه نقاط مصدر الضوء الخاص بك. ودعونا نقول أن لديك المتجه الذي هو طبيعي في Texel معين على النموذج الخاص بك يخبرك بالاتجاه الذي يشير إليه Texel.

إذا قمت بإجراء معادلة رياضيات بسيطة تسمى "منتج نقطة" على هذين المتجهين العاديين، مثل ذلك:

نقطة = N1X.N2X + N1Y.N2Y + N1Z * N2Z

ثم القيمة الناتجة هي رقم يخبرك بمقدار هذين ناقلات النقاد في نفس الاتجاه.

إذا كانت القيمة هي -1، فإنها تشير في اتجاهين متعاكسين، مما يعني في الواقع أن Texel يشير إلى مصدر الضوء، ومصدر الضوء يشير إلى Texel، لذلك يجب أن يكون Texel مضاءة.

إذا كانت القيمة 1، فإنها تشير في نفس الاتجاه، مما يعني أن Texel يشير بعيدا عن مصدر الضوء.

وإذا كانت القيمة هي 0، فإن أحد النقاش يشير إلى 90 درجة بالنسبة للآخر. أي: إذا كنت تقف على الأرض تتطلع إلى الأمام، فإن متجه وجهة نظرك هو 90 درجة بالنسبة إلى طبيعية الأرض التي تشير إلى أعلى.

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