ºûÀº ¹ÝÅõ¸í ¹°Ã¼¸¦ Åë°úÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¹ÝÅõ¸í ¹°Ã¼¸¦ Åë°úÇÏ°í ³ °á°ú
À̹ÌÁö´Â ¾à°£ È帴ÇÏ°Ô ºñÃçÁö¸é¼ Åõ¸íÇÑ ±×¸²ÀÚµéÀÌ ±× ¹°Ã¼¸¦ ÅëÇÏ¿© º¸¿©Áö°Ô
µÈ´Ù. ÀÌ ÀÌÆåÆ®´Â ¾Ö´Ï¸ÞÀÌ¼Ç ¿µÈ '¹÷½º ¶óÀÌÇÁ(A Bug's Life)' Áß ÇÑ Àå¸éÀ» ÅëÇؼ
È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¿µÈ¿¡¼ ÇÑ ±×·ìÀÇ °³¹ÌµéÀÌ ³ª¹µÀÙÀ§¸¦ °É¾î°¡´Â Àå¸éÀÌ Àִµ¥
ÀÌ Àå¸é¿¡¼ ¸î¸î °³¹Ì¸öÀÇ ¹ÝÀÌ ³ª¹µÀÙ¿¡ °¡·ÁÁ® º¸ÀÌÁö ¾Ê°í ÀÖ´Ù. ±×·¯³ª ½Ç·ç¿§Àº
³ª¹µÀÙÀ» ÅëÇØ ¸Å¿ì ¼±¸íÇÏ°Ô º¸¿©Áö°í ÀÖ´Ù. ÀÌ ¿µÈ Àü±îÁö ´Ù¼öÀÇ CG ÇÁ·Î±×·¥µéÀº
ÀÌ ÀÌÆåÆ® ÀÛ¾÷À» ¾î¶»°Ô ÇØ¾ß ÇÏ´ÂÁö ¾ËÁö ¸øÇß¾ú´Ù. ´ÜÁö ÀÌ ÀÌÆåÆ® ÀÛ¾÷À» À§Çؼ
ÇÁ·Î±×·¥ Çϱâ À§ÇØ Ç÷¯±×
ÀÎÀ» ÇÑ´Ù´ø°¡ ÇÑ°¡Áö ÀÛ¾÷À» °áÁ¤Çϱâ À§Çؼ´Â ÇÁ·Î±×·¡¸ÓµéÀ» ±â´Ù·Á¾ß¸¸ Çß¾ú´Ù.
ÇÏÁö¸¸ Áö±ÝºÎÅÍ ÀÌ ÀÌÆåÆ®¸¦ ½±°Ô ÀÛ¾÷ ÇÒ ¼ö ÀÖ´Â RenderMan ÇÁ·Î±×·¥ÀÇ ¶Ù¾î³
±â´É¿¡ ´ëÇØ ¼Ò°³ ÇÏ°íÀÚ ÇÑ´Ù.
1998³â Pixar°¡ ÀúÀÛÇÑ ¿µÈ '¹÷½º ¶óÀÌÇÁ' Áß ÇÑ Àå¸é
¡ß ¹ÝÅõ¸í ¹°Ã¼¿¡ ±×¸²ÀÚ Ç¥ÇöÇϱâ
°¡Àå °£´ÜÇÑ ¹ÝÅõ¸í ¸ðµ¨·Î ³ª¹µÀÙÀ̳ª Á¾ÀÌ Ã³·³ ¾ãÀº º®À» ¿¹·Î µé±â·Î ÇÏ°Ú´Ù.
º¸Åë ±×´ÃÀÌ Á® º¸ÀÌ´Â ¸ðµ¨µéÀº ¹°Ã¼ Ç¥¸éÀÇ ¾ÕºÎºÐ¿¡¼ ºñÃçÁÖ´Â ºû¸¸À» °í·ÁÇÑ´Ù.
ÇÏÁö¸¸ ¹ÝÅõ¸í ¹°Ã¼´Â Àڽŵµ ¾î¶² ½Ç·ç¿§À» Åë°úÇÏ´Â ¸ð½ÀÀ» º¸¿© Áà¾ß ÇϹǷΠÇϳªÀÇ
ºû¸¸À» »ý°¢Çؼ´Â ¾ÈµÈ´Ù.
±×·¡¼ ¿©±â¿¡¼´Â L1°ú L2 µÎ °÷¿¡¼ ºûÀÌ ¿Â´Ù°í °¡Á¤Çϵµ·Ï ÇÏ°Ú´Ù. L1Àº ¹°Ã¼¿Í ¸¶ÁÖº¸°í
ÀÖ´Â ÂÊ¿¡¼ ±×¸®°í L2´Â ¹°Ã¼ÀÇ µÚ¿¡¼ ¹°Ã¼¿¡ ºûÀ» ºñÃçÁÖ°í ÀÖ´Ù. ¿ì¸®´Â ¿©±â¿¡¼ ºûÀÇ
±¤¼±ÀÎ vetor L°ú Á¡ P¿¡¼ÀÇ ¼öÁ÷¼± vector NÀÇ °¢µµ¸¦ °è»êÇؼ ºûÀÇ À§Ä¡¸¦ ¿¹ÃøÇÒ ¼ö
ÀÖ´Ù. ´Ü, À̶§ °¢µµ°¡ 90µµ º¸´Ù Å©¸é ºûÀº ¹°Ã¼ÀÇ µÚ¿¡ ÀÖ´Â °ÍÀÌ°í ÀÌ°ÍÀº ¾Æ¹«·±
¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù.
±×¸² 1. ±×¸²ÀÚ¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â µÚÂÊÀÇ ºû
ÀÏ´Ü ¾ãÀº º®¿¡ ¹°Ã¼ÀÇ ½Ç·ç¿§ÀÌ º¸¿©ÁöÁö ¾Ê°í º®ÀÌ ¹°Ã¼¿¡ ±×¸²ÀÚ¸¦ ¸¸µå´Â
°ÍºÎÅÍ »ý°¢À» ÇØ º¸ÀÚ.
±×·¡¼ ´ÙÀ½ÀÇ ±×¸²ÀÚ´Â L1¸¸À» °í·ÁÇؼ °è»êÇÑ °ÍÀÌ´Ù.
surface
singleSide(float Ka = 1;
float
Kd = 1;)
{
normal Nf = faceforward(normalize(N), I);
Oi = Os;
Ci = Os * Cs * (Ka * ambient() + Kd * diffuse(Nf));
}
RenderMan¿¡¼ »ç¿ëÇÏ´Â ÇÔ¼ö diffuse()´Â Pixar¿¡¼ Á¤ÀÇÇÑ ÇÔ¼ö·Î ´ÙÀ½°ú °°ÀÌ
»ç¿ëµÈ´Ù.
color
diffuse(normal N)
{
color C=0;
illuminance(P,N, PI/2)
C += Cl * normalize(L).N;
return C;
}
À§¿¡¼ ¼Ò°³µÈ illuminance ·çÇÁ´Â Ç¥¸é Á¡ P¿¡ ¼öÁ÷ÀÎ ¼± N°ú PI/2 ·¹µð¾È(=
90°) °ªÀ» °¡Áø vector¿¡ ÀÇÇØ ¸¸µé¾îÁø »ï°¢»Ô ³»ºÎ¿¡ ºñÃçÁö´Â ¸ðµç ºûÀÇ ¾çÀ»
°è»êÇÑ´Ù. ¸¸¾à¿¡ PI/2 ·¹µð¾È °¢µµ°¡ PI ·¹µð¾È(= 180°)¿¡ °¡±î¿öÁú¼ö·Ï ȸé»óÀÇ
°¡´ÉÇÑ ºûµéÀ» ¸ðµÎ Æ÷ÇÔ ½ÃÄÑ¾ß ÇÑ´Ù.
±×¸² 2. illuminanceÇÔ¼öÀÇ ºÎÇÇ¿¡ ¿µÇâÀ» ¹Þ´Â diffuse ÇÔ¼ö
diffuse() ÇÔ¼ö´Â ´ÜÁö Ç¥¸éÀÇ ¼öÁ÷¼± N¸¸À» ÇÊ¿ä·Î ÇÑ´Ù. ±×·¡¼ ÀÌ ºÎºÐ¿¡¼´Â
Ç¥¸éÀÇ ¹æÀ§°¡ Áß¿äÇÑ »çÇ×ÀÌ µÇ´Â °ÍÀÌ´Ù. ¾ãÀº º®ÀÇ °æ¿ì ¹°Ã¼ÀÇ ½Ç·ç¿§±îÁöµµ
º®¿¡ ºñÃçÁö±â ¶§¹®¿¡ L2 ¹æÇâÀÇ ºû±îÁöµµ °í·Á Çؾ߸¸ ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î L1¸¸
°í·ÁÇßÀ» ¶§ ¿Í´Â ´Þ¸® L2±îÁöµµ °í·ÁÇßÀ» °æ¿ì diffuse(-Nf)
* Kd2ÀÇ °ªÀÌ Ã·°¡ µÇ´Â °ÍÀÌ´Ù. L2´Â L1ÀÇ ¹Ý´ë ¹æÇâ¿¡ ÀÖ´Â ºûÀ̹ǷΠdiffuse(-Nf)À¸·Î
Ç¥ÇöµÈ °ÍÀÌ´Ù.
surface
doubleSide(float Ka = 1;
float
Kd = 1;
float
Kd2 = 1)
{
normal Nf = faceforward(normalize(N), I);
Oi = Os;
Ci = Os * Cs * (Ka * ambient() + Kd * diffuse(Nf) + diffuse(-Nf)
* Kd2);
}
±×¸² 3. ¹ÝÅõ¸í ÀÌÆåÆ® ¿Ï¼º Ãʱâ ÀÛ¾÷
¸¸¾à Kd2¸¦ º¯°æÇÑ´Ù¸é ¿öÅ͸¶Å© ÀÌÆåÆ®³ª ³ª¹µÀÙÀÇ Áٱ⵵ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.
±×¸² 4. ÃÖ°íÀÇ °á°ú¹°À» ¾ò±â À§ÇÑ ÀÌÆåÆ® Á¶Á¤ ÀÛ¾÷
surface
doubleSide(float Ka = 0;
float
Kd = 1;
float
Kd2 = 1;
string
texturename = "cater.tif";)
{
normal Nf = faceforward (normalize(N), I);
float Ct = comp(color texture(texturename), 1);
Kd2 *= Ct;
Oi = Os;
Ci = Os * Cs * (ambient() * Ka + diffuse(Nf) * Kd + diffuse(-Nf) *
Kd2);
}
¸¶Áö¸· ±×¸²Àº »çÁøÀ» ÅëÇÏ¿© ±×¸²ÀÚ Å×½ºÆ®ÀÇ ¸ðµç °ÍÀ» º¸¿© ÁÖ°í ÀÖ´Ù.
»çÁøÀ» ÅëÇØ º» ±×¸²ÀÚµé
ÀÌ Æ©Å丮¾óÀÇ ´ÙÀ½ PartµéÀ» ³õÄ¡Áö ¸¶½Ã±â ¹Ù¶ø´Ï´Ù. ´ÙÀ½ ºÎºÐµéÀº ´õ À¯ÀÍÇÑ
Á¤º¸µé·Î °¡µæÇÒ °ÍÀÔ´Ï´Ù.
Part 2 : ºÎÇǸ¦ °¡Áö°í ÀÖ´Â ¹ÝÅõ¸í ¹°Ã¼µé
Part 3 : ¹°Ã¼ Ç¥¸é ³»ºÎÀÇ ½ºÄÉÅ͸µ
À¯¿ëÇÑ Ã¥µé
Ã¥ Á¦¸ñ
|
ÀúÀÚ
|
ÃâÆÇ»ç
|
Advanced RenderMan
|
Apodaca, Anthony A. & Gritz, Larry. (1999)
|
Morgan Kaufmann
|
The RenderMan Companion
|
Upstill, Steve
|
Addison Wesley
|
¸¸¾à ¼³¸íÀ̳ª ÀÛ¾÷¿¡ °üÇÑ Áú¹®ÀÌ ÀÖÀ¸¸é Àú¿¡°Ô ¿¬¶ôÇØ Áֽñ⠹ٶø´Ï´Ù. ¿©·¯ºÐÀÌ
¾Æ½Ã´Â °Íó·³ ÀúÀÇ ¸ð±¹¾î´Â ¿µ¾î°¡ ¾Æ´Õ´Ï´Ù. ¸¸¾à ÀÌ Æ©Å丮¾ó¿¡¼ Ʋ¸° °ÍÀÌ
ÀÖÀ¸¸é Àú¿¡°Ô ¾Ë·Á Áֽñ⠹ٶø´Ï´Ù.