SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Practical Animation Techniques




                      ±è¼ºÀÍ(noerror@hitel.net)
                      2004.07.04

                      http:www.digibath.com/noerror
                          /




1
A. Background

    basic
    ±âº»ÀûÎ Á¤¡ º¯ÈÀÇ ´Ü°è
           º¯È Çà·ÄÀ ±¸¼º
                                È®´ë/Ãà¼Ò º¯È
                                         ȸÀü º¯È
                                             À̵¿ º¯È
              Çà·Ä°ú ÁÂÇ¥°è
                    °èÃþÀû ±¸¼º




2
±âº»ÀûÎ Á¤¡ º¯ÈÀÇ ´Ü°è
                                                                                                                         vertex transformations pipeline




                                                                                                                  LOCAL                                            LOCAL
                                                                                                                TRANSFORM                                      TRANSFORM
                                                                                        INPUT                          X                                                X
                                                                                                                                                                   CAMERA -1
                                                                                       VERTEX                       ¡¦                                         TRANSFORM
                                                                                                                                                                     ¡¦
                                                                                         DATA                          X                                        (view X matrix)
                                                                                                                  WORLD                                            WORLD
                                                                                                                TRANSFORM                                      TRANSFORM




                                                                                                             VIEWPORT -1
                                                                                                               CAMERA                                            RESULT           PROJECTED
                                                                                                           TRANSFORM                                             VERTEX            VERTEX
                                                                                                         (projection matrix)
                                                                                                            (view matrix)                                         DATA              DATA




    -                        3Â÷¿ø Æú¸®°ï ±×·¡ÇÈ¿¼-                                                                           “¾Ö´Ï¸ÞÀÌ¼Ç => ¹öÅؽºÀÇ ¿òÁ÷ÀÓ                                  ”
    -   ÀÔ·Â ¹öÅؽº ·¹º§ÀÇ ¾Ö´Ï¸ÞÀ̼ǿ¡Â ¹°¸®ÀûÎ Á¦¾àÀÌ µû¸§
    -       ¾Ö´Ï¸ÞÀ̼ǻ Çϱâ À§Çؼ± Æ®·£½º Æû ¸ÅÆ®¯½º¦ È°¿ë
    -                  Æ®·£½º Æû ¸ÅÆ®¯½º¦ °è»êÇÏ´Â °úÁ¤Àº Çϵå¿þ¾îÀ °¡¼Ó ´ë»óÀÌ ¾Æ´Ô

3
º¯È Çà·ÄÀ ±¸¼º 1
                                                          compounding transformations


    * ÀϹÝûÎ °-üº¯È                               (Rigidbody Transform)                 ÀÇ ±¸¼º¿äÒ

    - Ò¼àÃ/ë´®È                    (scale)
    - È ¸À ü                 (rotation)
    - À ̵ ¿                 (translation)

    * °¢ ¿ä¼Ò´Â Çà·Ä                         (Matrix) ·   Î Ç ¥Ç ö ° ¡´ É

    * È®´ë/Ãà¼Ò º¯È                           (scale transformation)

                       V input                =                 (x, ,y )z
                       V output               =                 V input x M scale
                                              =                 (x * x ’, y * y       ’, z * z          ’)
                       M   scale              =                 | x’            0              |0
                                                                  |0              y ’             |0
                                                                     |0   0                          z ’|

4
º¯È Çà·ÄÀ ±¸¼º 2
                                                                                   compounding transformations


    * ȸÀü º¯È                                                     (rotate transformation)


    - ȸÀü Çà·ÄÀº ±âº» XÃà, YÃà, ZÃàÀÌ È¸ÀüÇÏ¿© º¯Èµ ÁÂÇ¥·Î ±¸¼º
    - Çà·ÄÀ» º¸°í ¸ð¾çÀ» Àл ¼ö ÀÖ½

                      V input                                             =          (x, ,y )
                                                                                            z
                      V output                                            =          V input x M rotation
                                                                          =          (V input * V x, V input * V          y   ,V   input   *V   z   )
                      M                rotation                           =          | V x.x V x.y          V x.z |
                                                                                       | V .x V .y
                                                                                              y   y   V .z
                                                                                                        y           |
                                                                                        | V .x V .y
                                                                                                z   z V .zz           |

    * À̵¿ º¯È                                                     (translate transformation)


                      V input                                             =          (x, ,y )
                                                                                            z
                      V output                                            =          V input + V       oset
                                                                                                        f

5
Çà·Ä°ú ÁÂÇ¥°è
                                                                                 local coordinate system


    * È®´ë/Ãà¼Ò, ȸÀü°ú À̵¿» µ¿½Ã¡ Ç¥öϱâ À§ÇØ Direct3D´Â 4X4 Çà·Ä»ç¿ë

                      V input                                     =            (x, ,y ,z                              1)
                      V output                                    =            (x ’, y ’, z                         ’, 1)
                      M rotation+oset
                                  f                               =            | V x.x                                V x.y        V x.z   0     |
                                                                                 | V .x  y                         V .yy     V .z
                                                                                                                               y         0           |
                                                                                  | V .x   z                       V .y  z   V .zz       0           |
                                                                                   | V o.x   f                     V o.y V o.z 1
                                                                                                                           f       f                 |

    * º¤ÅÍ x º¯È Çà·Ä = º¯È Çà·Ä Î ±¸¼ºµÈ ÁÂÇ¥°è·Î º¯È

     * ȸÀü Çà·ÉÀº »ç¿ø¼ö                                                 (Quaternion)              À¸·Î º¯È°¡´É
    * OpenGLÀÇ Çà·ÄÀº DIrect3DÀÇ ÀüÄ¡                                                                                  (Tranpose) Ç   Ñ Ç üÅ Â




6
°èÃþÀû ¿ÀºêÁ§Æ® ±¸Á¶
                                                                                                   hierarchical structures


    - °¢ ¿ÀºêÁ§Æ® º¯ÈÀ» »óÀ§ ¿ÀºêÁ§Æ®¡ ±¸¼ÓµÇ´Â °èÃþÀûÎ ÇüÅ·Π±¸¼º
    - ¿ÀºêÁ§Æ®³¢¸ ºÎ¸ð                                                 (parent) -ÀÚ½Ä                    (chid)
                                                                                                             l    À Ç ¸ µÅ © ± ¸Á ¶
    - È¿À²ûÎ ¾Ö´Ï¸ÞÀÌ¼Ç °¡´É

    - ÃÖÁ¾ Çà·Ä = ÀÚ½ÅÇ ·ÎÄà Çà·Ä x ºÎ¸ð ¿ÀºêÁ§Æ®Ç Çà·Ä
    - ¾Ö´Ï¸ÞÀÌ¼Ç Á¤º¸ = ¿ÀºêÁ§Æ® ·ÎÄà Çà·Ä
    - ·ÎÄà Çà·ÄÀ À̵¿¼ºÐ = ºÎ¸ð ¿ÀºêÁ§Æ®
                 ÁÂÇ¥°è¿¡¼-À Ǻ¿À§Ä¡

                             void CMeshOjectRender(const Matrix& parentmat)
                                        b   :
                             {
                                              Matrix mat = m_LocalMat * parentmat;
                                               RenderMesh(mat);
                                              or(i0; imChidN; i)
                                              f = < _ l          +
                                                 mMeshOji-Render(mat);
                                                     _     b[] >
                             }




7
B. Animation techniques
    Basic                             Game issue
    orward kinematics
    f                                   rigid body physics
      inverse kinematics                ÃÄ´Ùº¸±â
      linear interpolation                       ¹Ì²ô·¯Áü ¾ø´Â À̵¿
      spherical inear interpoation
                 l           l                           ÄõÅʹϾð ¾ÐÃà
      keyframe animation
      motion transition

    Advanced
    inverse kinematics solver
    inverse kinematics – constrains
    quaternion




8
±âÃÊ
                                                                                                                                           basic technique


    * Forward Kinematics

    -                 ¾Ö´Ï¸ÞÀÌ¼Ç Á¤º¸´Â °¢ ¿ÀºêÁ§Æ® Ç ÃÖÁ¾ º¯È (ȸÀü, À̵¿, ½ºÄÉÀÏ) µ¥ÀÌŸ
    -                 ÇÏÀ§ ¿ÀºêÁ§Æ®                                                          (ȤÀº one)
                                                                                                   b      Àº »óÀ§ ¿ÀºêÁ§Æ®Ç ¿µÇâÀ» ¹Þ´ÂÙ
    -   »óÀ§ ¿ÀºêÁ§Æ®´Â ÇÏÀ§ ¿ÀºêÁ§Æ® ¾Ö´Ï¸ÞÀÌ¼Ç ¿µÇâÀ» ¹ÞÁö ¾Ê´ÂÙ.
    -       ¾Ö´Ï¸ÞÀÌ¼Ç Àû¿ë ¹æÇâÀº »óÀ§ ¿ÀºêÁ§Æ®¡¼- ÇÏÀ§ ¿ÀºêÁ§Æ®·Î Àü°³ÇÑ´Ù.

    * Inverse Kinematics

    -  ǼÌÀ޸ϴ־ ´¸º¤Á ¤Á¯Æ (End Eector)¡° ÒÇøµ ÇÀÓ ¡Ä§À
                                ®Æ§ÁêºÀ¿                   f
    -            End EectorÍÅκ §Àó» Chain Root ÇÀöÁî± ¡°©Åµ¸ »Àâǵ¿ .
                                                         f                  Ù´Â Þ¹
    -            End Eector §Àó» ºÀ鵮ƧÁê¿ End EectorÇÀ ¡¿Ä§À »Àâǵ¿ Ù´ÂÞ¹
                                                     f              f
    -            End Eector¡° ÇÀÓ ¡°Ä§À ,´ǵ ¢° ÇÀ®Æ§Á꺿 ¯Èº (sove)´
                                                       f       ØÇ l
                   À¯ÏÇÁö ¾ÊÀ¸ç ¹«ÇÑÈ÷ ¸¹À» ¼ö ÀÖ´Ù.
    - ´ äÀ Ì ¾ øÀ » ¼ öµ µ À Ö´ Ù

9
Å°ÇÁ·¹ÀÓ ¾Ö´Ï¸ÞÀ̼Ç
                                                                                          keyframe animation


 * ¾Ö´Ï¸ÞÀÌ¼Ç Á¤º¸ = °¢ ¿ÀºêÁ§Æ®Ç ¾Ö´Ï¸ÞÀÌ¼Ç Å°(½Ã°£, º¯È)ÀÇ Á¤º¸

 - ½Ã°£¿¡ ¸Â´ °¢ ¿ÀºêÁ§Æ®Ç ·ÎÄà º¯È °ªÀ» ¼ÆÃ

 * Å° Á¤º¸

 - ¾Ö´Ï¸ÞÀÌÅÍ°¡ ÀÛ¾÷ÇÑ Å° Á¤º¸¦ ÀͽºÆ÷®
 - spline interpolationÀ¸·Î ¾Ö´Ï¸ÞÀÌ¼Ç Å°
                ÀÛ¾÷» ÇÑ °ÍÀ» °ÔÀÓ¿¡¼- linear interpolation
                ÇÏ¸é ´Ù¸¥ °áú¡ ³ª¿È
 - ÀûýÇÑ »ùÇøµÀ·Î ÇØ°á °¡´É




10
º¸°£
                                                                                           interpolation


 * ÀÚ¿øÇ ÇÑ°è·Î ÀúåµÇ´Â ¾Ö´Ï¸ÞÀÌ¼Ç Å°ÀÇ ¼ö´Â À¯ÇÑ

 * ÀÓÇ ½Ã°£¿¡ ¾Ö´Ï¸ÞÀÌ¼Ç Å°¡ ¾ø´Â °æ¿ì Å° Áß¿¡ ÀÓÇ ½Ã°£º¸´Ù ¾ÕÀÇ
                        Å° Áß¿¡¼- °¡Àå °¡±î¿ Å°¿Í, ½Ã°£º¸´Ù µÚÀÇ Å° Áß¿¡ °¡Àå °¡±î¿ Å°¸¦
                          ¾òÀº ÈÄ ±× Å°µéÀÇ »çÀÌ °ªÀ¸·Î ¾Ö´Ï¸ÞÀÌ¼Ç Å°¸¦ ±¸ÇÑ´Ù.

 * µÎ °ªÀÇ »çÀÌ °ªÀ» ±¸ÇÏ´Â °ÍÀ» º¸°£(interpolation)À̶ó°í ÇÑ´Ù.

 * ¾Ö´Ï¸ÞÀ̼ǿ¡- »ç¿ëÇÏ´Â º¸°£À Spline Interpolation, Linear interpolation
                               µîÀÌ ÀÖ´Ù.




11
¼±Çü º¸°£ (LERP)
                                                                        linear interpolation


 * ¼±Çü º¸°£À º¯È-·®ÀÌ ÀÏÁ¤ÇÑ º¸°£¹ýÀÌ´Ù

 - ¸¾à P(0) = p0, P(1) = p1 À̶ó°í °¡Á¤
 - 0 <= t <= 1
 - P(t) = p0 + (p1 - p0) * t

 - º ¤Å Í´  ° ¢ ¿ ä¼ Ò º °· Î ¼ ±Ç ü º ¸° £ ° ¡´ É

 - Çà·ÄÀ ¼±Çü º¸°£À ȸÀüÇ º¸°£ú´Â ´Ù¸¥ ÀǹÌ
 - ¿ÀÏ·¯°¢¸Î »çÀÌ °ªÀ» ±¸ÇÒ °æ¿ì °¢µ¸¦ ¼±Çüº¸°£ °¡´É ÇÏÁö¸ Ç×»ó °áú¡
             η봦Á ´À¿ª³ ºÀÍ° ,ηǹϴƾ η¸ÀûÑǦÁ . (imal Lock )
                                                    ٴȵë¿ç» G b     ý»ß¹
 - ȸÀüÇ º¸°£À» À§Çؼ± »ç¿ø¼ö¸¦ »ç¿ëÇÑ´Ù
 - »ç¿ø¼ö´Â spherical linear interpolationÀ» »ç¿ëÇÑ´Ù




12
±¸é º¸°£ (SLERP)
                                                                            spherical linear interpolation


 * ±¸é º¸°£À º¤ÅÍ P0 °¡ ±æÀ̸¦ À¯ÁöÇÑ Ã¤·Î ȸÀüÇؼ- P1°¡ µÇ¾ú´Ù°í ÇßÀ» ¶§
  ȸÀüÇÑ ±× »çÀÌ°ª º¸°£ÇÏ´Â ¹æý

 - |P(0)| = |P(1)|
 - 0 <= t <= 1
 - rad = acos(dotproduct(P(0), P(1)))

 - P(t) = a(t) P(0) + b(t) P(1)
 - a(t) = sin( rad * (1-t)) / sin(    rad )
 - (t) = sin(
   b             rad * t) / sin ( rad )

 * ȸÀü ¼ºÐÀ» º¸°£Çϱâ À§Çؼ- »ç¿ø¼ö¡ ´ëÇؼ- °¢ ¼ºÐÀ» ±¸é º¸°£ÇÑ´Ù




13
ÀÚ¿¬½º·¯î ¸ð¼Ç Àüȯ
                                                                                       motion blending


 * ÛÀ¿µ ý¯ÈüÀ Àë´ (ÛÀ¿µ A¦¸ Ù´ÏÇëà ÛÀ¿µ B¦¸ ´ÏÇëà )
                                                    ì¿æ°

 - η¸Àû£°ø¼ ÛÀ¿µ Bη ÌÀü ´ǵ ì¿æ°
 - µ¿ÀÛ B¿Í Áö¸·¿¡¶ ÃëÇÑ µ¿ÀÛ A¸¦ ÀüÌ                                                                                       (transition)   ÇÏ´Â °æ¿ì
 - µ ¿À Û B¿ Í µ À¿ Û AÀ Ç ¼ ¯´                                                 (blending)   ¾çÀ» Á¶ÀýÇÏ¿© ÀüȯÇÏ´Â °æ¿ì

 * ¹æýÀû¸·Î´Â ¾Ö´Ï¸ÞÀ̼ǽà Ű º¸°£ ÇÏ´Â °Íú µ¿ÀÏ
  * °ÔÀÓ ³» ÀÚ¿¬½º·¯î µ¿ÀÛ ÀüÈ¯Ì °¡´ÉÇÔ
   * µ¿ÀÛ¡ µû¶ó¼± Àü̵Ǵ ½Ã°£µ Á¶ÀýÇÒ ÇÊ¿ä ÀÖ½




14
¿ªîµÇÐ
                                                        inverse kinematics


 * IK ýë¿ç» ¡ÁåÀ

 - IÂ ´ K Î · ¸ À û ¿ µ » À Ç ¼ Ì Þ ¸ Ï ´ Ö ¾ º ¼ ý »
 - ÁÖº¯ ¿ÀºêÁ§Æ®ÍÇ »óÈ£ÀÛ¿ë °¡´É
 - ¾Ö´Ï¸ÞÀ̼ǻ dzºÎÏ°Ô

 * ³-Á¡

 - ´ÏÇð¸Ò¼ CPU ¡¿øÚÀ ØÇñº ÎÀû¦Áǽ ¡°ú¿È Ô°©Å
            ³ªÁö ¾ÊÀ» ¼ö ÀÖ´Ù
 - ConstrainµîÀ» ¼¶ÇÏÁö ÇÏÁö¾ÊÀ¸é ÀÌ»óÇÑ ¸ð¼ÇÀÌ
                à ëÇ ØÁ ú ¼ ö À Ö´ Ù

 (¬¿Ã½)




15
¿ªîµÇÐ             – Àç±Íû Á¢±Ù
                                                                                inverse kinematics solver


 * ¼öÄ¡ÀûÎ ÇØ°áÀº ¿¬»ê·®ÀÌ ¸¹Àç, IK Ư¼º»ó Á¤È®ÇÑ ÇØ´Â Á¸ÀçÇÏö ¾Ê´ÂÙ
  * Àûº °è»êÀ¸·Î Á¡øÀû, Àç±Íû¸·Î ±Ù»çÀû¸·Î Çظ¦ ¾ò´Â ¹æý ¼Ò°³

 * Àç±Íû ·çƾ

 - ÇÏÀ§ ¿ÀºêÁ§Æ®(ȤÀº Bone)ºÎÅÍ EndEffect °¡
        ¸ñÇ¥Á¡ÀÌ ³ª¶õÇÏ°Ô µÇ·Ï ȸÀü
                (À ÏÁ ÷¼ ±À Ï ¶ § ° ¡À å EndEfect° ¡ ¸ Çñ ¥Á ¡À Ì
                °¡Àå °¡±î¿ì¹Ç·Î ȸÀüÇϱâ Àüº¸´Ù Ç×»ó
                    EndEfect°¡ ú°¡Á¥Çñ¸ .)           f Ù´øÁö¿î±¡°
 - ´ÙÀ½ ¿ÀºêÁ§Æ®¡ ´ëÇؼ- ´Ù½Ã ¹Ýº
 - ChainRoot ±îÁö ¹Ýº

 - ChainRoot¿¡¼- EndEffect ÂÊÀ¸·Î ÁøÇàص
   µÈ´Ù. (ÀÌ °æ¿ì¡ Á» ´õ °áú¡ Á´Ù.)

16
¿ªîµÇÐ             – Á¡øÀû ÇØ°á
                                                      inverse kinematics solver


 * ¿¬»êÀ ¹ÝºÇÒ ¼ö·Ï Á¡Â÷ ÇØ´ä¿¡ °¡±î¿öÁø´Ù
  * ¾î´À ¼ø°£¿¡ ÇØ´äÀ» ¾òÀ» ¼ö ÀÖ´Ù




17
¿ªîµÇÐ                          – ÄõÅʹϾð Àû¿ë
                                                               inverse kinematics – making quaternion


 * ½ÇÁ¦Àû¸·Î Àû¿ëÇϱâ À§Çؼ± 3D»ó ȸÀü» Àû¿ëÇØ¾ß ÇÔ
  * ÄõÅʹϾðÀÇ ¼ºÁúÀ» ÀÌ¿ë

 -        ÁÂÇ¥°è ³»ÀÇ v1ÀÌ v2°¡ µÇ·Ï ȸÀüÇÒ °æ¿ì
 -              x, y, z, w ÀÇ x, y, z ´Â v1 x v2 ¹æÇâ
 -              ÁÖ¸ÔÀ·Î Ç¥öϸé x, y, z °¡ ¾öÁ ¼Õ°¡¶ô(ȸÀüÃà), w°¡ ȸÀü·®
 -                     v1°ú v2°¡ ÀÌ·ç´Â °¢ÀÌ rad À̸é x, y, z ÀÇ Å©±â´Â sin(rad * 0.5)
 -        w ´ Â cos(rad * 0.5)
 -                     Áï, v1°ú v2ÀÇ ¹Ý°¢À» ÀÌ·ç´Â º¤Å͸¦ v3 ¶ó°í Çϸé (rad * 0.5 ÀÇ Æ¯¼º ÀÌ¿ë)
 -                     x, y, z ´Â v1 °ú v3ÀÇ Å©·Î½º ÇÁ·Î´öÆ®, w ´Â µÆ® ÇÁ·Î´öÆ®

 -        P 1 = Normalize(·ÎÄà ÁÂÇ¥°è¿¡¼-À EndEffector ÀÇ À§Ä¡)
 -        P 2 = Normalize(·ÎÄà ÁÂÇ¥°è¿¡¼-À ¸ñÇ¥Á¡À À§Ä¡)
 -        P 3 = Normalize(p1 + p2)
 -        x, ,y z = CrossProduct(p1, p3), w = DotProduct(p1, p3)

18
¿ªîµÇÐ - ±¸¼Ó
                                                                   inverse kinematics - constrains


 * ÀϹÝû¸·Î IK´Â ȸÀü TM¸¸À·Î Á¦ÇÑ´Ù
  * ȸÀü¿¡µ Á¦¾à(Constrain)                                               À » Á Ù ¼ ö À Ö´ Ù

 * ȸÀü°¢ Å©±â                                 Á¦ÇÑ

 - ȸÀü°¢º µÆ® ÇÁ·Î´öÆ® ½±°Ô ±¸ÇÒ ¼ö ÀÖ¸ç, ¸¾à ÃÖ´ëÄ¡º¸Ù °¢µ¡ Å«
  °æ¿ì¡´Â ȸÀü ÄõÅʹϾðÀ» º¸Á¤ÇÑ´Ù.
 - x, y, z ÀÇ Å©±â´Â sin(rad*0.5) À̹ǷΠsi                                                    n(MAX*0.5) / sin(rad*0.5) °öÇØÁÜ
 - w ÀÇ Å©±â´Â cos(rad*0.5) À̹ǷΠcos(MAX*0.5)·Î ¼öÁ¤ (ºÎÈ£ ÁÖÀÇ)

 * ȸÀüÃà                      Á¦ÇÑ

 - ƯÁ¤ ÃàÀ¸·Î ȸÀüÇϵ· ±¸¼ÓµÇ¾î ÀÖ´Ù¸é ·ÎÄà ÁÂÇ¥°è¿¡¼- ±¸ÇÑ
        EndEectorÍ¿ oal ¡¿ ȵӼ¸± ÇÀàà »Àк¼ Ù´ÑÇÅ°¦Á        f G



19
°-ü ¹°¸®ÇÐ
                                                                          rigid body physics


 * Çϵå¿þ¾î °¡¼ÓÀ» °í·ÁÇÒ °æ¿ì ¹öÅؽº ½Ã¹Ä·À̼Ǻ ÃÖÀûÌ ¾Æ´Ô
  * ·»´õ¸µÀÇ °¡¼ÓÀ» °í·ÁÇϸé TM ·¹º§¿¡¼-ÀÇ ¿ÀºêÁ§Æ®Ç ¹°¸®ÇÐ Àû¿ëÌ À¯¸®

 - ±âº»À TM ·¹º§¸ÀÎ Àû¿ë °¡´ÉÇÑ ¹°¸®Çп¡ ´ëÇؼ- ½ÃµÇÑ´Ù
 - °¢ Á¶ÀÎÆ®¸¦ ÆļŬ·Î °£ÁÖÇÏí ¹°¸®ÇÐ Àû¿ëÇϵ, ±æÀÌ´Â º¯ÇÏÁö ¾Êµ·Ï Çؼ-
   ȸÀü ¼ºÐ¸ ³²±ä´Ù
 - IK¿Í ¸¶Âù°¡Áö·Î ÆļŬÀÇ À̵¿È À§Ä¡¸¦ ÀÌ¿ë ȸÀü TMÀ» ±¸ÇÑ´Ù

 * ¼è»ç½, Æ÷´Ï Å×ÀÏ µîÀÇ °-ü ¹°¸®¿¡ Àû´ç

 * dzºÎÏ°í ÀÎÅÍ·ºÆ¼êÇÑ ¾Ö´Ï¸ÞÀÌ¼Ç °¡´ÉÇØÁøÙ
 (¬¿Ã½)




20
ÃÄ´Ùº¸±â
                                                                     looking up at face


 * È¿°ú
  - ¾Ö´Ï¸ÞÀÌ¼Ç            dzºÎÒ ¼ö·Ï             ±â°èÀû̶õ
        ´           À³ ¦À                        » ´ ú Á Ø´ Ù
  - °ÔÀÓ¿¡¼-                   ÃÄ´Ùº¸±â 󸮴        ij¸¯ÅÍ¿¡
          »ý¸í·ÂÀ     ÁÖ´Â °¡Àå                   ½±°í È¿°úÀûÎ ¹æý

 * ±¸Çö
  - ¾ÆÁÖ Á¦ÇÑÀûÌ°í ¿¹Ãø°¡´ÉÇϱ⠶§¹®¿¡
          ¸Ó® ¿ÀºêÁ§Æ®¡ ´ëÇؼ- ¿ÀÏ·¯ ȸÀü»
             Àû¿ëÇÏ´Â °Íµ ¹«³-
  - °¡ÁßÄ(Weight)¸¦ Áشٰųª, ½ºÅÄ´Ùµå
                     ÇÏ°Ô ÀÛ¼ºÇÏ·Á¸é ¾Õ¼- ´Ù·é ÄõÅʹϾðÀ»
                         ÀÌ¿ë




21
¹Ì²ô·¯Áü ¾ø´Â À̵¿
                                                                                                               movement based animation

 * ¾Ö´Ï¸ÞÀ̼ǰú »ó°ü¾øÀÌ ÀÏÁ¤ÇÑ ¼Óµ·Î ÁÂÇ¥¸¦ °»½ÅÇÒ °æ¿ì ¹Ì²ô·¯Áü Çö»ó
                        ¹ß»ý

 * À̵¿°ú ¾Ö´Ï¸ÞÀÌ¼Ç Á¤Ã¥

 - Á¦ÀÛÇÏ´Â ¾Ö´Ï¸ÞÀÌ¼Ç                 ÀÚü°¡ Á¦ÀÚ¸® °ÉÀ½Ì ¾Æ´Ï¶ó ¹Ì²ô·¯Áü ¾øÀÌ
            À̵¿ÇÏ·             °³¹ß
 - ÃÖ»óÀ§ º»ÀÇ                       À̵¿Ä¡¸¦ ±âÁØÀ¸·Î ó¸®
 - ·»´õ¸µ ÇÒ                                 ¶§ À̵¿ÇÒ ÃàÀÇ °ªÀ» °-Á¦·Î 0 À¸·Î ¼Æà (Á¦ÀÚ¸® °ÉÀ½Çϵ·)
 - ·çÆ®º» À̵¿                                       º¤ÅÍ ±¸ÇÏ´Â ÇÔ¼ö°¡ p ¸é p(n) - p(n-1) ÀÇ º¤ÅÍ Áß À̵¿Ãà
                    ¼ºÐ¸        ¾òî¼- À̵¿
 - ¸ð¼Ç ºí·£µù                                 Áß¿¡´Â À̵¿Ä¡ °¡ÁßÄ¿ µû¶ó ó¸®




22
ÄõÅʹϾð ¾ÐÃà
                                                                               compressing quaternion


 * ¾Ö´Ï¸ÞÀÌ¼Ç µ¥ÀÌÅÍ°¡ ¸¹¾ÆÁöé ¸Þð® »ç¿ë·®ÀÌ ¸¹¾Æ
  * ¸Þ𮠾]º°¡ ¸¹°í, ¹ÝºÀûÎ ºÎÐÀÌ Àû¸ç, µ¥ÀÌÅÍ·® ¸¹¾Æ¼-
                              ¸Þ𮠴뿪ÆøÀÇ ¿µÇâÀ» ¹ÞÀ½
   * Å° º¸°£À» À§Çؼ- ´ëºÎÐ ¿¬¼ÓµÈ µÎ°³ÀÇ µ¥ÀÌÅ͸¦ Àоîß ÇÔ

 * ÄõÅʹϾðÀÇ Æ¯¼ºÀ» ÀÌ¿ë
  - x, ,y z ´ -1-¼¡¿ +1 »Àª°Ìç üÁ¡°
  - x, ,y ,z w ¡¿ Î𵸠¦¸ö¼½À µØÇëà üÀ¸È к¼ -ȯº ½Àø¾ (w ÇÀª° ¦¸§Àü¹ 0 -¼¡¿
                          1»çÀÌ·Î ¸µå´Â °Íµ °¡´É)
  - °ªÀÇ ¹üÀ§°¡ Á¦Çѵ¹·Î ÃæºÐÇÑ À¯È¿ ÀÚ¸®¼ö¦ È®º¸Çؼ- Fixed Point ·Î
                          º¯È °¡´É

 * x, y, z, w ¸¦ °¢ 2 byte fixed point ·Î º¯ÈÇÒ °æ¿ì ¸Þ𮦠Àý¹Ý¸ Â÷Áö




23
Áú¹®
     question




24

Weitere ähnliche Inhalte

Andere mochten auch

KGDS04_렌더파이프라인 이해와 구현
KGDS04_렌더파이프라인 이해와 구현KGDS04_렌더파이프라인 이해와 구현
KGDS04_렌더파이프라인 이해와 구현noerror
 
Jose guadalupe -curso-historia
Jose guadalupe -curso-historiaJose guadalupe -curso-historia
Jose guadalupe -curso-historiaMEGEMAROJO
 
Presentazione VADA - Volontari amici degli anziani
Presentazione VADA  - Volontari amici degli anzianiPresentazione VADA  - Volontari amici degli anziani
Presentazione VADA - Volontari amici degli anzianiFondazione OIC onlus
 
הישוב שלי.ד3
הישוב שלי.ד3הישוב שלי.ד3
הישוב שלי.ד3web4learn
 
domino_classe1 pdf
domino_classe1 pdfdomino_classe1 pdf
domino_classe1 pdfMari Nuñez
 
мир тыквенных растений 2
мир тыквенных растений 2мир тыквенных растений 2
мир тыквенных растений 2Ирина Иванова
 
Estuardo robles
Estuardo roblesEstuardo robles
Estuardo roblesAvantica
 
Elevation bakas zorg
Elevation bakas zorgElevation bakas zorg
Elevation bakas zorgandrebolland
 
Projeto Mobile Service Care
Projeto Mobile Service CareProjeto Mobile Service Care
Projeto Mobile Service CareMarco Coghi
 
Presentazione iniziative odv
Presentazione iniziative odvPresentazione iniziative odv
Presentazione iniziative odvSistema Sviluppo
 

Andere mochten auch (20)

KGDS04_렌더파이프라인 이해와 구현
KGDS04_렌더파이프라인 이해와 구현KGDS04_렌더파이프라인 이해와 구현
KGDS04_렌더파이프라인 이해와 구현
 
Presentazione standard1
Presentazione standard1Presentazione standard1
Presentazione standard1
 
24hcuoi
24hcuoi24hcuoi
24hcuoi
 
Grupo idero pdf
Grupo idero pdfGrupo idero pdf
Grupo idero pdf
 
Jose guadalupe -curso-historia
Jose guadalupe -curso-historiaJose guadalupe -curso-historia
Jose guadalupe -curso-historia
 
Presentazione VADA - Volontari amici degli anziani
Presentazione VADA  - Volontari amici degli anzianiPresentazione VADA  - Volontari amici degli anziani
Presentazione VADA - Volontari amici degli anziani
 
הישוב שלי.ד3
הישוב שלי.ד3הישוב שלי.ד3
הישוב שלי.ד3
 
Ppt图
Ppt图Ppt图
Ppt图
 
domino_classe1 pdf
domino_classe1 pdfdomino_classe1 pdf
domino_classe1 pdf
 
Unidad 4 excel
Unidad 4 excelUnidad 4 excel
Unidad 4 excel
 
мир тыквенных растений 2
мир тыквенных растений 2мир тыквенных растений 2
мир тыквенных растений 2
 
Egunkaria word
Egunkaria wordEgunkaria word
Egunkaria word
 
Estuardo robles
Estuardo roblesEstuardo robles
Estuardo robles
 
Elevation bakas zorg
Elevation bakas zorgElevation bakas zorg
Elevation bakas zorg
 
Maitan13
Maitan13Maitan13
Maitan13
 
Projeto Mobile Service Care
Projeto Mobile Service CareProjeto Mobile Service Care
Projeto Mobile Service Care
 
Producto6paula
Producto6paulaProducto6paula
Producto6paula
 
Presentazione iniziative odv
Presentazione iniziative odvPresentazione iniziative odv
Presentazione iniziative odv
 
Mz zagvar baga
Mz zagvar bagaMz zagvar baga
Mz zagvar baga
 
Holidayinn
HolidayinnHolidayinn
Holidayinn
 

Mehr von noerror

15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법noerror
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법noerror
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법noerror
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기noerror
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강noerror
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개noerror
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editornoerror
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁noerror
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 

Mehr von noerror (20)

15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 

04_Practical animation technique

  • 1. Practical Animation Techniques ±è¼ºÀÍ(noerror@hitel.net) 2004.07.04 http:www.digibath.com/noerror / 1
  • 2. A. Background basic ±âº»ÀûÎ Á¤¡ º¯ÈÀÇ ´Ü°è º¯È Çà·ÄÀ ±¸¼º È®´ë/Ãà¼Ò º¯È ȸÀü º¯È À̵¿ º¯È Çà·Ä°ú ÁÂÇ¥°è °èÃþÀû ±¸¼º 2
  • 3. ±âº»ÀûÎ Á¤¡ º¯ÈÀÇ ´Ü°è vertex transformations pipeline LOCAL LOCAL TRANSFORM TRANSFORM INPUT X X CAMERA -1 VERTEX ¡¦ TRANSFORM ¡¦ DATA X (view X matrix) WORLD WORLD TRANSFORM TRANSFORM VIEWPORT -1 CAMERA RESULT PROJECTED TRANSFORM VERTEX VERTEX (projection matrix) (view matrix) DATA DATA - 3Â÷¿ø Æú¸®°ï ±×·¡ÇÈ¿¼- “¾Ö´Ï¸ÞÀÌ¼Ç => ¹öÅؽºÀÇ ¿òÁ÷ÀÓ ” - ÀÔ·Â ¹öÅؽº ·¹º§ÀÇ ¾Ö´Ï¸ÞÀ̼ǿ¡Â ¹°¸®ÀûÎ Á¦¾àÀÌ µû¸§ - ¾Ö´Ï¸ÞÀ̼ǻ Çϱâ À§Çؼ± Æ®·£½º Æû ¸ÅÆ®¯½º¦ È°¿ë - Æ®·£½º Æû ¸ÅÆ®¯½º¦ °è»êÇÏ´Â °úÁ¤Àº Çϵå¿þ¾îÀ °¡¼Ó ´ë»óÀÌ ¾Æ´Ô 3
  • 4. º¯È Çà·ÄÀ ±¸¼º 1 compounding transformations * ÀϹÝûÎ °-üº¯È (Rigidbody Transform) ÀÇ ±¸¼º¿äÒ - Ò¼àÃ/ë´®È (scale) - È ¸À ü (rotation) - À ̵ ¿ (translation) * °¢ ¿ä¼Ò´Â Çà·Ä (Matrix) · Î Ç ¥Ç ö ° ¡´ É * È®´ë/Ãà¼Ò º¯È (scale transformation) V input = (x, ,y )z V output = V input x M scale = (x * x ’, y * y ’, z * z ’) M scale = | x’ 0 |0 |0 y ’ |0 |0 0 z ’| 4
  • 5. º¯È Çà·ÄÀ ±¸¼º 2 compounding transformations * ȸÀü º¯È (rotate transformation) - ȸÀü Çà·ÄÀº ±âº» XÃà, YÃà, ZÃàÀÌ È¸ÀüÇÏ¿© º¯Èµ ÁÂÇ¥·Î ±¸¼º - Çà·ÄÀ» º¸°í ¸ð¾çÀ» Àл ¼ö ÀÖ½ V input = (x, ,y ) z V output = V input x M rotation = (V input * V x, V input * V y ,V input *V z ) M rotation = | V x.x V x.y V x.z | | V .x V .y y y V .z y | | V .x V .y z z V .zz | * À̵¿ º¯È (translate transformation) V input = (x, ,y ) z V output = V input + V oset f 5
  • 6. Çà·Ä°ú ÁÂÇ¥°è local coordinate system * È®´ë/Ãà¼Ò, ȸÀü°ú À̵¿» µ¿½Ã¡ Ç¥öϱâ À§ÇØ Direct3D´Â 4X4 Çà·Ä»ç¿ë V input = (x, ,y ,z 1) V output = (x ’, y ’, z ’, 1) M rotation+oset f = | V x.x V x.y V x.z 0 | | V .x y V .yy V .z y 0 | | V .x z V .y z V .zz 0 | | V o.x f V o.y V o.z 1 f f | * º¤ÅÍ x º¯È Çà·Ä = º¯È Çà·Ä Î ±¸¼ºµÈ ÁÂÇ¥°è·Î º¯È * ȸÀü Çà·ÉÀº »ç¿ø¼ö (Quaternion) À¸·Î º¯È°¡´É * OpenGLÀÇ Çà·ÄÀº DIrect3DÀÇ ÀüÄ¡ (Tranpose) Ç Ñ Ç üÅ Â 6
  • 7. °èÃþÀû ¿ÀºêÁ§Æ® ±¸Á¶ hierarchical structures - °¢ ¿ÀºêÁ§Æ® º¯ÈÀ» »óÀ§ ¿ÀºêÁ§Æ®¡ ±¸¼ÓµÇ´Â °èÃþÀûÎ ÇüÅ·Π±¸¼º - ¿ÀºêÁ§Æ®³¢¸ ºÎ¸ð (parent) -ÀÚ½Ä (chid) l À Ç ¸ µÅ © ± ¸Á ¶ - È¿À²ûÎ ¾Ö´Ï¸ÞÀÌ¼Ç °¡´É - ÃÖÁ¾ Çà·Ä = ÀÚ½ÅÇ ·ÎÄà Çà·Ä x ºÎ¸ð ¿ÀºêÁ§Æ®Ç Çà·Ä - ¾Ö´Ï¸ÞÀÌ¼Ç Á¤º¸ = ¿ÀºêÁ§Æ® ·ÎÄà Çà·Ä - ·ÎÄà Çà·ÄÀ À̵¿¼ºÐ = ºÎ¸ð ¿ÀºêÁ§Æ® ÁÂÇ¥°è¿¡¼-À Ǻ¿À§Ä¡ void CMeshOjectRender(const Matrix& parentmat) b : { Matrix mat = m_LocalMat * parentmat; RenderMesh(mat); or(i0; imChidN; i) f = < _ l + mMeshOji-Render(mat); _ b[] > } 7
  • 8. B. Animation techniques Basic Game issue orward kinematics f rigid body physics inverse kinematics ÃÄ´Ùº¸±â linear interpolation ¹Ì²ô·¯Áü ¾ø´Â À̵¿ spherical inear interpoation l l ÄõÅʹϾð ¾ÐÃà keyframe animation motion transition Advanced inverse kinematics solver inverse kinematics – constrains quaternion 8
  • 9. ±âÃÊ basic technique * Forward Kinematics - ¾Ö´Ï¸ÞÀÌ¼Ç Á¤º¸´Â °¢ ¿ÀºêÁ§Æ® Ç ÃÖÁ¾ º¯È (ȸÀü, À̵¿, ½ºÄÉÀÏ) µ¥ÀÌŸ - ÇÏÀ§ ¿ÀºêÁ§Æ® (ȤÀº one) b Àº »óÀ§ ¿ÀºêÁ§Æ®Ç ¿µÇâÀ» ¹Þ´ÂÙ - »óÀ§ ¿ÀºêÁ§Æ®´Â ÇÏÀ§ ¿ÀºêÁ§Æ® ¾Ö´Ï¸ÞÀÌ¼Ç ¿µÇâÀ» ¹ÞÁö ¾Ê´ÂÙ. - ¾Ö´Ï¸ÞÀÌ¼Ç Àû¿ë ¹æÇâÀº »óÀ§ ¿ÀºêÁ§Æ®¡¼- ÇÏÀ§ ¿ÀºêÁ§Æ®·Î Àü°³ÇÑ´Ù. * Inverse Kinematics - ǼÌÀ޸ϴ־ ´¸º¤Á ¤Á¯Æ (End Eector)¡° ÒÇøµ ÇÀÓ ¡Ä§À ®Æ§ÁêºÀ¿ f - End EectorÍÅκ §Àó» Chain Root ÇÀöÁî± ¡°©Åµ¸ »Àâǵ¿ . f Ù´Â Þ¹ - End Eector §Àó» ºÀ鵮ƧÁê¿ End EectorÇÀ ¡¿Ä§À »Àâǵ¿ Ù´ÂÞ¹ f f - End Eector¡° ÇÀÓ ¡°Ä§À ,´ǵ ¢° ÇÀ®Æ§Á꺿 ¯Èº (sove)´ f ØÇ l À¯ÏÇÁö ¾ÊÀ¸ç ¹«ÇÑÈ÷ ¸¹À» ¼ö ÀÖ´Ù. - ´ äÀ Ì ¾ øÀ » ¼ öµ µ À Ö´ Ù 9
  • 10. Å°ÇÁ·¹ÀÓ ¾Ö´Ï¸ÞÀÌ¼Ç keyframe animation * ¾Ö´Ï¸ÞÀÌ¼Ç Á¤º¸ = °¢ ¿ÀºêÁ§Æ®Ç ¾Ö´Ï¸ÞÀÌ¼Ç Å°(½Ã°£, º¯È)ÀÇ Á¤º¸ - ½Ã°£¿¡ ¸Â´ °¢ ¿ÀºêÁ§Æ®Ç ·ÎÄà º¯È °ªÀ» ¼Æà * Å° Á¤º¸ - ¾Ö´Ï¸ÞÀÌÅÍ°¡ ÀÛ¾÷ÇÑ Å° Á¤º¸¦ ÀͽºÆ÷® - spline interpolationÀ¸·Î ¾Ö´Ï¸ÞÀÌ¼Ç Å° ÀÛ¾÷» ÇÑ °ÍÀ» °ÔÀÓ¿¡¼- linear interpolation ÇÏ¸é ´Ù¸¥ °áú¡ ³ª¿È - ÀûýÇÑ »ùÇøµÀ·Î ÇØ°á °¡´É 10
  • 11. º¸°£ interpolation * ÀÚ¿øÇ ÇÑ°è·Î ÀúåµÇ´Â ¾Ö´Ï¸ÞÀÌ¼Ç Å°ÀÇ ¼ö´Â À¯ÇÑ * ÀÓÇ ½Ã°£¿¡ ¾Ö´Ï¸ÞÀÌ¼Ç Å°¡ ¾ø´Â °æ¿ì Å° Áß¿¡ ÀÓÇ ½Ã°£º¸´Ù ¾ÕÀÇ Å° Áß¿¡¼- °¡Àå °¡±î¿ Å°¿Í, ½Ã°£º¸´Ù µÚÀÇ Å° Áß¿¡ °¡Àå °¡±î¿ Å°¸¦ ¾òÀº ÈÄ ±× Å°µéÀÇ »çÀÌ °ªÀ¸·Î ¾Ö´Ï¸ÞÀÌ¼Ç Å°¸¦ ±¸ÇÑ´Ù. * µÎ °ªÀÇ »çÀÌ °ªÀ» ±¸ÇÏ´Â °ÍÀ» º¸°£(interpolation)À̶ó°í ÇÑ´Ù. * ¾Ö´Ï¸ÞÀ̼ǿ¡- »ç¿ëÇÏ´Â º¸°£À Spline Interpolation, Linear interpolation µîÀÌ ÀÖ´Ù. 11
  • 12. ¼±Çü º¸°£ (LERP) linear interpolation * ¼±Çü º¸°£À º¯È-·®ÀÌ ÀÏÁ¤ÇÑ º¸°£¹ýÀÌ´Ù - ¸¾à P(0) = p0, P(1) = p1 À̶ó°í °¡Á¤ - 0 <= t <= 1 - P(t) = p0 + (p1 - p0) * t - º ¤Å Í´  ° ¢ ¿ ä¼ Ò º °· Î ¼ ±Ç ü º ¸° £ ° ¡´ É - Çà·ÄÀ ¼±Çü º¸°£À ȸÀüÇ º¸°£ú´Â ´Ù¸¥ ÀÇ¹Ì - ¿ÀÏ·¯°¢¸Î »çÀÌ °ªÀ» ±¸ÇÒ °æ¿ì °¢µ¸¦ ¼±Çüº¸°£ °¡´É ÇÏÁö¸ Ç×»ó °áú¡ η봦Á ´À¿ª³ ºÀÍ° ,ηǹϴƾ η¸ÀûÑǦÁ . (imal Lock ) ٴȵë¿ç» G b ý»ß¹ - ȸÀüÇ º¸°£À» À§Çؼ± »ç¿ø¼ö¸¦ »ç¿ëÇÑ´Ù - »ç¿ø¼ö´Â spherical linear interpolationÀ» »ç¿ëÇÑ´Ù 12
  • 13. ±¸é º¸°£ (SLERP) spherical linear interpolation * ±¸é º¸°£À º¤ÅÍ P0 °¡ ±æÀ̸¦ À¯ÁöÇÑ Ã¤·Î ȸÀüÇؼ- P1°¡ µÇ¾ú´Ù°í ÇßÀ» ¶§ ȸÀüÇÑ ±× »çÀÌ°ª º¸°£ÇÏ´Â ¹æý - |P(0)| = |P(1)| - 0 <= t <= 1 - rad = acos(dotproduct(P(0), P(1))) - P(t) = a(t) P(0) + b(t) P(1) - a(t) = sin( rad * (1-t)) / sin( rad ) - (t) = sin( b rad * t) / sin ( rad ) * ȸÀü ¼ºÐÀ» º¸°£Çϱâ À§Çؼ- »ç¿ø¼ö¡ ´ëÇؼ- °¢ ¼ºÐÀ» ±¸é º¸°£ÇÑ´Ù 13
  • 14. ÀÚ¿¬½º·¯î ¸ð¼Ç Àüȯ motion blending * ÛÀ¿µ ý¯ÈüÀ Àë´ (ÛÀ¿µ A¦¸ Ù´ÏÇëà ÛÀ¿µ B¦¸ ´ÏÇëà ) ì¿æ° - η¸Àû£°ø¼ ÛÀ¿µ Bη ÌÀü ´ǵ ì¿æ° - µ¿ÀÛ B¿Í Áö¸·¿¡¶ ÃëÇÑ µ¿ÀÛ A¸¦ ÀüÌ (transition) ÇÏ´Â °æ¿ì - µ ¿À Û B¿ Í µ À¿ Û AÀ Ç ¼ ¯´  (blending) ¾çÀ» Á¶ÀýÇÏ¿© ÀüȯÇÏ´Â °æ¿ì * ¹æýÀû¸·Î´Â ¾Ö´Ï¸ÞÀ̼ǽà Ű º¸°£ ÇÏ´Â °Íú µ¿ÀÏ * °ÔÀÓ ³» ÀÚ¿¬½º·¯î µ¿ÀÛ ÀüÈ¯Ì °¡´ÉÇÔ * µ¿ÀÛ¡ µû¶ó¼± Àü̵Ǵ ½Ã°£µ Á¶ÀýÇÒ ÇÊ¿ä ÀÖ½ 14
  • 15. ¿ªîµÇÐ inverse kinematics * IK ýë¿ç» ¡ÁåÀ - I ´ K Î · ¸ À û ¿ µ » À Ç ¼ Ì Þ ¸ Ï ´ Ö ¾ º ¼ ý » - ÁÖº¯ ¿ÀºêÁ§Æ®ÍÇ »óÈ£ÀÛ¿ë °¡´É - ¾Ö´Ï¸ÞÀ̼ǻ dzºÎÏ°Ô * ³-Á¡ - ´ÏÇð¸Ò¼ CPU ¡¿øÚÀ ØÇñº ÎÀû¦Áǽ ¡°ú¿È Ô°©Å ³ªÁö ¾ÊÀ» ¼ö ÀÖ´Ù - ConstrainµîÀ» ¼¶ÇÏÁö ÇÏÁö¾ÊÀ¸é ÀÌ»óÇÑ ¸ð¼ÇÀÌ Ã ëÇ ØÁ ú ¼ ö À Ö´ Ù (¬¿Ã½) 15
  • 16. ¿ªîµÇÐ – Àç±Íû Á¢±Ù inverse kinematics solver * ¼öÄ¡ÀûÎ ÇØ°áÀº ¿¬»ê·®ÀÌ ¸¹Àç, IK Ư¼º»ó Á¤È®ÇÑ ÇØ´Â Á¸ÀçÇÏö ¾Ê´ÂÙ * Àûº °è»êÀ¸·Î Á¡øÀû, Àç±Íû¸·Î ±Ù»çÀû¸·Î Çظ¦ ¾ò´Â ¹æý ¼Ò°³ * Àç±Íû ·çƾ - ÇÏÀ§ ¿ÀºêÁ§Æ®(ȤÀº Bone)ºÎÅÍ EndEffect °¡ ¸ñÇ¥Á¡ÀÌ ³ª¶õÇÏ°Ô µÇ·Ï ȸÀü (À ÏÁ ÷¼ ±À Ï ¶ § ° ¡À å EndEfect° ¡ ¸ Çñ ¥Á ¡À Ì °¡Àå °¡±î¿ì¹Ç·Î ȸÀüÇϱâ Àüº¸´Ù Ç×»ó EndEfect°¡ ú°¡Á¥Çñ¸ .) f Ù´øÁö¿î±¡° - ´ÙÀ½ ¿ÀºêÁ§Æ®¡ ´ëÇؼ- ´Ù½Ã ¹Ýº - ChainRoot ±îÁö ¹Ýº - ChainRoot¿¡¼- EndEffect ÂÊÀ¸·Î ÁøÇàص µÈ´Ù. (ÀÌ °æ¿ì¡ Á» ´õ °áú¡ Á´Ù.) 16
  • 17. ¿ªîµÇÐ – Á¡øÀû ÇØ°á inverse kinematics solver * ¿¬»êÀ ¹ÝºÇÒ ¼ö·Ï Á¡Â÷ ÇØ´ä¿¡ °¡±î¿öÁø´Ù * ¾î´À ¼ø°£¿¡ ÇØ´äÀ» ¾òÀ» ¼ö ÀÖ´Ù 17
  • 18. ¿ªîµÇÐ – ÄõÅʹϾð Àû¿ë inverse kinematics – making quaternion * ½ÇÁ¦Àû¸·Î Àû¿ëÇϱâ À§Çؼ± 3D»ó ȸÀü» Àû¿ëÇØ¾ß ÇÔ * ÄõÅʹϾðÀÇ ¼ºÁúÀ» ÀÌ¿ë - ÁÂÇ¥°è ³»ÀÇ v1ÀÌ v2°¡ µÇ·Ï ȸÀüÇÒ °æ¿ì - x, y, z, w ÀÇ x, y, z ´Â v1 x v2 ¹æÇâ - ÁÖ¸ÔÀ·Î Ç¥öϸé x, y, z °¡ ¾öÁ ¼Õ°¡¶ô(ȸÀüÃà), w°¡ ȸÀü·® - v1°ú v2°¡ ÀÌ·ç´Â °¢ÀÌ rad À̸é x, y, z ÀÇ Å©±â´Â sin(rad * 0.5) - w ´  cos(rad * 0.5) - Áï, v1°ú v2ÀÇ ¹Ý°¢À» ÀÌ·ç´Â º¤Å͸¦ v3 ¶ó°í Çϸé (rad * 0.5 ÀÇ Æ¯¼º ÀÌ¿ë) - x, y, z ´Â v1 °ú v3ÀÇ Å©·Î½º ÇÁ·Î´öÆ®, w ´Â µÆ® ÇÁ·Î´öÆ® - P 1 = Normalize(·ÎÄà ÁÂÇ¥°è¿¡¼-À EndEffector ÀÇ À§Ä¡) - P 2 = Normalize(·ÎÄà ÁÂÇ¥°è¿¡¼-À ¸ñÇ¥Á¡À À§Ä¡) - P 3 = Normalize(p1 + p2) - x, ,y z = CrossProduct(p1, p3), w = DotProduct(p1, p3) 18
  • 19. ¿ªîµÇÐ - ±¸¼Ó inverse kinematics - constrains * ÀϹÝû¸·Î IK´Â ȸÀü TM¸¸À·Î Á¦ÇÑ´Ù * ȸÀü¿¡µ Á¦¾à(Constrain) À » Á Ù ¼ ö À Ö´ Ù * ȸÀü°¢ Å©±â Á¦ÇÑ - ȸÀü°¢º µÆ® ÇÁ·Î´öÆ® ½±°Ô ±¸ÇÒ ¼ö ÀÖ¸ç, ¸¾à ÃÖ´ëÄ¡º¸Ù °¢µ¡ Å« °æ¿ì¡´Â ȸÀü ÄõÅʹϾðÀ» º¸Á¤ÇÑ´Ù. - x, y, z ÀÇ Å©±â´Â sin(rad*0.5) À̹ǷΠsi n(MAX*0.5) / sin(rad*0.5) °öÇØÁÜ - w ÀÇ Å©±â´Â cos(rad*0.5) À̹ǷΠcos(MAX*0.5)·Î ¼öÁ¤ (ºÎÈ£ ÁÖÀÇ) * ȸÀüÃà Á¦ÇÑ - ƯÁ¤ ÃàÀ¸·Î ȸÀüÇϵ· ±¸¼ÓµÇ¾î ÀÖ´Ù¸é ·ÎÄà ÁÂÇ¥°è¿¡¼- ±¸ÇÑ EndEectorÍ¿ oal ¡¿ ȵӼ¸± ÇÀàà »Àк¼ Ù´ÑÇÅ°¦Á f G 19
  • 20. °-ü ¹°¸®ÇÐ rigid body physics * Çϵå¿þ¾î °¡¼ÓÀ» °í·ÁÇÒ °æ¿ì ¹öÅؽº ½Ã¹Ä·À̼Ǻ ÃÖÀûÌ ¾Æ´Ô * ·»´õ¸µÀÇ °¡¼ÓÀ» °í·ÁÇϸé TM ·¹º§¿¡¼-ÀÇ ¿ÀºêÁ§Æ®Ç ¹°¸®ÇÐ Àû¿ëÌ À¯¸® - ±âº»À TM ·¹º§¸ÀÎ Àû¿ë °¡´ÉÇÑ ¹°¸®Çп¡ ´ëÇؼ- ½ÃµÇÑ´Ù - °¢ Á¶ÀÎÆ®¸¦ ÆļŬ·Î °£ÁÖÇÏí ¹°¸®ÇÐ Àû¿ëÇϵ, ±æÀÌ´Â º¯ÇÏÁö ¾Êµ·Ï Çؼ- ȸÀü ¼ºÐ¸ ³²±ä´Ù - IK¿Í ¸¶Âù°¡Áö·Î ÆļŬÀÇ À̵¿È À§Ä¡¸¦ ÀÌ¿ë ȸÀü TMÀ» ±¸ÇÑ´Ù * ¼è»ç½, Æ÷´Ï Å×ÀÏ µîÀÇ °-ü ¹°¸®¿¡ Àû´ç * dzºÎÏ°í ÀÎÅÍ·ºÆ¼êÇÑ ¾Ö´Ï¸ÞÀÌ¼Ç °¡´ÉÇØÁøÙ (¬¿Ã½) 20
  • 21. ÃÄ´Ùº¸±â looking up at face * È¿°ú - ¾Ö´Ï¸ÞÀÌ¼Ç Ç³ºÎÒ ¼ö·Ï ±â°èÀû̶õ ´ À³ ¦À » ´ ú Á Ø´ Ù - °ÔÀÓ¿¡¼- ÃÄ´Ùº¸±â 󸮴 ij¸¯ÅÍ¿¡ »ý¸í·ÂÀ ÁÖ´Â °¡Àå ½±°í È¿°úÀûÎ ¹æý * ±¸Çö - ¾ÆÁÖ Á¦ÇÑÀûÌ°í ¿¹Ãø°¡´ÉÇϱ⠶§¹®¿¡ ¸Ó® ¿ÀºêÁ§Æ®¡ ´ëÇؼ- ¿ÀÏ·¯ ȸÀü» Àû¿ëÇÏ´Â °Íµ ¹«³- - °¡ÁßÄ(Weight)¸¦ Áشٰųª, ½ºÅÄ´Ùµå ÇÏ°Ô ÀÛ¼ºÇÏ·Á¸é ¾Õ¼- ´Ù·é ÄõÅʹϾðÀ» ÀÌ¿ë 21
  • 22. ¹Ì²ô·¯Áü ¾ø´Â À̵¿ movement based animation * ¾Ö´Ï¸ÞÀ̼ǰú »ó°ü¾øÀÌ ÀÏÁ¤ÇÑ ¼Óµ·Î ÁÂÇ¥¸¦ °»½ÅÇÒ °æ¿ì ¹Ì²ô·¯Áü Çö»ó ¹ß»ý * À̵¿°ú ¾Ö´Ï¸ÞÀÌ¼Ç Á¤Ã¥ - Á¦ÀÛÇÏ´Â ¾Ö´Ï¸ÞÀÌ¼Ç ÀÚü°¡ Á¦ÀÚ¸® °ÉÀ½Ì ¾Æ´Ï¶ó ¹Ì²ô·¯Áü ¾øÀÌ À̵¿ÇÏ· °³¹ß - ÃÖ»óÀ§ º»ÀÇ À̵¿Ä¡¸¦ ±âÁØÀ¸·Î ó¸® - ·»´õ¸µ ÇÒ ¶§ À̵¿ÇÒ ÃàÀÇ °ªÀ» °-Á¦·Î 0 À¸·Î ¼Æà (Á¦ÀÚ¸® °ÉÀ½Çϵ·) - ·çÆ®º» À̵¿ º¤ÅÍ ±¸ÇÏ´Â ÇÔ¼ö°¡ p ¸é p(n) - p(n-1) ÀÇ º¤ÅÍ Áß À̵¿Ãà ¼ºÐ¸ ¾òî¼- À̵¿ - ¸ð¼Ç ºí·£µù Áß¿¡´Â À̵¿Ä¡ °¡ÁßÄ¿ µû¶ó ó¸® 22
  • 23. ÄõÅʹϾð ¾ÐÃà compressing quaternion * ¾Ö´Ï¸ÞÀÌ¼Ç µ¥ÀÌÅÍ°¡ ¸¹¾ÆÁöé ¸Þð® »ç¿ë·®ÀÌ ¸¹¾Æ * ¸Þ𮠾]º°¡ ¸¹°í, ¹ÝºÀûÎ ºÎÐÀÌ Àû¸ç, µ¥ÀÌÅÍ·® ¸¹¾Æ¼- ¸Þ𮠴뿪ÆøÀÇ ¿µÇâÀ» ¹ÞÀ½ * Å° º¸°£À» À§Çؼ- ´ëºÎÐ ¿¬¼ÓµÈ µÎ°³ÀÇ µ¥ÀÌÅ͸¦ Àоîß ÇÔ * ÄõÅʹϾðÀÇ Æ¯¼ºÀ» ÀÌ¿ë - x, ,y z ´ -1-¼¡¿ +1 »Àª°Ìç üÁ¡° - x, ,y ,z w ¡¿ Î𵸠¦¸ö¼½À µØÇëà üÀ¸È к¼ -ȯº ½Àø¾ (w ÇÀª° ¦¸§Àü¹ 0 -¼¡¿ 1»çÀÌ·Î ¸µå´Â °Íµ °¡´É) - °ªÀÇ ¹üÀ§°¡ Á¦Çѵ¹·Î ÃæºÐÇÑ À¯È¿ ÀÚ¸®¼ö¦ È®º¸Çؼ- Fixed Point ·Î º¯È °¡´É * x, y, z, w ¸¦ °¢ 2 byte fixed point ·Î º¯ÈÇÒ °æ¿ì ¸Þ𮦠Àý¹Ý¸ Â÷Áö 23
  • 24. Áú¹® question 24