hkpKeyFrameUtility::applyHardKeyFrame·Î ¼Óµµ ¼³Á¤

ÀÌÀü Àå¿¡¼­ Ãâ¹ßÁö ¸ñÀûÁö·Î ¿òÁ÷ÀÌ´Â ¾Ö´Ï¸ÞÀ̼ÇÀÌ ÀÖÀ» ¶§, ¿òÁ÷ÀÌ´Â °Å¸®¸¦ ¼Óµµ °è»êÀ» Á÷Á¢ ÇÏ¿³´Ù.

ÇϺ¹¿¡¼­´Â KeyFrame¿¡ »ç¿ëÇϱâ À§ÇÑ À¯Æ¿¸®Æ¼ ÇÔ¼ö°¡ Á¦°ø µÈ´Ù.

hkpKeyFrameUtility::applyHardKeyFrame( )¸¦ ÀÌ¿ëÇÏ¸é ¹ø°Å·Î¿î ½Ä¾øÀÌ hkpRigidBodyÀÇ ¼Óµµ¸¦ ¼³Á¤ ÇÒ ¼ö ÀÖ´Ù.

void  NewMoveKeyFrameBox()

{

    static  float  height = 0;

    static   bool  bPlus = true;

    float    step = 0.25f;   

 

    hkVector4 newPos;

    newPos = g_keyFrameRigidBox->getPosition();

 

    if( height >= 5 )

        bPlus = false;

    if( height <= -5 )

        bPlus = true;

 

    if( bPlus )

        height += step;

    else

        height -= step;

 

    newPos(1) = height;

 

    //hkpKeyFrameUtility::applyHardKeyFrame( )¸¦ ÀÌ¿ëÇØ rigidBody ¼Óµµ ¼³Á¤

    hkQuaternion rotation;

    rotation.setIdentity();

    hkVector4 nextPos = newPos;

    hkpKeyFrameUtility::applyHardKeyFrame( nextPos, g_keyFrameRigidBox->getRotation(), 60.0f, g_keyFrameRigidBox );

}

hkpKeyFrameUtility::applyHardKeyFrame(  )¿¡¼­ ù ¹ø° ÀÎÀÚ´Â ´ÙÀ½ ¸ñÀûÁöÀÇ À§Ä¡, µÎ ¹ø° ÀÎÀÚ´Â ´ÙÀ½ ¸ñÀûÁöÀÇ È¸Àü°ªÀÌ´Ù. ¼Â¹ø° ÀÎÀÚ´Â µ¨Å¸ ŸÀÓÀÇ ¿ª¼öÀÌ´Ù. ³× ¹ø° ÀÎÀÚ´Â À̵¿ÇÒ hkpRigidBodyÀÌ´Ù.

< hkpRigidBody »ç¶óÁö´Â Çö»ó >

hkpRigidBody°¡ Á¦´ë·Î ÀͽºÆ÷Æ® µÇ¾ú´Âµ¥µµ ºÒ±¸ÇÏ°í ºñÁê¾ó µð¹ö°Å·Î º¸¸é ¿ùµå°¡ Ãß°¡ µÇÁö ¾Ê´Â °æ¿ì°¡ ÀÖ´Ù.

ºñÁê¾ó µð¹ö°Å·Î ¾Èº¸ÀÌ´Â °æ¿ì´Â hkpWorld ¿ùµå »ý¼º½Ã hkpWorldCinfo ¸É¹öÀÇ m_broadPhaseBorderBehaviourÀÇ °ªÀÌ BROADPHASE_BORDER_REMOVE_ENTITY °ªÀ¸·Î ¼³Á¤ µÇ¾î ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ÇöÀçÀ§Ä¡¿Í ¸¹ÀÌ ¶³¾îÁ® ÀÖ´Â °æ¿ì, setBroadPhaseWorldSize(  )¸¦ ¹þ¾î ³ª°Å³ª Áß½ÉÁ¡°ú ¸¹ÀÌ ¶³¾îÁ® ÀÖÀ¸¸é ÀÚµ¿À¸·Î ÇϺ¹ ¿£ÅÍƼ¸¦ Á¦°Å ÇØ ¹ö¸°´Ù.

±×·¡¼­ ¿ùµå »ý¼º½Ã ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

hkpWorldCinfo info;
info.m_broadPhaseBorderBehaviour = info.BROADPHASE_BORDER_DO_NOTHING;

< hkpRigidBody°¡ ¿òÁ÷ÀÌÁö ¾Ê´Â °æ¿ì >

ÀÌ °æ¿ì´Â ´Ù¾çÇÏÁö¸¸, ¿©±â¼­ ¿¹¸¦ µå´Â°Íµµ ÇϳªÀÇ ¿¹ÀÏ °ÍÀÌ´Ù.
hkpWorldCinfoÀÇ setBroadPhaseWorldSize( )¿¡¼­ ¼³Á¤ÇÑ ¿ùµå Å©±âÀÇ ¹üÀ§¸¦ ³Ñ¾î°¡´Â °æ¿ì, rigidBody°¡ ¿òÁ÷ÀÌÁö ¾ÊÀ¸¸é¼­ ¼Óµµ¸¦ ¼³Á¤ ÇÒ ¼ö ¾ø´Ù´Â ¿ö´×ÀÌ ¶ã °ÍÀÌ´Ù.

hkpWorldCinfo info;
info.setBroadPhaseWorldSize( 10000.0f );

¿©±â¼­´Â Å×½ºÆ®À̱⠶§¹®¿¡ 10000À̶ó´Â Å« ¹üÀ§¸¦ ÁÖ°í ÀÖ´Ù.

ÇÁ·ÎÁ§Æ® : havok_hkpKeyFrameUtility.zip