• Advertisement
Sign in to follow this  

Strategy Camera

This topic is 1965 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, again me.

I'm trying to do strategy camera. here my codes;

terrain world view;
[source lang="cpp"] D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation( &matWorld, 0, 0, 0);
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );[/source]

and camera view;

[source lang="cpp"] D3DXVECTOR3 vEyePt( 0, 0, 100 );
D3DXVECTOR3 vLookatPt(0, 0 , 0);
D3DXVECTOR3 vUpVec( 0, 1, 0); //up
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
[/source]

my problem is that i tried all parametres in evept, lookatpt (upVec is for angle i think.) and i cant found right vector.

how can i do right and up vector with mouse ? like any strategy game ?

Thanks.

edit:

i tried camera world view like that before

[source lang="cpp"] D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation( &matWorld, camera.camera.x, camera.camera.y, camera.camera.z);
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

D3DXVECTOR3 vEyePt( 0, 0, 100 );
D3DXVECTOR3 vLookatPt(0, 0 , 0);
D3DXVECTOR3 vUpVec( 0, 1, 0); //up
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );

pd3dDevice->SetTransform( D3DTS_VIEW, &matView );[/source]

but its doing nothing D3DTS_VIEW just like position of view i can't move it :S anybody have idea ? Edited by lyzerk

Share this post


Link to post
Share on other sites
Advertisement
okey, i did something like up, down, left, right, zoomout and zoomin for terrain like this code;
view matrix here;
[source lang="cpp"] D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation( &matWorld, camera.camera.x, camera.camera.y, camera.camera.z);
pd3dDevice->SetTransform( D3DTS_VIEW, &matWorld );[/source]
others;
[source lang="cpp"]
void CALLBACK OnKeyboard( UINT nChar, bool bKeyDown, bool bAltDown, void* pUserContext )
{
if(nChar == 'a' || nChar == 'A')
{
camera.camera += camera.moveLeft;
}
else if(nChar == 'd' || nChar == 'D')
{
camera.camera -= camera.moveLeft;
}
else if(nChar == 'q' || nChar == 'Q')
{
camera.camera += camera.moveUp;
}
else if(nChar == 'e' || nChar == 'E')
{
camera.camera -= camera.moveUp;
}
else if(nChar == 'w' || nChar == 'W')
{
camera.camera += camera.moveFoward;
}
else if(nChar == 's' || nChar == 'S')
{
camera.camera -= camera.moveFoward;
}
}
[/source]
[source lang="cpp"] camera.moveFoward = D3DXVECTOR3( 0 , 1 , 0 );
camera.moveUp = D3DXVECTOR3( 0 , 0 , 1 );
camera.moveLeft = D3DXVECTOR3( 1 , 0 , 0 );[/source]
i tried for angle of view with D3DXMatrixRotation-x-y-z but its not worked. i want to do really one camera like strategy games

Share this post


Link to post
Share on other sites
ok guys i fixed it, anyway thanks.

here is answer;
//matWorld is matrix of world view
//matView is D3DXMatrixLookAtRH
D3DXMATRIXA16 result = matWorld * matView;
pd3dDevice->SetTransform( D3DTS_VIEW, &result );

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement