Sign in to follow this  
lyzerk

Strategy Camera

Recommended Posts

lyzerk    120
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
lyzerk    120
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
lyzerk    120
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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this