Archived

This topic is now archived and is closed to further replies.

blah! not another d3d problem!

This topic is 6661 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

Guest Anonymous Poster
HRESULT
SetViewMatrix(
D3DMATRIX& mat, // matrix to receive result
D3DVECTOR& vFrom, // initial point
D3DVECTOR& vAt, // point to look at
D3DVECTOR& vWorldUp ); // which way is up? D3DVECTOR(0,1,0);

Share this post


Link to post
Share on other sites
well, it worked, but this hurts my do it all by yourself feelings, you know. any ideas on why the above didn't work out?
Thanks for your help!

Share this post


Link to post
Share on other sites
SetViewMatrix sucks ass. it is better to just have a camera location, and a direction, and then setup the view matrix by translating and rotating in the oposite direction. The reason that the view matrix seemed to do the same thing as the world matrix is because it is the same thing. D3D just seperates them for your organization. it takes the vertex you give it, multiplies it by the world matrix, then the view, and then the projection. therefore, they only do different things if you set the up differently. Making the world viewed from some location and rotation, is the same thing as rotating everything in the world in the opposite location, and rotation. Tell me if this makes sense, cause I don't know if I explained it well.

Share this post


Link to post
Share on other sites
yes that makes absolute sense, the view trans are done on the new vertices produced by the world trans, so there shouldn't be any problems, the rotation in view trans should be around the camera y-axis. but my problem is that is does so around the center of the model, like world trans. sure they are the same matrices, but one is done after the other takes effect, right? the setviewmatrix does the same thing that i want to, but obviously it got something figured i don't. later.

Share this post


Link to post
Share on other sites
nevermind, i figured why it didn't work. i set the translation and rotation of the matrix directly, without concatenating them...

Thanks for your help people!

Share this post


Link to post
Share on other sites
i'm doing view trans in d3d7, and it is having the same effect as the world trans. well it ain't meant to! what's wrong?
matView = mat; //mat is identity
matView._43 = 10.0f;
matView._11 = COS(xzangle);
matView._13 = -SIN(xzangle);
matView._31 = SIN(xzangle);
matView._33 = COS(xzangle);
lpd3ddev->SetTransform(D3DTRANSFORMSTATE_VIEW, &matView )
i just have one triangle in the list and it starts ahead of the cam, along z-axis, then it's supposed to whirl around me, but it just sits there and spins around the y-ax, like in world trans. HELP!
and also, i had to retype this 3 times, because sometimes when i hit the delete key it kicks me back to the messboard. any ideas?

Share this post


Link to post
Share on other sites
now another problem, i'm rotating the view vertically and hor, 360 360:
//vFroms is const, vUps is 0,1,0
//vAt is the look-at point for SetViewMat
vAt.x = (float)(SIN(xzangle)+cam.x);
vAt.y = (float)(SIN(verangle)+cam.y);
vAt.z = (float)(COS(xzangle)+cam.z);
D3DUtil_SetViewMatrix(matViews,vFroms,vAts,vUps);
but this results in the triangle bouncing up and down when i look up past 90 (verangle), and so on, as if z clipping is off, but it is on. horizontally it works fine. i can't figure it out...

[This message has been edited by AlexM (edited October 23, 1999).]

Share this post


Link to post
Share on other sites