Энэ постоор гэрлийг хэрхэн 3-н хэмжээс орчинд тооцон хийсвэрлэх
талаар бичлээ. Гэрэл гэдэг нь товчхондоо дулаан биетээс цацрах фотонууд
юм.
Ямар хэмжээтэйгээр цацаргасанаас хамаараад гэрэл өөр нэг гадаргуу
дээр очихдоо янз бүрийн тоо хэмжээтэйгээр очдог. 3D програмчлалд
гэрэлтүүлгийг загварчлан тооцон олох нь эдгээр фотонуудын тоо хэмжээг
ойролцоогоор загварчлан олох явдал гэчихвэл нээх зөрсөн болохгүй
боловуу. Тэгвэл эхлээд гэрлийг загварчлахтай холбоотой ойлголтуудтай
танилцая.
Гэрлийн diffuse ойлт
Бид ямар нэгэн объектийн оршин байгааг харж чаддаг, яагаад гэвэл тухайн орчинд буй гэрэл бидний харж байгаа объектийн гадаргуу дээр очоод цаашаагаа ойж байдаг. Үүнийг зургаар харуулая.
Гэрлийн туяа гадаргууд тусч цаашаагаа олон чиглэлд биетийн гадаргууны нормалтай +-90 градусаар таран ойдог. Энэ ойлтын шинжийг анх математикч Жохан Ламберт гуай 1760 онд нээж дараах томъёонд оруулсан байна.
Энэ томъёог тайлбарлавал
бол биетийн гадаргууны нормал векторыг нормчилсон буюу нэгж вектор юм
бол гэрлийн эх үүсвэрээс гадаргууд туссан цэг хүртлэх чиглэлийн векторыг нормчилсон вектор
бол гэрлийн эх үүсвэрийн гаргасан гэрлийн хүч өөрөөр хэлбэл гэрлийн тоо хэмжээ үүнийг intensity гээд байгаа
бол эцсийн бидний тооцож олсон гэрлийн intensity утга.
Хэрэв гэрлийн эх үүсвэрийн гаргаж байгаа хүчийг нь буюу intensity(цаашид энэ нэршилээр хэрэглэнэ) утгыг нь тогтмол 1.0 утгатай болгож бэхэлвэл дээрхи томъёо маань гадаргуун нормал болон гадаргуугаас гэрлийн эх үүсвэр хүртэлхи чиглэлийг илтгэсэн вектор хоёрын хоорондох энгийн скаляр үржвэр болж хувирах болно. Скаляр үржвэр нь хэрэв хоёр вектор хоорондоо 90 градус байвал эерэг утгатай, хоорондоо перпендикуляр байвал 0 утгатай, хоорондоо 90-ээс дээш градус байвал сөрөг утгатай тус тус гардаг байна. Хэрэв хоёр вектор хоёулаа нормчлогдсон байвал скаляр үржвэр нь
-1.0<=<=1.0
Утга нь 0-ээс тэнцүү буюу бага байвал объектийн энэ гэрэл туссан хэсэг нь сүүдэрлэгдсэн байна. Мөн утга нь 0-ээс их байвал энэ гэрэл туссан хэсэг нь diffuse intensity утга дээр суурилан гэрэлтүүлэгдсэн байна гэсэн үг.
Объектэд diffuse өнгө онооход дараах томъёог хэрэглэдэг
Энд
бол объектийн diffuse өнгийг төлөөлөх улаан, ногоон, хөх өнгийг агуулах утга юм.
бол Ламбертийн diffuse intensity утга.
бол эцсийн diffuse өнгө
Олон тооны гэрлийн эх үүсвэрүүдтэй тохиолдолд тэдгээрийн diffuse ойлтын утгуудыг хооронд нь нэмэхэд болно. shader програмууд float төрөлтэй утга хэрэглэдэг тул үр дүнг 0.0-оос 1.0 ийн хоорондох утга болгох буюу clamp хийж байж цааш ашиглах хэрэгтэй байдаг.
Specular ойлт
Арьсан буйдан, метал гадаргуу, биллиардын бөмбөг гэх мэтийн зүйлс дээр гэрэл тусахад гэрэл гялбаж харагддаг билээ. Энэ гялбалтын утгыг тооцох олон янзын томъёо байдаг боловч ерөнхий стандарт байдлаар хэрэглэгддэг Фонгийн тусгалын томъёог авч үзэх болноо. Фонг тусгалын загварыг анх 1973 онд Ютагийн их сургуульд Bui Tuong Phong хэмээх ветнам судлаач хөгжүүлсэн байдаг. Энэ томъёо нь
Энд
бол гадаргууны нормал болон гэрлийн чиглэл гэсэн хоёр вектороос тооцож олсон тусгалын векторыг нормчилсон вектор
бол гэрлийн чиглэлийн векторыг нормчилсон вектор
бол гадаргууны нормал векторыг нормчилсон вектор
бол камерийн харж байгаа чиглэлийг нормчилсон вектор
бол хэр их гялбахыг илтгэх хэмжээ. Фонгийн загварт үүнийг shininess term гээд байгаа. Энэ утга их байх тусмаа хурц гэрэл нь бүдэг болж ирнэ харин бага байх тусмаа илүү хурц гялбах гэрэлтэй болно.
бол specular ойсон гэрлийн intensity утга
diffuse ойлтонд гэрэл янз бүрийн чиглэлд янз бүрийн өнцөгөөр ойж байсан бол specular гэрэлтүүлэгт гадаргуун нормал болон гэрлийн чиглэлийн векторуудтай хамааралтай зөвхөн нэг өнцөгөөр л ойлт хийдэг. Ойсон гэрэл болон камерын харах чиглэл хоёр векторын хоорондох скаляр үржвэр нь дараах интервалд харъяалагдах утгыг бий болгодог.
эндээс дүгнэхэд specular утга нь ойсон гэрлийн чиглэл камерийн харах чиглэлтэй бага өнцөг үүсгэх буюу зэрэгцэж ирэх тусмаа хамгийн их гялбаж харагдана харин хоорондох өнцөг нь 90 градусаас тэнцүү буюу их болох тусмаа илүү суларч харагдахаар байна гэдгийг харж болно. Intensity утгыг нь specular өнгөрүү хувиргах томъёо нь дараах байдалтай байна.
энд
бол объектийн specular өнгийг тодорхойлох улаан, ногоон, хөх өнгүүдийг энкодлосон утга
бол тооцож олсон specular intensity утга
бол эцсийн specular өнгө
diffuse ойлтонд дурдсанчлан хэрэв олон гэрлийн эх үүсвэрүүд хэрэглэгдэж байгаа тохиолдолд тэдгээрийн specular ойлтын утгуудыг нь нэмээд үр дүнг нь өнгөны гүн буюу авч болох утгуудын интервалд нь оруулж өгөх хэрэгтэй(clamp хийх).
Ambient гэрэлтүүлэг
ambient гэрэлтүүлэг хийгээгүй объектийг хараарай
Тэгвэл ambient гэрэлтүүлэг хэрэглэвэл ямар болохыг нэг харая
Бодит байдалд гэрэл гадаргуу дээр ойгоод тэр ойсон гэрэл нь цаашаагаа өөр гадаргуу дээр очиж гэрэлтүүлж байдаг. Мэдээж хэрэг энерги нь сарниж дуустлаа цаашаагаа ойгоод явна. Үүнийг ambient гэрэлтүүлэг(background гэрэлтүүлэг) гээд байгаа. Энэ гэрэлтүүлэгийн процесс нь бодит мэт зураглал үүсгэхэд маш чухал үүрэгтэй. Энэ гэрэлтүүлгийг хийхэд хэрэглэдэг үндсэн арга бол объектийг бүхэлд нь тогтмол утгаар гэрэлтүүлэх явдал юм гэхдээ энэ арга арай үнэмшил муутай зураглал үүсгэж болзошгүй байдаг. Артистын зүгээс тохируулж өгсөн текстур болон тодорхой ambient утгуудыг хослуулах замаар үүсгэх зураглалын чанарын чанарыг хангалттай хэмжээнд сайжруулж өгөх боломжтой.
ambient гэрэлтүүлэг нь орчиноос ирж буй гэрлийг нэмэлтээр тусгаж өгдөг учраас ambient өнгийг гэрэлтүүлэг хийсний дараах үр дүнгээр гарсан өнгөн дээр нэмж өгөх байдлаар ашигладаг. Дараах томъёог хэрэглэнэ
энд
бол нэмэх ёстой улаан, ногоон, хөх утгуудыг агуулсан ambient өнгө
хэсэгт diffuse, specular, attenuation, spot гэрлүүдийн утгуудыг нэмж өгнө
Attenuation
Гэрэл хол зайд аялах тусмаа сарнидаг өөрөөр хэлбэл замд нь шороо, хана, хий мэтийн жижиг хэсгүүд тааралддаг гэсэн үг. Энэ шинж чанарыг хийсвэрлэхийн тулд гэрлийн intensity утгыг attenuation буюу гэрлийн шингэлтийн хэм хэмжээг илтгэсэн тоон утгаар үржүүлж тооцон олдог. Attenuation тоон утга нь гэрлийн эх үүсвэрээс объектийн гадаргуу хүртлэх зайнаас тооцогдон гарах гэрлийн intensity утгыг бууруулж багасгаж өгдөг. Үүнийг дараах томъёогоор дүрсэлдэг байна.
энд
бол attenuation тогтмол утга
бол тооцож олсон шуган attenuation бөгөөд нь энэ тооцоололд хэрэглэгдэх шугаман тогтмол
Бид ямар нэгэн объектийн оршин байгааг харж чаддаг, яагаад гэвэл тухайн орчинд буй гэрэл бидний харж байгаа объектийн гадаргуу дээр очоод цаашаагаа ойж байдаг. Үүнийг зургаар харуулая.
Гэрлийн туяа гадаргууд тусч цаашаагаа олон чиглэлд биетийн гадаргууны нормалтай +-90 градусаар таран ойдог. Энэ ойлтын шинжийг анх математикч Жохан Ламберт гуай 1760 онд нээж дараах томъёонд оруулсан байна.
Энэ томъёог тайлбарлавал
бол биетийн гадаргууны нормал векторыг нормчилсон буюу нэгж вектор юм
бол гэрлийн эх үүсвэрээс гадаргууд туссан цэг хүртлэх чиглэлийн векторыг нормчилсон вектор
бол гэрлийн эх үүсвэрийн гаргасан гэрлийн хүч өөрөөр хэлбэл гэрлийн тоо хэмжээ үүнийг intensity гээд байгаа
бол эцсийн бидний тооцож олсон гэрлийн intensity утга.
Хэрэв гэрлийн эх үүсвэрийн гаргаж байгаа хүчийг нь буюу intensity(цаашид энэ нэршилээр хэрэглэнэ) утгыг нь тогтмол 1.0 утгатай болгож бэхэлвэл дээрхи томъёо маань гадаргуун нормал болон гадаргуугаас гэрлийн эх үүсвэр хүртэлхи чиглэлийг илтгэсэн вектор хоёрын хоорондох энгийн скаляр үржвэр болж хувирах болно. Скаляр үржвэр нь хэрэв хоёр вектор хоорондоо 90 градус байвал эерэг утгатай, хоорондоо перпендикуляр байвал 0 утгатай, хоорондоо 90-ээс дээш градус байвал сөрөг утгатай тус тус гардаг байна. Хэрэв хоёр вектор хоёулаа нормчлогдсон байвал скаляр үржвэр нь
-1.0<=<=1.0
Утга нь 0-ээс тэнцүү буюу бага байвал объектийн энэ гэрэл туссан хэсэг нь сүүдэрлэгдсэн байна. Мөн утга нь 0-ээс их байвал энэ гэрэл туссан хэсэг нь diffuse intensity утга дээр суурилан гэрэлтүүлэгдсэн байна гэсэн үг.
Объектэд diffuse өнгө онооход дараах томъёог хэрэглэдэг
Энд
бол объектийн diffuse өнгийг төлөөлөх улаан, ногоон, хөх өнгийг агуулах утга юм.
бол Ламбертийн diffuse intensity утга.
бол эцсийн diffuse өнгө
Олон тооны гэрлийн эх үүсвэрүүдтэй тохиолдолд тэдгээрийн diffuse ойлтын утгуудыг хооронд нь нэмэхэд болно. shader програмууд float төрөлтэй утга хэрэглэдэг тул үр дүнг 0.0-оос 1.0 ийн хоорондох утга болгох буюу clamp хийж байж цааш ашиглах хэрэгтэй байдаг.
Specular ойлт
Арьсан буйдан, метал гадаргуу, биллиардын бөмбөг гэх мэтийн зүйлс дээр гэрэл тусахад гэрэл гялбаж харагддаг билээ. Энэ гялбалтын утгыг тооцох олон янзын томъёо байдаг боловч ерөнхий стандарт байдлаар хэрэглэгддэг Фонгийн тусгалын томъёог авч үзэх болноо. Фонг тусгалын загварыг анх 1973 онд Ютагийн их сургуульд Bui Tuong Phong хэмээх ветнам судлаач хөгжүүлсэн байдаг. Энэ томъёо нь
Энд
бол гадаргууны нормал болон гэрлийн чиглэл гэсэн хоёр вектороос тооцож олсон тусгалын векторыг нормчилсон вектор
бол гэрлийн чиглэлийн векторыг нормчилсон вектор
бол гадаргууны нормал векторыг нормчилсон вектор
бол камерийн харж байгаа чиглэлийг нормчилсон вектор
бол хэр их гялбахыг илтгэх хэмжээ. Фонгийн загварт үүнийг shininess term гээд байгаа. Энэ утга их байх тусмаа хурц гэрэл нь бүдэг болж ирнэ харин бага байх тусмаа илүү хурц гялбах гэрэлтэй болно.
бол specular ойсон гэрлийн intensity утга
diffuse ойлтонд гэрэл янз бүрийн чиглэлд янз бүрийн өнцөгөөр ойж байсан бол specular гэрэлтүүлэгт гадаргуун нормал болон гэрлийн чиглэлийн векторуудтай хамааралтай зөвхөн нэг өнцөгөөр л ойлт хийдэг. Ойсон гэрэл болон камерын харах чиглэл хоёр векторын хоорондох скаляр үржвэр нь дараах интервалд харъяалагдах утгыг бий болгодог.
эндээс дүгнэхэд specular утга нь ойсон гэрлийн чиглэл камерийн харах чиглэлтэй бага өнцөг үүсгэх буюу зэрэгцэж ирэх тусмаа хамгийн их гялбаж харагдана харин хоорондох өнцөг нь 90 градусаас тэнцүү буюу их болох тусмаа илүү суларч харагдахаар байна гэдгийг харж болно. Intensity утгыг нь specular өнгөрүү хувиргах томъёо нь дараах байдалтай байна.
энд
бол объектийн specular өнгийг тодорхойлох улаан, ногоон, хөх өнгүүдийг энкодлосон утга
бол тооцож олсон specular intensity утга
бол эцсийн specular өнгө
diffuse ойлтонд дурдсанчлан хэрэв олон гэрлийн эх үүсвэрүүд хэрэглэгдэж байгаа тохиолдолд тэдгээрийн specular ойлтын утгуудыг нь нэмээд үр дүнг нь өнгөны гүн буюу авч болох утгуудын интервалд нь оруулж өгөх хэрэгтэй(clamp хийх).
Ambient гэрэлтүүлэг
ambient гэрэлтүүлэг хийгээгүй объектийг хараарай
Тэгвэл ambient гэрэлтүүлэг хэрэглэвэл ямар болохыг нэг харая
Бодит байдалд гэрэл гадаргуу дээр ойгоод тэр ойсон гэрэл нь цаашаагаа өөр гадаргуу дээр очиж гэрэлтүүлж байдаг. Мэдээж хэрэг энерги нь сарниж дуустлаа цаашаагаа ойгоод явна. Үүнийг ambient гэрэлтүүлэг(background гэрэлтүүлэг) гээд байгаа. Энэ гэрэлтүүлэгийн процесс нь бодит мэт зураглал үүсгэхэд маш чухал үүрэгтэй. Энэ гэрэлтүүлгийг хийхэд хэрэглэдэг үндсэн арга бол объектийг бүхэлд нь тогтмол утгаар гэрэлтүүлэх явдал юм гэхдээ энэ арга арай үнэмшил муутай зураглал үүсгэж болзошгүй байдаг. Артистын зүгээс тохируулж өгсөн текстур болон тодорхой ambient утгуудыг хослуулах замаар үүсгэх зураглалын чанарын чанарыг хангалттай хэмжээнд сайжруулж өгөх боломжтой.
ambient гэрэлтүүлэг нь орчиноос ирж буй гэрлийг нэмэлтээр тусгаж өгдөг учраас ambient өнгийг гэрэлтүүлэг хийсний дараах үр дүнгээр гарсан өнгөн дээр нэмж өгөх байдлаар ашигладаг. Дараах томъёог хэрэглэнэ
энд
бол нэмэх ёстой улаан, ногоон, хөх утгуудыг агуулсан ambient өнгө
хэсэгт diffuse, specular, attenuation, spot гэрлүүдийн утгуудыг нэмж өгнө
Attenuation
Гэрэл хол зайд аялах тусмаа сарнидаг өөрөөр хэлбэл замд нь шороо, хана, хий мэтийн жижиг хэсгүүд тааралддаг гэсэн үг. Энэ шинж чанарыг хийсвэрлэхийн тулд гэрлийн intensity утгыг attenuation буюу гэрлийн шингэлтийн хэм хэмжээг илтгэсэн тоон утгаар үржүүлж тооцон олдог. Attenuation тоон утга нь гэрлийн эх үүсвэрээс объектийн гадаргуу хүртлэх зайнаас тооцогдон гарах гэрлийн intensity утгыг бууруулж багасгаж өгдөг. Үүнийг дараах томъёогоор дүрсэлдэг байна.
энд
бол attenuation тогтмол утга
бол тооцож олсон шуган attenuation бөгөөд нь энэ тооцоололд хэрэглэгдэх шугаман тогтмол
Хэрэв та зээл авах хэрэгтэй юу? Та ажилгүй, зээл авах хэрэгтэй юу? Хэрэв та зээл авах хэрэгтэй учир нь эрүүл мэндийн асуудал-яаралтай? Үл хамааран мөнгө хэрэгтэй, бидэнд гараа хийж, ачаа хөнгөн. Манай и-мэйл хаяг компани нь : schwerenkredit1@gmail.com дэлгэрэнгүй мэдээллийг бидэнтэй холбоо барина уу и-мэйл: schwerenkredit1@gmail.com
ReplyDeleteХэд хэдэн whatsapp:0022960576327