ij¸¯ÅÍ ±â¿ï±â

4Á·ÀÇ »çÀÚ³ª È£¶ûÀÌ°¡ °æ»çÁø °÷À» À̵¿ ÇÒ ¶§´Â °æ»ç¸é¿¡ µû¶ó ¸ðµ¨À» ȸÀü ½ÃŲ´Ù.

À§ÀÇ ±×¸²À» º¸¸é ¹Ú½º°¡ ¾ð´öÀÇ °æ»ç¿¡ µû¶ó ±â¿ï¾îÁ® ÀÖ´Ù..
´ÙÀÌ·ºÆ®X¸¦ ¿Þ¼Õ ÁÂÇ¥°è°¡ ¾Æ´Ï¶ó ¿À¸¥¼Õ ÁÂÇ¥°è·Î »ùÇÃÀ» ¸¸µé¾ú´Ù.

D3DXMatrixLookAtRH, D3DXMatrixPerspectiveFovRH »ç¿ëÀ¸·Î ¿À¸¥¼Õ Çà·ÄÀ» »ç¿ëÇØ¾ß µÇ´Â°É·Î ¾ËÁö¸¸
ÃÖÁ¾ÀûÀ¸·Î D3DTS_WORLD¿¡ ³Ñ°ÜÁÖ´Â °ªÀº ¿Þ¼Õ Çà·Ä¿¡ ¸ÂÃá´Ù.

±¸Çö °úÁ¤Àº ´ÙÀ½°ú °°´Ù.

1. ÁöÇü ³ë¸Ö º¤ÅÍ ±¸Çϱâ
2. ÁöÇü ³ë¸Ö º¤ÅÍ¿Í Up º¤ÅÍÀÇ ¿ÜÀûÀ¸·Î ȸÀüÃà º¤ÅÍ ±¸Çϱâ
3. ÁöÇü ³ë¸Ö º¤ÅÍ¿Í Up º¤ÅÍÀÇ ³»ÀûÀ¸·Î ³»Àû ȸÀü°ª ±¸Çϱâ
4. ȸÀü°ªÀ» ȸÀü°¢À¸·Î º¯È¯
5. ȸÀüÃàÀ¸·Î ȸÀü°¢ ¸¸Å­ Çà·Ä ±¸Çϱâ

void GetTerrainSlope(D3DXMATRIX& out, TerrainChunk* pChunk, float x, float y, float z )

{

    //1. ÁöÇü ³ë¸Ö º¤ÅÍ ±¸Çϱâ

    const MyVector3& vec = pChunk->GetNormal( x, y );

 

    //2. ÁöÇü ³ë¸Ö º¤ÅÍ¿Í Up º¤ÅÍÀÇ ¿ÜÀûÀ¸·Î ȸÀüÃà º¤ÅÍ ±¸Çϱâ

    MyVector3 rAxis, up = MyVector3(0, 0, 1);

    rAxis.Cross(vec, up);

 

    //3. ÁöÇü ³ë¸Ö º¤ÅÍ¿Í Up º¤ÅÍÀÇ ³»ÀûÀ¸·Î ³»Àû ȸÀü°ª ±¸Çϱâ

    float dot = vec*up;

 

    //4. ȸÀü°ªÀ» ȸÀü°¢À¸·Î º¯È¯

    float angle = acos(dot);

 

    //5. ȸÀüÃàÀ¸·Î ȸÀü°¢ ¸¸Å­ Çà·Ä ±¸Çϱâ

    LH_RotationMatrix(out, rAxis, angle);

}

´ÙÀÌ·ºÆ®X¸¦ ¿À¸¥¼Õ ÁÂÇ¥°è·Î ±¸Çö ÇÏ¿´±â ¶§¹®¿¡ ȸÀüÃàÀ» Áß½ÉÀ¸·Î ȸÀüÇÏ´Â Çà·Ä ÇÔ¼ö LH_RotationMatrix()¸¦ º°µµ·Î ¸¸µé¾ú´Ù.

GetTerrainSlope( ) ÇÔ¼ö¸¦ ºÐ¼®Çϸé Å©°Ô ¾î·Á¿òÀº ¾øÀ» °ÍÀÌ´Ù.

¹Ú½º ¸ðµ¨ÀÇ À̵¿Àº ¸¶¿ì½ºÀÇ ÈÙÀ» µ¹¸®¸é µÈ´Ù.

¼Ò½º: character_slope.zip