|
@ 2004-11-23 @
1 �������� ���� ##.PPU(�������� �������� ����) ; CPU�� �������� ������ ������ ������ ���� ������ �������� ��������
/ ���� ������������ ���� ���� = CPU + GPU + PPU
#.GPU (Graphics Processing Unit)���������������� CPU������ ���������� �������� �������� ���������� ������ ���� ������, ���� �������� ������ 3D������ ���� ������ �������� GPU�� ���� ����������.
GPU���� ������ ��������(NVIDIA)������ 1999���� ��������(GeForce)������ ������ ������ ������ ��������(Graphics Controller: ������������ ��)�� �������� ���� ������ ������. �������� CPU�� ���� ���� ���������� ������(Polygon: 3D �������� �������� ����)�� ����(Transform) �� ����(Lighting)������ �������� ����, ������ ����������(Hardware) T&L���� ������ ������. ���� �������� �������� ������ ������������ ������ ���� ���������� ������ ���� ���������� GPU���� ������ ���� ������. ������ �������� ���� �� 1���� ���� 2000��, ATi(������ AMD)������ ��������(Radeon)�������� GPU�� �������� ������ ������ ������ ������ ����.
#.���� > Havok - ���� ������ CPU���� ���� ������ ����
![]()
���� �������� ������ ���� ����(����) ������ ������ ��, ���� ���������� ����
#.NVIDIA > (AGEIA) PhysX - ���� ������ �������������� ���� ������ ����--> ���� ����, ���� ������ ���� ������ ������ ������ ���� ���� 2 ���������� ������ #
2.1 Euler's Method #
2.2 Hook's law #
2.3 Verlet Intergrator #
-2) ������ R(t-��t) = R(t) - V(t)*��t �� ����
-3) �������� ������ ������ 2~3�� ������ ������ ���� ���������� �������� �� ����. 3 Chaos #
4 Jump �������� #
const float JumpGHIGHTRAVITY 1800.0f
const float SAFEHEIGHT = 2.0f;
const float STARTJUMP = 100.0f;
static float fUp = 0.0f;
// ���� ����
if( !������ && ���� ������������ ��������? )
{
m_bJumpstart = true;
m_bJump = true;
fUp = STARTJUMP;
m_fGravity = 0.0f;
}
if( m_bJump ) // ���� ����
{
m_fGravity += (JumpGHIGHTRAVITY * (fDelta*fDelta)*0.5f );
fUp -= m_fGravity;
if( fUp < 0.0f )
{
m_fGravity = 0.0f;
m_bJump = false;
}
else
{
oldTrans.z += fUp;
}
}
else // ���� ����
{
if( (oldTrans.z - kNewTrans.z) > SAFEHEIGHT )
{
m_fGravity += (JumpGHIGHTRAVITY * (fDelta*fDelta)*0.5f );
oldTrans.z -= m_fGravity;
}
else
{
oldTrans = kNewTrans;
m_fGravity = 0.0f;
m_bJumpstart = false;
}
}
class className
{
public:
void StartJump();
private:
Point3 m_vSavePosition;
bool m_bJump02; // ���� �������� ������ �������� ���� ���� �������� ����
bool m_bJumpstart; // ������ �� �� ���� ���� ������ ����
float m_fGravity;
float m_fHightPos;
float m_fJumpStartTime;
float m_fJumpTime;
float m_fJumpTimeMAX;
}
-----------------------------------------------------------------------------------
const float DEF_JumpGHIGHTRAVITY = 1600.0f;
const float DEF_JumpRAD = PI * 0.5; // 90��
const float DEF_JumpMAX = 12.0f; // jump�� ���� ������ ����
void className::StartJump()
{
if( m_bJumpstart == true )
return;
CPlayer * pkPlayer = GetPlayer();
_TKASSERT( pkPlayer );
m_pSavePosition = pkPlayer->GetWorldTranslate();
ControllerSequence* pkSequence = pkPlayer->GetSequence(Animation_jump);
m_fJumpTimeMAX = pkSequence->GetLength() * 1.1f;
m_fJumpTime = m_fJumpTimeMAX * 0.5f;
m_fJumpStartTime = GetCurTime();
m_bJumpstart = true;
m_bJump02 = true;
}
bool className::UpDate()
{
...
// ���� �� ���� ���� - Sin������ ������ ���� �� �������� ���� �������� ����
//=========================================================================================
float fjumptime = GetCurTime() - m_fJumpStartTime;
if( m_bJump02 ) // ������ ���� ����
{
float fjumpRAD = (fjumptime/m_fJumpTime) * DEF_JumpRAD;
if( fjumptime < m_fJumpTime ) // ���� ��
{
m_fHightPos = Sin(fjumpRAD) * DEF_JumpMAX;
m_fHightPos += m_vSavePosition.z;
}
else // ���� ��������
{
m_fHightPos = m_vSavePosition.z + DEF_JumpMAX;
m_bJump02 = false;
}
}
else //������ ������ ����
{
if((oldTrans.z - kNewTrans.z) < 2.0f)
{
m_fHightPos = kNewTrans.z;
oldTrans = kNewTrans;
}
if(m_fHightPos > kNewTrans.z)
{
m_fGravity += (DEF_JumpGHIGHTRAVITY * ((fDelta*fDelta)*0.5));
m_fHightPos -= m_fGravity;
}
else // if(m_fHightPos <= kNewTrans.z)
{
m_fHightPos = kNewTrans.z;
m_fGravity = 0.0f;
m_bJumpstart = false;
m_bJump02 = false;
}
}
oldTrans.z = m_fHightPos;
}
|
차가운 차와 차가운 밥은 참을 수 있지만 차가운 이야기는 견디지 못한다(중국속담) 바람06_2016 나무_Format 책갈피_부자들의_생각법 UserPreferences |