blah! not another d3d problem!

Started by
5 comments, last by AlexM 24 years, 6 months ago
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);
Advertisement
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!
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.
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.
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!

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?
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).]

This topic is closed to new replies.

Advertisement