3D Character Animation Programming
 FrontPage|FindPage|TitleIndex|RecentChanges|UserPreferences E D R S P I M H RSS

Á¤¸®/TimerTutorialÁ¶°ÇºÎ ºê·¹ÀÌÅ© Æ÷ÀÎÆ®Ä¿³Î ¿ÀºêÁ§Æ®Ä¿³Î ÄÄÆÄÀÏŸÀÌ¸Ó °øºÎÇϱ⠛ 3D Character Animation Programming
Contents:
1 3D Character Animation ÀÇ ÀÌÇØ
2 °ü·Ã¼­Àû
3 Áֿ丵ũ
4 °ü·Ã ÀÚ·á
5 Animation File Formats
5.1 MD2
5.2 MD3
5.3 SMD
5.3.1 SMD ó¸® °úÁ¤ ( Model µ¥ÀÌŸ Àбâ )
5.3.2 ȸÀü°¢À» Direct3D Çà·Ä·Î º¯È¯Çϱâ
5.4 ASE ( AScii Export )
5.5 X File
5.6 Inverse Kinematics (IK) ¿Í Forward Kinematics (FK)
6 Vertex Animation
7 ´Ù¿î·Îµå
7.1 SDK
8 °ü·Ã¸µÅ©


1 3D Character Animation ÀÇ ÀÌÇØ #


  1. Vertex Animation ( Á¤Á¡ ¾Ö´Ï¸ÞÀÌ¼Ç )
  2. Bone Based Animation ( Skeletal Animation, »À´ë ¾Ö´Ï¸ÞÀÌ¼Ç )
  3. Skinned Bone Animation
  4. Inverse Kinematics ( IK : ¿ª¿îµ¿ÇÐ )


2 °ü·Ã¼­Àû #


  • 3D ij¸¯ÅÍ ¾Ö´Ï¸ÞÀÌ¼Ç ÇÁ·Î±×·¡¹Ö
    • µ¥À̺ø Æú Àú, ÃÖÁöÈ£.Á¶Á¾±Ù °ø¿ª, Á¤º¸¹®È­»ç
  • °ÔÀÓ ÇÁ·Î±×·¡¸Ó¿¡°Ô ¹è¿ì´Â °ÔÀÓ °³¹ß Å×Å©´Ð
    • °­¿ë.±èº´Ã¶.±è¼º¼ö.±è¼º¿Ï.¹®±â¿µ.À̸¸Èñ.À̼±Áø.Àå¿ø¼®.Á¶¿µºÀ.ÃÖ¾È½Ä °øÀú, Á¤º¸¹®È­»ç
  • IT EXPERT - 3D °ÔÀÓ ÇÁ·Î±×·¡¹Ö
    • ±è¿ëÁØ Àú, ÇѺû ¹Ìµð¾î
  • OpenGL Game Programming
    • Kevin Hawkins.Dave Astle °øÀú, ·ù±¤ ¿ª, Á¤º¸¹®È­»ç


3 Áֿ丵ũ #


4 °ü·Ã ÀÚ·á #


5 Animation File Formats #


5.1 MD2 #


Vertex Animation ÀÇ °¡Àå ´ëÇ¥ÀûÀÎ ¸ðµ¨·Î Quake ½Ã¸®Áî¿¡¼­ »ç¿ëµÈ Çü½ÄÀÌ´Ù. ±× Áß¿¡¼­ Quake 2 ¿¡¼­ »ç¿ëµÇ´Â ÆÄÀÏ Çü½ÄÀ¸·Î °¢ ÇÁ·¹ÀÓ ¸¶´Ù °¢ Á¤Á¡ÀÇ ÁÂÇ¥¸¦ °®°í ÀÖ´Ù. µû¶ó¼­ ´Ü¼øÈ÷ °¢ ÇÁ·¹ÀÓ°£ÀÇ ¼±Çü º¸°£À¸·Î ¼Õ½±°Ô ¾Ö´Ï¸ÞÀ̼ÇÀÌ °¡´ÉÇÏ´Ù.

5.2 MD3 #


MD3 ¿ª½Ã Quake ½Ã¸®Áî¿¡ »ç¿ëµÈ Çü½ÄÀ¸·Î Quake 3 ¿¡¼­ »ç¿ëµÇ¾ú´Ù. ¾Ö´Ï¸ÞÀ̼ÇÀº MD2 ¿Í´Â ´Þ¸® Bone Based Animation À» »ç¿ëÇϸç Mesh ¶ÇÇÑ 1 °³·Î ±¸¼ºµÈ MD2 ¿Í ´Þ¸® 3 ºÎºÐ ( Head, Lower, Upper ) À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

5.3 SMD #


  • °¢ µ¥ÀÌŸÀÇ »ç¿ëµÇ°í ÀÖ´Â ÃÖ´ë °¹¼ö
    µ¥ÀÌŸ°³¼ö
    Node ( Bone ) 256
    Frame ( Animation ) 256
    Triangle 3500
    Vertex Triangle * 3
    Mesh 32
    Mesh ´ç Vertex 1600

  • SMD File Format
    GameProgramming/SMDFormat.gif

  • Animation ( Local Ani = Parent TM ÀÇ ´©Àû ÇÊ¿ä )

5.3.1 SMD ó¸® °úÁ¤ ( Model µ¥ÀÌŸ Àбâ ) #


SMD ÀÇ Model µ¥ÀÌŸ ( Á¤Á¡ ) ´Â ASE ¿Í µ¿ÀÏÇÏ°Ô World ÁÂÇ¥·Î µÇ¾î ÀÖ´Ù. µû¶ó¼­ ¾Ö´Ï¸ÞÀ̼ÇÀ» À§Çؼ­ °¢ Á¤Á¡ µ¥ÀÌŸ¸¦ Local ÁÂÇ¥¸¦ º¯È¯ÇÏ´Â °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.

  1. Nodes µ¥ÀÌŸ¸¦ Àд´٠( Bone µ¥ÀÌŸÀÇ °èÃþ±¸Á¶¸¦ Àд °úÁ¤ )
  2. Bone ( Skeleton ) µ¥ÀÌŸ¸¦ Àд´٠( °¢ Bone ÀÇ À§Ä¡¿Í ȸÀü°¢À» Àд °úÁ¤ )
  3. Vertex ( Triangles ) µ¥ÀÌŸ¸¦ Local ÁÂÇ¥·Î º¯È¯Çϱâ À§ÇÑ Bone µ¥ÀÌŸÀÇ Ã³¸®¸¦ ¼öÇàÇÑ´Ù.
    • Matrix = Parent->Matrix * Current->Matrix
      ( ´Ü, Parent = -1 ÀÏ °æ¿ì Matrix = Current->Matrix )
    • Inverse( Matrix ) = Inverse( Current->Matrix ) * Inverse( Parent->Matrix )
      ( ´Ü, Parent = -1 ÀÏ °æ¿ì Inverse( Matrix ) = Inverse( Current->Matrix ) )
    • Pos = ( Current->Pos * Parent->Matrix ) + Parent->Pos
      ( ´Ü, Parent = -1 ÀÏ °æ¿ì Pos = Current->Pos )
  4. Vertex µ¥ÀÌŸ¸¦ ÀÐ¾î µéÀ̸鼭 °¢ Bone ÀÇ ¿ªÇà·ÄÀ» °öÇÏ¿© Local ÁÂÇ¥·Î º¯È¯ÇÑ´Ù.
    • Pos = ( Current->Pos - Bone->Pos ) * Bone->Inverse( Matrix )
    • Normal = Normalize( Normal * Bone->Inverse( Matrix ) )

5.3.2 ȸÀü°¢À» Direct3D Çà·Ä·Î º¯È¯Çϱâ #


  • Matrix = Yaw * Roll * Pitch
    • ȸÀüÃà : Yaw = YÃà, Roll = Z Ãà, Pitch = X Ãà

5.4 ASE ( AScii Export ) #


5.5 X File #


5.6 Inverse Kinematics (IK) ¿Í Forward Kinematics (FK) #


¿©·¯ °³ÀÇ ¿ÀºêÁ§Æ®°¡ °èÃþ±¸Á¶¿¡ ÀÇÇØ ¿¬°áµÈ ¸ðµ¨(hierarchical model)À» ¾Ö´Ï¸ÞÀÌ¼Ç ÇÒ ¶§, ±â°èÀûÀÎ ¹°Ã¼ÀÇ ºñ±³Àû ´Ü¼øÇÑ ¿òÁ÷ÀÓÀ̶ó¸é ´Ù¸¥ ÀϹÝÀûÀÎ ¾Ö´Ï¸ÞÀ̼ǿ¡¼­ ¿ÀºêÁ§Æ®ÀÇ À§Ä¡¸¦ Á¶Á¤ÇϵíÀÌ ¿òÁ÷ÀÓÀÇ ½ÃÀÛÁ¡ÀÌ µÇ´Â root·ÎºÎÅÍ ÇÑ ´Ü°è¾¿ parents¿¡¼­ childrenÀ¸·Î ³»·Á¿À¸é¼­ °¢°¢ÀÇ ¿ÀºêÁ§Æ®¸¦ ¼öµ¿À¸·Î Á¶Àý ÇÒ ¼ö ÀÖ´Ù. À̰ÍÀ» Áö±Ý ¼³¸íÇÒ inverse kinematics¿¡ ´ëºñÇØ¼­ forward kinematics¶ó°í ÇÑ´Ù. ÇÏÁö¸¸ »ç¶÷ÀÇ °üÀý ¿òÁ÷ÀÓÀ̳ª µ¿¹°ÀÇ ¿òÁ÷ÀÓÀ» ¾Ö´Ï¸ÞÀÌ¼Ç ÇϰíÀÚÇÒ ¶§ ÀÏÀÏÀÌ °¢ ¸µÅ© ¿ÀºêÁ§Æ®µéÀÇ À§Ä¡¸¦ ¼öÁ¤ÇÏ´Â °ÍÀº ´ë´ÜÈ÷ ¹ø°Å·Î¿î ÀÛ¾÷ÀÌ µÉ »Ó¸¸ ¾Æ´Ï¶ó Á÷°üÀûÀÌÁö ¾ÊÀº ¸¸Å­ ÀÚ¿¬½º·¯¿î ¿òÁ÷ÀÓÀ» Ç¥ÇöÇϱ⵵ ¾î·Æ´Ù. ÀÌ·¯ÇÑ ¹ø°Å·Î¿òÀ» ÇØ°áÇϱâ À§ÇÑ ¹æ½ÄÀ¸·Î °èÃþ±¸Á¶(hierarchy) ¸»´ÜÀÇ ÃÖÇÏÀ§ ¿ÀºêÁ§Æ®ÀÎ effectorÀÇ À§Ä¡¸¦ Á¶Á¤ÇÔÀ¸·Î½á ÃÖ»óÀ§ °íÁ¤Á¡ÀÎ root±îÁö ¿¬°áµÈ ¸µÅ© ¿ÀºêÁ§Æ®µéÀÇ À§Ä¡¿¡ ¿ª¹æÇâÀ¸·Î ¿µÇâÀ» ¹ÌÄ¡µµ·Ï ÇÏ´Â ¹æ½ÄÀÌ °³¹ßµÇ¾ú´Âµ¥ À̰ÍÀ» inverse kinematics¶ó°í ÇÑ´Ù. ¿¹¸¦ µé¾î ¸¶ÁÖ ¼­ ÀÖ´Â µÎ »ç¶÷ÀÌ ¼­·Î ¾Ç¼öÇÏ´Â Àå¸éÀ» ¾Ö´Ï¸ÞÀÌ¼Ç ÇØ¾ßÇÑ´Ù¸é forward kinematics ¹æ½ÄÀ¸·Î´Â ¾î±ú¿¡¼­ºÎÅÍ ¼Õ°¡¶ô±îÁö ¿¬°áµÈ °üÀýÀ» Çϳª¾¿ ÀÏÀÏÀÌ ¿òÁ÷¿© µÎ »ç¶÷ÀÇ °¡¿îµ¥ ÁöÁ¡¿¡¼­ µÎ°³ÀÇ ¼Õ¹Ù´ÚÀÌ ¸¶ÁÖ ´êµµ·Ï À§Ä¡¸¦ Á¶Á¤ÇØ ÁÖ¾î¾ß ÇÏÁö¸¸ inverse kinematics¹æ½ÄÀ» »ç¿ëÇÏ¸é °¢°¢ÀÇ ¼ÕÀ» ²ø¾î´Ù ³õ±â¸¸ ÇÏ¸é »óÀ§¿¡ ¸µÅ©µÈ ÆÈ °üÀýµé±îÁö ¹Ì¸® ÁöÁ¤µÈ ¿òÁ÷ÀÓÀÇ °¢µµ°¡ Çã¿ëÇÏ´Â ¹üÀ§ ³»¿¡¼­ µû¶ó ¿òÁ÷ÀÌ°Ô µÈ´Ù.

6 Vertex Animation #


MSDN Âü°í >
IDirect3DDevice9::SetTransform ¸Þ¼­µå

D3DTRANSFORMSTATETYPE::D3DTS_WORLDMATRIX ¸ÅÅ©·Î

IDirect3DDevice9::SetSoftwareVertexProcessing ¸Þ¼­µå


7 ´Ù¿î·Îµå #


7.1 SDK #


8 °ü·Ã¸µÅ© #


  • MilkShape 3D ¸¦ ¸¸µç chUmbaLum sOft ¿¡¼­ Á¦°øÇÏ´Â Model Viewer - ½ÇÇàÆÄÀÏ °ú ¼Ò½º ÄÚµå Á¦°ø

SubCategoryGame

EditText|FindPage|DeletePage|LikePages| Valid XHTML 1.0! Valid CSS! powered by MoniWiki