lookat transformation

Started by
2 comments, last by caesar4 19 years, 5 months ago
for my 3d project, i have 2 render windows, in one i have the main camera, in the other i want to see the frustum of the main camera the frustum is a pyramid calculated from the FOV, and near&far planes and the eye is at <0,0,0> looking into the z-axis (negative or positive, doesnt matter) the camera has 3 components, a position, a look at point, and an up vector my question is: how to construct a transfromation matrix for the renderable view frustum? i dont need any1 telling me this:
Quote: zaxis = normal(At - Eye) xaxis = normal(cross(Up, zaxis)) yaxis = cross(zaxis, xaxis) xaxis.x yaxis.x zaxis.x 0 xaxis.y yaxis.y zaxis.y 0 xaxis.z yaxis.z zaxis.z 0 -dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
because that doesnt do wut i need
Cartman's definition of sexual harrasement:"When you are trying to have intercourse with a lady friend, and some other guy comes up and tickles your balls from behind"(watch South Park, it rocks)
Advertisement
The DirectX documentation has some information on Projection Transformations
not wut i meant,

i want to transform a couple lines representing the view frustum in world space, not any later stage in the transform pipe
Cartman's definition of sexual harrasement:"When you are trying to have intercourse with a lady friend, and some other guy comes up and tickles your balls from behind"(watch South Park, it rocks)
woops, i had a typo

heres my finishd code, to save someone the headache ive been havin

	int CCamera::DrawFrustum(){		if(!this->ppDev)			return 0;		IDirect3DDevice9 *dev = (IDirect3DDevice9 *)this->ppDev->GetDevice();		if(!dev)			return 0;		CMatrix mat;		CVector dir = this->cfCurrent.vecPosition-this->cfCurrent.vecLookAt;		dir.Normalize();		float cx = sqrtf(dir.z*dir.z+dir.x*dir.x);		float cy = dir.z/cx		float roll = acosf(vecYP.Dot(this->cfCurrent.vecUp));		float elevation = acosf(cx);		float heading = acosf(cy);		if(dir.y > 0.f)			elevation=-elevation;		if(dir.x < 0.f)			heading = -heading;		mat = matIdentity.GetRotateAxisZ(roll);		mat.RotateAxisX(elevation);		mat.RotateAxisY(heading);		mat.Translate(this->cfCurrent.vecPosition.x,this->cfCurrent.vecPosition.y,this->cfCurrent.vecPosition.z);				this->Frustum[8].vecPosition = this->cfCurrent.vecLookAt;		this->Frustum[9].vecPosition = this->cfCurrent.vecPosition;		dev->SetTransform(D3DTS_WORLD,&matIdentity);		dev->SetFVF(this->Frustum->FVF);		dev->DrawPrimitiveUP(D3DPT_LINELIST,1,&this->Frustum[8],sizeof(this->Frustum[0]));				dev->SetTransform(D3DTS_WORLD,&mat);				dev->SetStreamSource(0,this->vbf,0,sizeof(this->Frustum[0]));		dev->SetIndices(this->ibf);		dev->DrawIndexedPrimitive(D3DPT_LINELIST,0,0,8,0,12);		return 1;	}
Cartman's definition of sexual harrasement:"When you are trying to have intercourse with a lady friend, and some other guy comes up and tickles your balls from behind"(watch South Park, it rocks)

This topic is closed to new replies.

Advertisement