|
-
- ÀÌ ¾Ë°í¸®ÁòÀº ½Ã¼±(eye ray)°ú °´Ã¼ÀÇ °¡Àå
°¡±î¿î ±³Â÷ÁöÁ¡¿¡ ÀÖ´Â Çȼ¿ÀÇ »öÀ» °áÁ¤ÇÑ´Ù. ±×¸²ÀÚ¸¦ »êÁ¤Çϱâ
À§ÇØ, ¿ì¸®´Â ±³Â÷Á¡¿¡¼ºÎÅÍ °¢ ±¤¿øµé·Î ºÎ°¡ÀûÀÎ ±¤¼±À» ¹ß»çÇÑ´Ù.
À̰ÍÀº À§ ±×¸²¿¡¼ ´ÜÀÏ ±¤¿ø¿¡ ´ëÇØ º¸¿©Áö´Âµ¥, ÀÌ ±×¸²ÀÚ(shadow
ray)µé Áß Çϳª°¡ ±× ¼±À» µû¶ó ¾î¶² °´Ã¼¿Í ±³Â÷ÇÏ¸é ±× °´Ã¼´Â
±× Á¡¿¡¼ ±×¸²ÀÚ ³»¿¡ ÀÖ´Â °ÍÀ̰í À½¿µ ¾Ë°í¸®ÁòÀº ±×¸²ÀÚ¼±ÀÇ
±¤¿øÀÌ ¹ÌÄ¡´Â ¿µÇâÀ» ¹«½ÃÇÑ´Ù.
whitted¿Í Kay¿¡ ÀÇÇØ
°³¹ßµÈ Á¶¸í ¸ðµ¨Àº ±âº»ÀûÀ¸·Î ±¤¼±ÃßÀûÀ» À±Åà ¹Ý»ç¿Í ±¼Àý Åõ¸í¼ºÀ»
Æ÷ÇÔÇϵµ·Ï È®ÀåÇß´Ù. ±×¸²ÀÚ¼± ¿Ü¿¡µµ WhittedÀÇ Àç±ÍÀû ±¤¼±ÃßÀû
¾Ë°í¸®ÁòÀº À§ ±×¸²¿¡¼ º¸¿©Áø °Íó·³ ±³Â÷Á¡À¸·ÎºÎÅÍ Á¶°ÇÀûÀ¸·Î
¹Ý»ç¼±°ú ±¼Àý¼±À» ¸¸µé¾î³½´Ù. ±×¸²ÀÚ¼±, ¹Ý»ç¼±, ±×¸®°í ±¼Àý¼±Àº
´«À¸·ÎºÎÅÍ ³ª¿À´Â 1Â÷¼±(primary ray)°ú ±¸º°ÇÏ¿© Á¾Á¾ 2Â÷¼±(secondary
ray)À̶ó ºÒ¸°´Ù. °´Ã¼°¡ Á¤¹Ý»çÀûÀÌ¸é ¹Ý»ç¼±Àº RÀÇ ¹æÇâÀ¸·Î Ç¥Çö
¹ý¼± ±Ùó¿¡¼ ¹Ý»çµÈ´Ù. °´Ã¼°¡ Åõ¸íÇϰí ÃÑ ³»ºÎ¹Ý»ç°¡ ÀϾÁö
¾Ê´Â´Ù¸é ±¼Àý¼±Àº SnellÀÇ ¹ýÄ¢¿¡ ÀÇÇØ Á¤ÇØÁø °¢µµ¸¦ µû¶ó °´Ã¼
¾ÈÀ¸·Î µé¾î°£´Ù. °¢°¢ÀÇ ¹Ý»ç¼±°ú ±¼Àý¼±Àº ±× ´ÙÀ½, ¾Æ·¡ ±×¸²¿¡¼
³ªÅ¸³ °Íó·³ Àç±ÍÀûÀ¸·Î ±×¸²ÀÚ¼±, ¹Ý»ç¼±, ±×¸®°í ±¼Àý¼±À» ¸¸µé¾î
³¾ ¼ö ÀÖ´Ù. µû¶ó¼ ±¤¼±µéÀº ¾Æ·¡±×¸²ÀÇ ±×¸²ÀÚó·³ Æ®¸®¸¦ Çü¼ºÇÑ´Ù.
WhittedÀÇ ¾Ë°í¸®Áò¿¡¼ Æ®¸®ÀÇ °¡Áö´Â ¹Ý»çµÈ ±¤¼±°ú ±¼ÀýµÈ ±¤¼±ÀÌ
°´Ã¼¿Í ±³Â÷ÇÏÁö ¾Ê°Å³ª ¾î¶² »ç¿ëÀÚ Á¤ÀÇµÈ ÃÖ´ë ±íÀÌ¿¡ µµ´ÞÇ߰ųª
¶Ç´Â ½Ã½ºÅÛ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÒ ¶§ Á¾°áµÈ´Ù. Æ®¸®´Â »óÇâ½ÄÀ¸·Î °è»êµÇ°í
°¢ ³ëµåÀÇ °µµ´Â ÀÚ½Ä ³ëµåµéÀÇ °µµ¿¡ °üÇÑ ÇÔ¼ö·Î¼ »êÁ¤µÈ´Ù.

WhittedÀÇ Á¶¸í ¹æÁ¤½ÄÀº ´ÙÀ½°ú °°´Ù
¿©±â¼ Ir ´Â ¹Ý»çµÈ ±¤¼±ÀÇ °µµ, Ki´Â 0°ú 1»çÀÌÀÇ
°ªÀ» °¡Áö´Â Àü´Þ°è¼ö, ±×¸®°í Ir ¿Í It ¿¡ ´ëÇÑ °ªÀº ¹Ý»çµÈ ±¤¼±°ú
Àü´ÞµÇ´Â ±¤¼±ÀÌ ±³Â÷ÇÏ´Â °¡Àå °¡±î¿î Ç¥¸é¿¡¼ À§ ½ÄÀ» Àç±ÍÀûÀ¸·Î
Æò°¡ÇÔÀ¸·Î½á °áÁ¤µÈ´Ù. °¨¼è¸¦ °Å¸®·Î ³ªÅ¸³»±â À§ÇØ Whitted´Â °¢
±¤¼±¿¡ ´ëÇØ °è»êµÈ I¸¦ ±¤¼±ÀÌ ¿òÁ÷¿©°£ °Å¸®ÀÇ ¿ªÀ¸·Î °öÇØÁÖ¾ú´Ù.
Si¸¦ µ¨Å¸ ÇÔ¼ö·Î ´Ù·çÁö ¾Ê°í ±×¸²ÀÚ¼±¿¡ ÀÇÇØ ±³Â÷µÇ´Â °´Ã¼µé¿¡ °üÇÑ
¿¬¼ÓÇÔ¼ö·Î ¸¸µé¾î Åõ¸íÇÑ °´Ã¼°¡ ±×¸²ÀÚ¸¦ µå¸®¿ì´Â Á¡µé¿¡¼ º¼ Åõ¸íÇÑ
°´Ã¼º¸´Ù ºûÀ» ´ú °¡¸®µµ·Ï ÇÑ´Ù.
-
-
select center of projection and
window on view plane; for (each scan line inimage)
{ for (each pixel in scan line) {
determine ray from center of projection
through pixel; pixel
= RT_trace (ray, 1); } }
/* intersect ray with objects and compute shade at intersection.
*/ /* Depth is current depth in ray tree */
RT_color RT_trace (RT_ray ray, int depth)
{ determine closest intersection of way an
object; if (object hit){
compute normal at intersection;
return RT_shade (closest
object hit, ray, intersection,
normal,depth); }
else
return BACKGROUND_VALUE; } /* Compute
shade at point on object, tracing rays for shadows, reflection,
refraction. */
RT-color RT_shade( RT_object
object, /* Object intersected
*/ RT_ray ray,
/* incident ray */ RT_point point,
/* Point of intersection to shade */ RT_normal
normal, /* Normal at point */
int depth)
/* Depth in ray tree */ { RT_color color;
/* Color of ray */ RT_ray rRay, tRay, sRay;
/* Reflected, refracted, and shadow rays */ RT_color
rColor, tColor; /* Reflected
and refracted ray colors */
color = ambient term;
for (each light) {
sRay = ray to light from point;
if (dot product of normal and direction to light is positive){
compute
how much light is blocked by
opaque and transparent surfaces, and use ti scale diffuse
and specular
terms before adding them to color; }
if (object is transparent)
{ tRay
= ray in refraction direction from point; if
(total internal reflection does not occur) {
tColor = RT_trace (tRay, depth+1);
scale tColor by transmission coefficient and add to color;
}
} }
return color;
/* Return color of ray */ }
RT_trace´Â ±¤¼±ÀÌ °´Ã¼¿Í ±³Â÷ÇÏ´Â °¡Àå °¡±î¿î
ÁöÁ¡À» °áÁ¤ÇÏ°í ±× Á¡¿¡¼ À½¿µÀ» °áÁ¤Çϵµ·Ï Çϰí RT_shade¸¦ È£ÃâÇÑ´Ù.
¿ì¼±, RT-shade´Â ±³Â÷ÀÇ ÁÖº¯»öÀ» °áÁ¤Çϰí, ±× ´ÙÀ½ °¢ ºûÀÌ »öÀ»
¸¸µå´Âµ¥ ÀÏÁ¶ÇÑ Á¤µµ¸¦ °áÁ¤Çϱâ À§ÇØ À½¿µÀÌÁö´Â Ç¥¸é ÂÊ¿¡¼ °¢ ºûÀ¸·Î
±×¸²ÀÚ¼±À» ¸¸µç´Ù. ºÒÅõ¸íÇÑ °´Ã¼´Â ºûÀ» ¿ÏÀüÈ÷ °¡¸®´Â ¹Ý¸é Åõ¸íÇÑ
°´Ã¼´Â ºûÀÇ ±â¿©µµ¸¦ ÃøÁ¤ÇÑ´Ù. ±¤¼± Æ®¸®¿¡¼ ³Ê¹« ±íÀÌ µé¾î°¡ ÀÖÁö
¾Ê´Ù¸é ¹Ý»çÀûÀÎ °´Ã¼¿¡ ´ëÇÑ ¹Ý»ç¼±°ú Åõ¸íÇÑ °´Ã¼¿¡ ´ëÇÑ ±¼Àý¼±À»
´Ù·çµµ·Ï RT_trace´Â ÇöÀç Çȼ¿ÀÇ »öÀ» °áÁ¤Çϱ⿡ ÃæºÐÇÒ ¸¸Å¸¸ °¢
±¤¼±Æ®¸®¸¦ À¯ÁöÇÑ´Ù. Àüü À̹ÌÁö¿¡ ´ëÇÑ ±¤¼±Æ®¸®°¡ º¸Á¸µÉ ¼ö ÀÖ´Ù¸é
´ÜÁö Æ®¸®¸¦ ÀçÆò°¡ÇÔÀ¸·Î½á ºñ±³Àû »¡¸® Ç¥¸é Ư¼ºÀ» º¯°æÇÏ°í »õ·Î¿î
À̹ÌÁö¸¦ ´Ù½Ã °è»êÇÒ ¼ö ÀÖ´Ù.
|