3D гэрэлтүүлэг

Энэ постоор гэрлийг хэрхэн 3-н хэмжээс орчинд тооцон хийсвэрлэх талаар бичнээ. Гэрэл гэдэг нь товчхондоо дулаан биетээс цацрах фотонууд юм. Ямар хэмжээтэйгээр цацаргасанаас хамаараад гэрэл өөр нэг гадаргуу дээр очихдоо янз бүрийн тоо хэмжээтэйгээр очдог. 3D програмчлалд гэрэлтүүлгийг загварчлан тооцон олох нь эдгээр фотонуудын тоо хэмжээг ойролцоогоор загварчлан олох явдал гэчихвэл нээх зөрсөн болохгүй боловуу. Тэгвэл эхлээд гэрлийг загварчлахтай холбоотой ойлголтуудтай танилцая.

Гэрлийн diffuse ойлт
Бид ямар нэгэн объектийн оршин байгааг харж чаддаг, яагаад гэвэл тухайн орчинд буй гэрэл бидний харж байгаа объектийн гадаргуу дээр очоод цаашаагаа ойж байдаг. Үүнийг зургаар харуулая.

гэрлийн diffuse ойлт

гэрлийн diffuse ойлт

Гэрлийн туяа гадаргууд тусч цаашаагаа олон чиглэлд биетийн гадаргууны нормалтай +-90 градусаар таран ойдог. Энэ ойлтын шинжийг анх математикч Жохан Ламберт гуай 1760 онд нээж дараах томъёонд оруулсан байна.

diffuse-reflection-formula

Энэ томъёог тайлбарлавал

normalбол биетийн гадаргууны нормал векторыг нормчилсон буюу нэгж вектор юм

Lightбол гэрлийн эх үүсвэрээс гадаргууд туссан цэг хүртлэх чиглэлийн векторыг нормчилсон вектор

intensityбол гэрлийн эх үүсвэрийн гаргасан гэрлийн хүч өөрөөр хэлбэл гэрлийн тоо хэмжээ үүнийг intensity гээд байгаа

calculated-intensityбол эцсийн бидний тооцож олсон гэрлийн intensity утга.

Хэрэв гэрлийн эх үүсвэрийн гаргаж байгаа хүчийг нь буюу intensity(цаашид энэ нэршилээр хэрэглэнэ) утгыг нь тогтмол 1.0 утгатай болгож бэхэлвэл дээрхи томъёо маань гадаргуун нормал болон гадаргуугаас гэрлийн эх үүсвэр хүртэлхи чиглэлийг илтгэсэн вектор хоёрын хоорондох энгийн скаляр үржвэр болж хувирах болно. Скаляр үржвэр нь хэрэв хоёр вектор хоорондоо 90 градус байвал эерэг утгатай, хоорондоо перпендикуляр байвал 0 утгатай, хоорондоо 90-ээс дээш градус байвал сөрөг утгатай тус тус гардаг байна. Хэрэв хоёр вектор хоёулаа нормчлогдсон байвал скаляр үржвэр нь
-1.0<=calculated-intensity<=1.0

Утга нь 0-ээс тэнцүү буюу бага байвал объектийн энэ гэрэл туссан хэсэг нь сүүдэрлэгдсэн байна. Мөн утга нь 0-ээс их байвал энэ гэрэл туссан хэсэг нь diffuse intensity утга дээр суурилан гэрэлтүүлэгдсэн байна гэсэн үг.

Объектэд diffuse өнгө онооход дараах томъёог хэрэглэдэг

apply-diffuse-color

Энд

Drgb бол объектийн diffuse өнгийг төлөөлөх улаан, ногоон, хөх өнгийг агуулах утга юм.

calculated-intensity бол Ламбертийн diffuse intensity утга.

Cdбол эцсийн diffuse өнгө

Олон тооны гэрлийн эх үүсвэрүүдтэй тохиолдолд тэдгээрийн diffuse ойлтын утгуудыг хооронд нь нэмэхэд болно. shader програмууд float төрөлтэй утга хэрэглэдэг тул үр дүнг 0.0-оос 1.0 ийн хоорондох утга болгох буюу clamp хийж байж цааш ашиглах хэрэгтэй байдаг.

Specular ойлт

Арьсан буйдан, метал гадаргуу, биллиардын бөмбөг гэх мэтийн зүйлс дээр гэрэл тусахад гэрэл гялбаж харагддаг билээ. Энэ гялбалтын утгыг тооцох олон янзын томъёо байдаг боловч ерөнхий стандарт байдлаар хэрэглэгддэг Фонгийн тусгалын томъёог авч үзэх болноо. Фонг тусгалын загварыг анх 1973 онд Ютагийн их сургуульд Bui Tuong Phong хэмээх ветнам судлаач хөгжүүлсэн байдаг. Энэ томъёо нь

phong-reflection-model

Энд

Rбол гадаргууны нормал болон гэрлийн чиглэл гэсэн хоёр вектороос тооцож олсон тусгалын векторыг нормчилсон вектор

Lightбол гэрлийн чиглэлийн векторыг нормчилсон вектор

normalбол гадаргууны нормал векторыг нормчилсон вектор

View-vectorбол камерийн харж байгаа чиглэлийг нормчилсон вектор

shininess-termбол хэр их гялбахыг илтгэх хэмжээ. Фонгийн загварт үүнийг shininess term гээд байгаа. Энэ утга их байх тусмаа хурц гэрэл нь бүдэг болж ирнэ харин бага байх тусмаа илүү хурц гялбах гэрэлтэй болно.

Isбол specular ойсон гэрлийн intensity утга

diffuse ойлтонд гэрэл янз бүрийн чиглэлд янз бүрийн өнцөгөөр ойж байсан бол specular гэрэлтүүлэгт гадаргуун нормал болон гэрлийн чиглэлийн векторуудтай хамааралтай зөвхөн нэг өнцөгөөр л ойлт хийдэг. Ойсон гэрэл болон камерын харах чиглэл хоёр векторын хоорондох скаляр үржвэр нь дараах интервалд харъяалагдах утгыг бий болгодог.

clamped-shininess-intensity

эндээс дүгнэхэд specular утга нь ойсон гэрлийн чиглэл камерийн харах чиглэлтэй бага өнцөг үүсгэх буюу зэрэгцэж ирэх тусмаа хамгийн их гялбаж харагдана харин хоорондох өнцөг нь 90 градусаас тэнцүү буюу их болох тусмаа илүү суларч харагдахаар байна гэдгийг харж болно. Intensity утгыг нь specular өнгөрүү хувиргах томъёо нь дараах байдалтай байна.

apply-intensity-to-specular

энд

Srgbбол объектийн specular өнгийг тодорхойлох улаан, ногоон, хөх өнгүүдийг энкодлосон утга

Is-бол тооцож олсон specular intensity утга

Csбол эцсийн specular өнгө

diffuse ойлтонд дурдсанчлан хэрэв олон гэрлийн эх үүсвэрүүд хэрэглэгдэж байгаа тохиолдолд тэдгээрийн specular ойлтын утгуудыг нь нэмээд үр дүнг нь өнгөны гүн буюу авч болох утгуудын интервалд нь оруулж өгөх хэрэгтэй(clamp хийх).

Ambient гэрэлтүүлэг

ambient гэрэлтүүлэг хийгээгүй объектийг хараарай

ambient-lighting-comparison

Тэгвэл ambient гэрэлтүүлэг хэрэглэвэл ямар болохыг нэг харая

ambient-lighting

 

Бодит байдалд гэрэл гадаргуу дээр ойгоод тэр ойсон гэрэл нь цаашаагаа өөр гадаргуу дээр очиж гэрэлтүүлж байдаг. Мэдээж хэрэг энерги нь сарниж дуустлаа цаашаагаа ойгоод явна. Үүнийг ambient гэрэлтүүлэг(background гэрэлтүүлэг) гээд байгаа. Энэ гэрэлтүүлэгийн процесс нь бодит мэт зураглал үүсгэхэд маш чухал үүрэгтэй. Энэ гэрэлтүүлгийг хийхэд хэрэглэдэг үндсэн арга бол объектийг бүхэлд  нь тогтмол утгаар гэрэлтүүлэх явдал юм гэхдээ энэ арга арай үнэмшил муутай зураглал үүсгэж болзошгүй байдаг. Артистын зүгээс тохируулж өгсөн текстур болон тодорхой ambient утгуудыг хослуулах замаар үүсгэх зураглалын чанарын чанарыг хангалттай хэмжээнд сайжруулж өгөх боломжтой.

ambient гэрэлтүүлэг нь орчиноос ирж буй гэрлийг нэмэлтээр тусгаж өгдөг учраас ambient өнгийг гэрэлтүүлэг хийсний дараах үр дүнгээр гарсан өнгөн дээр нэмж өгөх байдлаар ашигладаг. Дараах томъёог хэрэглэнэ

ambient-formulae

энд

Argbбол нэмэх ёстой улаан, ногоон, хөх утгуудыг агуулсан ambient өнгө

pppхэсэгт diffuse, specular, attenuation, spot гэрлүүдийн утгуудыг нэмж өгнө

 

Attenuation

Гэрэл хол зайд аялах тусмаа сарнидаг өөрөөр хэлбэл замд нь шороо, хана, хий мэтийн жижиг хэсгүүд тааралддаг гэсэн үг. Энэ шинж чанарыг хийсвэрлэхийн тулд гэрлийн intensity утгыг attenuation буюу гэрлийн шингэлтийн хэм хэмжээг илтгэсэн тоон утгаар үржүүлж тооцон олдог.  Attenuation тоон утга нь  гэрлийн эх үүсвэрээс объектийн гадаргуу хүртлэх зайнаас тооцогдон гарах гэрлийн intensity утгыг бууруулж багасгаж өгдөг. Үүнийг дараах томъёогоор дүрсэлдэг байна.

Attenuation

 

энд

Acбол attenuation тогтмол утга

Alбол тооцож олсон шуган attenuation бөгөөд A-lнь энэ тооцоололд хэрэглэгдэх шугаман тогтмол

 

 

[энэ нийтлэл бичигдэж байгаа тул та дараа дахин орж ирж шалгаарай баярлалаа.]

Сурталчилгаан дээр дapж биднийг дэмжээрэй. ↓ ↓ ↓

Нэг сэтгэгдэлтэй

  1. Adiya says:

    Hooh bayrlalaaa. anh orj irlee. ih heregtei site bna

Сэтгэгдэл бичих

*

Таныг илтгэгч аватар зураг GrAvatar.com (Хэрхэн ашиглах вэ?)

© 2010-2012 Hicheel.inFo .
Wordpress дээр суурьлаж Theme Junkie ашиглан SaKu бүтээв. HOSTED BY DUSAL HOSTING
Ангилал 3D график програмчлал (1 дахь хичээл 7 хичээлээс)