¸ÀÀÖ´Â ¿µÈ ±×·¡ÇÈ 3 - ¡° À£ÄÄ Åõ µ¿¸·°ñ, ÀüÅõ¾À
¡±
±Û.±è±Ý¿µ
À̹øȸ´Â µ¿¸·°ñ ÀÛ¾÷ °úÁ¤À» ±×·Áº¸´Â ¸¶Áö¸·È¸·Î ÀüÅõ¾À°ú Ã߶ô¾À¿¡ ¸¹ÀÌ »ç¿ëµÇ¾ú´ø
¿¬±â¸¦ ¸¸µé¾îº¸°Ú½À´Ï´Ù.
±×¸²À»
Ŭ¸¯ÇÏ½Ã¸é ´õ Å« ȸéÀ¸·Î º¼ ¼ö ÀÖ½À´Ï´Ù.
½ÇÁ¦ µ¿¸·°ñ ÀÛ¾÷ ¿¹Á¦¸¦ ¼³¸íÇϱâ Àü, ÀüÅõ±â ÃѾ˿¡¼ ³ª¿À´Â ¿¬±â¸¦ ¸¸µé±â
À§ÇØ ÆÄƼŬ Sprite¸¦ °£´ÜÇÑ ¿¹Á¦·Î ¸ÕÀú µÑ·¯º¸°Ú½À´Ï´Ù.
Sprite´Â ÆÄƼŬÀÇ ÀÏÁ¾À¸·Î À̹ÌÁö¸¦ ¸ÅÇÎÇؼ ¹«°Å¿î ¾À µ¥ÀÌÅ͸¦ ÁÙ¿©ÁÖ°í
ÆÄƼŬ·Î¸¸À¸·Ð Ç¥ÇöÀÌ ºÎÁ·ÇÑ ¿¬±â, ¸ÕÁö µî¿¡ ¸¹ÀÌ »ç¿ëµË´Ï´Ù.
1. Sprite Attribute
- ÀçÁúÀº ´Ù¸¥ ÆÄƼŬ°ú´Â ´Ù¸£°Ô ÀÏ¹Ý ¿ÀºêÁ§Æ®¿¡ Àû¿ëÇÏ´Â °Íó·³ ½¦ÀÌ´õ¸¦
sprite¿¡ Á÷Á¢ AssignÇÕ´Ï´Ù.
2. ÁøÂ¥ ½¬¿î ¿¬±â¸¦ ¸¸µéÀÚ!
°£´ÜÇÑ ¿¬±â¸¦ ¸¸µé¾î º¸¸ç ÀÛ¾÷ È帧À» ÆľÇÇÏ°í Sprite¿¡ ÇÙ½ÉÀÌ µÇ´Â PP¼Ó¼º¿¡
´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
2.1 ÆÄƼŬ »ý¼º
emitter¸¦ »ý¼ºÇؼ ¾Æ·¡¿Í °°ÀÌ ¿É¼ÇÀ» Á¶ÀýÇÕ´Ï´Ù.
ÆÄƼŬÀÇ ¿É¼ÇÀº ¾Æ·¡¿Í °°ÀÌ Á¶ÀýÇÕ´Ï´Ù.
Áö±Ý±îÁö ¹Ù·Î µû¶óÇÏ¼Ì´Ù¸é ¾Æ·¡¿Í °°Àº ¿¬±â¸¦ º¸½Ç °Ì´Ï´Ù.
2.2 ¿¬±â ÅؽºÃ³¸¦ AssignÇØ º¸°Ú½À´Ï´Ù.
Lambert¸¦ Çϳª »ý¼ºÇØ color¿Í transparent¿¡ ¿¬±âÀ̹ÌÁö ÆÄÀÏÀ» ¼±ÅÃ
ÅؽºÃ³¸¦ Àû¿ëÇÏ°Ô µÇ¸é ¿¬±â°¡ ¾Æ·¡Ã³·³ »ý¼ºµË´Ï´Ù.
2.3 Per Particle ¼Ó¼º
º¸´Ù ÀÚ¿¬½º·± ¿¬±â¸¦ Ç¥ÇöÇϱâ À§ÇØ Çʼö¿ä¼ÒÀÎ Å©±â¿Í ȸÀüÀ» Á¶ÀýÇÕ´Ï´Ù.
General ¹öÆ°À» ´·¯ spriteÀÇ ¼Ó¼ºÀ» Ãß°¡ ÇÕ´Ï´Ù.
2.3.1 Sprite Å©±â Á¶Àý
spriteScale XPP/YPP ¼Ó¼ºÀ» Ãß°¡ÇØ Ãß°¡µÈ spriteScale ¼Ó¼º¿¡ ¿À¸¥ÂÊ ¸¶¿ì½º¸¦
Ŭ¸¯ÇØ Creation Express âÀ» ¿¾î ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
particleShape1.spriteScaleXPP=rand(1,2);
particleShape1.spriteScaleYPP=rand(1,2);
ÀÌ·¸°Ô ÀÔ·ÂÇÏ¸é ¿¬±â°¡ »ý±æ ¶§ Å©±â°¡ 1~2 »çÀÌÀÇ °ªÀ¸·Î ·£´ýÇÏ°Ô ¹æÃâµË´Ï´Ù.
¿©±â¿¡ ´Ù½Ã ¿¬±â°¡ ½Ã°£ÀÌ Áö³¯¼ö·Ï Á¡Á¡ ´õ Ä¿Áöµµ·Ï ÇÏ·Á¸é Runtime Expression¿¡
´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
particleShape1.spriteScaleXPP+=0.02;
particleShape1.spriteScaleYPP+=0.02;
ÀÌ ExpressionÀ» ÀÔ·ÂÇÔÀ¸·Î½á ¿¬±â´Â ¸Å ÇÁ·¹ÀÓ´ç 0.02¾¿ Å©±â°¡ Áõ°¡ÇÏ°Ô µË´Ï´Ù.
¿©±â¼ Á» ´õ ³ª¾Æ°¡¼ °¢ ÆÄƼŬ ÀÔÀÚµéÀÌ °¢°¢ ´Ù¸¥ Å©±â·Î Ä¿Áö°Ô ÇÏ·Á¸é ¶Ç ´Ù½Ã
¾Æ·¡¿Í °°Àº°úÁ¤À» °ÅÄ¡°Ô µÇ´Âµ¥¿ä, À§¿¡ Çß´ø °úÁ¤°ú °ÅÀÇ °°Àº ¹æ¹ýÀÌ´Ï ºÎ´ã¾øÀÌ
ÈÈ¾î º¼±î¿ä??
custom_scale ¼Ó¼ºÀ» Ãß°¡ÇØ Ãß°¡µÈ ¼Ó¼º¶õÀÇ creation expression âÀ» ¿¾î
¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÏ°í EditÇÕ´Ï´Ù.
particleShape1.custom_scale=rand(0.01,0.03);
runtime expression¿¡´Â ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÏ°í EditÇÕ´Ï´Ù.
particleShape1.spriteScaleXPP+=particleShape1.custom_scale;
particleShape1.spriteScaleYPP+=particleShape1.custom_scale;
2.3.2 Rotation Á¶Àý
°¢°¢ÀÇ Sprite´Â °¢°¢ ´Ù¸¥ °¢µµ·Î ¹æÃâµÇ°í ½Ã°£ÀÌ Áö³ª¸é¼ ´Ù¸¥ ȸÀü°ªÀ¸·Î
Áõ°¡µÇ¾î¾ß ÇÕ´Ï´Ù. ¸ÕÀú Sprite°¡ ´Ù¸¥ °¢µµ·Î »ý±â´Â ÀÛ¾÷ºÎÅÍ ÇÏ°Ú½À´Ï´Ù
¿ª½Ã ¾Õ¼ ¼³¸íÇÑ Å©±â¸¦ Á¶ÀýÇÏ´Â °úÁ¤°ú ºñ½ÁÇÕ´Ï´Ù.
¼Ó¼ºÃ¢ÀÇ spriteTwistPP¸¦ Ãß°¡ÇØ Creation Expression â¿¡ ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
particleShape1.spriteTwistPP=rand(0,360);
ÀÌ °ªÀº 0~360µµ »çÀÌ¿¡¼ °¢°¢ÀÇ sprite°¡ ¹æÃâµÇµµ·Ï ÇÕ´Ï´Ù. ¿©±â¼ ´Ù½Ã ¿¬±â°¡
»ý±â´Â µ¿¾È ½Ã°£ÀÌ Áö³²¿¡ µû¶ó °¢°¢ ´Ù¸¥ °ªÀ¸·Î ȸÀüÇϵµ·Ï ¸¸µé¾î º¾½Ã´Ù. ¿ª½Ã
¾Õ¼ Å©±â Á¶Àý°úÁ¤°ú À¯»çÇÕ´Ï´Ù.
Ãß°¡µÈ ¼Ó¼ºÃ¢ÀÇ creation Expression â¿¡ ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
particleShape1.custom_rotate=rand(-0.3,0.3);
Ãß°¡µÈ ¼Ó¼ºÃ¢ÀÇ Runtime Expression â¿¡ ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
particleShape1.spriteTwistPP+=custom_rotate;
2.3.3 Åõ¸íµµ Á¶Àý
¿¬±â°¡ ¼¼È÷ ³ªÅ¸³ª°í ¼¼È÷ »ç¶óÁö´Â Ç¥ÇöÀº ¼Ó¼ºÃ¢ÀÇ Opacity ¸¦ Ãß°¡ÇØ
¸¸µì´Ï´Ù.
¿À¸¥ÂÊ ¸¶¿ì½º¸¦ Ŭ¸¯,Create Ramp¸¦ Ãß°¡ÇØ ¾Æ·¡¿Í °°ÀÌ Ramp¸¦ ¼öÁ¤ÇÕ´Ï´Ù.
¾îµÎ¿ï¼ö·Ï º¸ÀÌÁö ¾Ê´Â ºÎºÐÀÌ°í ¹àÀ»¼ö·Ï Åõ¸íµµ°¡ ³·Àº, Áï ¼±¸íÇÏ°Ô º¸ÀÌ´Â
¿¬±â¸¦ ¸¸µì´Ï´Ù. À§ÀÇ Rampó·³ ¸¸µé¸é ¼¼È÷ »ý°å´Ù ¼¼È÷ »ç¶óÁö´Â ¿¬±â¸¦ Ç¥ÇöÇÒ
¼ö ÀÖ½À´Ï´Ù.
3. µ¿¸·°ñ ÀüÅõ±â ¿¬±â¸¦ ¸¸µéÀÚ!
ÃѾËÀÌ ½Ç°¨³ª°Ô ¹ÚÈ÷´Â Àå¸é¿¡¼ ¿¬±â´Â »ì¶³¸®´Â ¼Óµµ°¨À» ¸¸µå´Âµ¥ ¾ø¾î¼´Â
¾ÈµÇ´Â ¿ä¼Ò ÀÔ´Ï´Ù. º¸´Ù »ç½ÇÀûÀÎ ¿¬±â Ç¥ÇöÀ» À§ÇØ ¾Õ¿¡¼ ¼³¸íµå¸° ±âº» ±â´É
À§¿¡ Á» ´õ ´Ù¾çÇÏ°í º¹Àâ ´Ù³ÇÑ ExpressionÀÌ »ç¿ëµÇ¾ú½À´Ï´Ù. Çϳª¾¿ Â÷±ÙÂ÷±Ù
º¸°Ú½À´Ï´Ù.
3.1 emitter¸¦ ¸¸µé¾î emitter¿Í particleÀÇ ¼Ó¼ºÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÕ´Ï´Ù.
3.2 ¿©±â¼ºÎÅÍ ÀüÅõ±â Æ÷źÀÇ ¿¬±â¸¦ ¸¸µé±â À§ÇÑ ÇÙ½ÉÀÌ µÇ´Â spriteÀÇ
¼Ó¼º Ãß°¡ ÀÛ¾÷ÀÔ´Ï´Ù.
¾Õ¼ º» °£´ÜÇÑ ¿¹Á¦¿Í °°Àº ÀÛ¾÷ °úÁ¤À̸ç, ¾à°£ ´õ º¹ÀâÇÑ expressionÀÌ Ãß°¡µÇ¾ú½À´Ï´Ù.
- color¹öÆ°À» ´·¯ rgbPP¼Ó¼ºÀ» Ãß°¡ÇÕ´Ï´Ù.
- opacity¹öÆ°À» ´·¯ opacityPP¼Ó¼ºÀ» Ãß°¡ÇÕ´Ï´Ù.
- general¹öÆ°À» ´·¯ spriteScaleXPP/YPP, spriteTwistPP¼Ó¼ºÀ» Ãß°¡ÇÕ´Ï´Ù.
-»õ·Î »ý¼ºµÈ ¼Ó¼º¶õ¿¡ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» Ŭ¸¯ÇØ creation expression¼±ÅÃÇÑ
ÈÄ, ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
vector $vel = unit(smkBShape.velocity);
vector $lite = unit(<<1,1,0>>);
smkBShape.mass = rand(1,2);
float $color = dot($vel,$lite);
float $col2 = (($color + 1.5)/2);
float
$clamp = clamp(0.52,1,$col2);
smkBShape.rgbPP = $clamp;
smkBShape.spriteTwistPP = rand(360);
¾Õ µÎÁÙ, vector ÀÖ´Â ºÎºÐÀº spriteÀÇ ¹æÇâ°ú Å©±â¸¦ Á¶Àý,
mass´Â ÆÄƼŬ °¢°¢ÀÇ ¹«°Ô°ªÀ¸·Î ÆÄƼŬÀº 1~2 »çÀÌÀÇ °ªÀ» ·£´ýÇÏ°Ô °®°Ô µÇ¾î
¹«°Å¿ï¼ö·Ï(2¿¡ °¡±î¿ï¼ö·Ï) fieldÀÇ ¿µÇâÀ» ´ú ¹Þ°í, °¡º¿ï¼ö·Ï (1¿¡ °¡±î¿ï¼ö·Ï)
fieldÀÇ ¿µÇâÀ» ´õ ¹Þ°Ô µË´Ï´Ù.
´ÙÀ½ float°ú rgbºÎºÐÀº ¿¬±âÀÇ »ö±òÀ» °áÁ¤ÇÏ°í, spriteTwistPP´Â ¾Õ¼¿¡¼µµ
¼³¸íµå¸° °Í ó·³ 360µµ ȸÀü°¢µµ ³»¿¡¼ °¢ spriteµéÀÌ ·£´ýÇÑ °¢µµ¸¦ °¡Áö°Ô ÇÕ´Ï´Ù.
-runtime expressionâ¿¡ ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇÕ´Ï´Ù.
vector $pos = smkBShape.position;
float $posY = $pos.y;
smkBShape.lifespanPP = $posY+3;
smkBShape.rgbPP += 0.003;
lifespanPP¿¡ °üÇÑ expressionÀ¸·Î ÆÄƼŬÀÇ ¼ö¸íÀÌ position Y °ªÀÇ ¿µÇâÀ»
¹Þ¾Æ ÆÄƼŬÀÌ Áö¸é¿¡ ´ê±â Àü »ç¶óÁö°Ô ÇÕ´Ï´Ù.
±×¸®°í ¸¶Áö¸· ÇÑÁÙ, rgbPP +=0.003Àº ½Ã°£ÀÌ Áö³¯¼ö·Ï »öÀÌ Á¡Á¡ ¿¶¾îÁö°Ô Çϴµ¥,
rgb¸¦ ¼öÄ¡·Î º¸¸é
<<0,0,0>> : Red °ªÀÌ 0, Green°ªÀÌ 0, Blue°ªÀÌ 0À¸·Î ÇÕÇϸé Black
<<0.5,0.5,0.5>> : Red °ªÀÌ 0.5, Green°ªÀÌ 0.5, Blue°ªÀÌ
0.5À¸·Î ÇÕÇϸé Gray
<<1,1,1>> : Red °ªÀÌ 1, Green°ªÀÌ 1, Blue°ªÀÌ 1À¸·Î ÇÕÇϸé
White
¸¦ ÀǹÌÇÕ´Ï´Ù.
-opacityPP ¼Ó¼ºÀº ramp¸¦ createÇؼ ¾Æ·¡¿Í °°ÀÌ ¹Ù²ß´Ï´Ù.
-spriteScaleXPP/YPP ¼Ó¼ºÀº ramp¸¦ createÇؼ ¾Æ·¡¿Í °°ÀÌ ¹Ù²ß´Ï´Ù.
3.3 ±¸¸§ À̹ÌÁö¸¦ ÀÔÈ÷ÀÚ!!
-Lambert¸¦ Çϳª ¸¸µé¾î ¾Æ·¡¿Í °°ÀÌ ¼Ó¼ºÀ» ¹Ù²Ù°í color¿Í transparent ¸Ê¿¡
±¸¸§À̹ÌÁö¸¦ Àû¿ëÇÕ´Ï´Ù.
3.4 º¸´Ù ´õ ÀÚ¿¬½º·± ¿¬±âÀÇ ¿òÁ÷ÀÓÀ» À§ÇÑ Field Àû¿ë
sprite¸¦ ¼±ÅÃÇÑ ÈÄ fieldÀÇ turbulence, gravity, air¸¦ ¾Æ·¡¿Í °°Àº ¼Ó¼ºÀ¸·Î
¹Ù²ß´Ï´Ù.
3.4.1 turbulence
3.4.2 gravity
3.4.3 airField
3.5 emitter animation
emitter¸¦ ¿øÇÏ´Â ¹æÇâÀ¸·Î X,Y,Z °ªÀ» ¿òÁ÷¿© ¾Ö´Ï¸ÞÀÌ¼Ç ÇÑ ÈÄ PlayÇÏ¸é ¾Æ·¡¿Í
°°Àº °á°ú°¡ ³ª¿É´Ï´Ù.
ÃÖÁ¾ÀûÀ¸·Î ÇÕ¼ºµÈ ÀüÅõ¾À
¿Ï¼º µ¿¿µ»ó ´Ù¿î¹Þ±â
¿©±â±îÁö³×¿ä.. ºÎÁ·ÇÏÁö¸¸ µ¿¸·°ñÀº À̹øȸ·Î ¸·À» ³»¸®°í ´ÙÀ½È¸ ºÎÅÍ´Â »õ·ÎÀÌ
½ÃÀ۵Ǵ ¿µÈ¸¦ °¡Áö°í ã¾Æ ºË°Ú½À´Ï´Ù. ´Ê¾úÁö¸¸, »õÇØ º¹ ¸¹ÀÌ ¹ÞÀ¸¼¼¿ä~~
±è±Ý¿µ(3D¾ÆƼ½ºÆ®)
- SK Global ±×·¡ÇÈ µðÀÚÀ̳Ê
- Åä·ÐÅä ¾Ö´Ï¸ÞÀÌ¼Ç ½ºÆ©µð¿À ¡°¾ßÈÄÀÚ ¾Ö´Ï¸ÞÀ̼ǡ± Å×Å©´ÏÄà µð·ºÅÍ¡±
- ÀεðÆæ´ø½º ±Ù¹«, ¿µÈ ¡°À£ÄÄÅõ µ¿¸·°ñ¡± , ¡° °£Å«°¡Á·¡±
- À±µðÀÚÀÎ Á¤±Û »çÀÌÆ® ¾Ö´Ï¸ÞÀÌ¼Ç Ä÷³ ±âÀç
Âü°í ÀÚ·á :
http://mils.pe.kr/
¸¶¾ß ¹ÚÁø±â Àú
½¦¸®´Ü ÅؽºÆ®ºÏ