Clip plane problem

Started by
0 comments, last by angelmu88 12 years, 2 months ago
Hi!
I'm currently working on creating a reflection map for the water, and I'm using a clip plane so that I can only draw into the texture the geometry above the water.
Here's is my code:

D3DXPLANE refractionClipPlane;
D3DXVECTOR3 point(0.0f, 6.0f, 0.0f);
D3DXVECTOR3 normal(0.0f, 1.0f, 0.0f);
D3DXPlaneFromPointNormal(&refractionClipPlane,&point,&normal);
D3DXMATRIX inver;
D3DXMatrixInverse(&inver,0,&(mView*mProj));
D3DXMATRIX trans;
D3DXMatrixTranspose(&trans,&inver);
D3DXPLANE outRefraction;
D3DXPlaneTransform(&outRefraction,&refractionClipPlane,&trans);
refractionMap->beginScene(); //refraction map is a renderTarget
gd3dDevice->Clear(0, 0, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0);
gd3dDevice->SetClipPlane(0, outRefraction);
gd3dDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, D3DCLIPPLANE0);
drawReflectedByWater(); //draw geometry
gd3dDevice->SetRenderState(D3DRS_CLIPPLANEENABLE,0);
refractionMap->endScene(); //render target ends


I have this problem, if I only move the camera's position DirectX draws the scene perfectly:

http://imageshack.us...neproblem1.jpg/




But if I change the camera look vector, for instance, if I aim the camera to the sky the clip plane moves along with te camera too:
[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

http://imageshack.us/photo/my-images/696/clipplaneproblem2.jpg/

[/font]

As you can see from my code, I've taken into account that if you are not using the fixed pipeline the plane has to be in clipspace coordinates.
Anyone knows what can I do in order to avoid this problem (plane moving along with the camera)?

My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/
Advertisement

Hi!
I'm currently working on creating a reflection map for the water, and I'm using a clip plane so that I can only draw into the texture the geometry above the water.
Here's is my code:

D3DXPLANE refractionClipPlane;
D3DXVECTOR3 point(0.0f, 6.0f, 0.0f);
D3DXVECTOR3 normal(0.0f, 1.0f, 0.0f);
D3DXPlaneFromPointNormal(&refractionClipPlane,&point,&normal);
D3DXMATRIX inver;
D3DXMatrixInverse(&inver,0,&(mView*mProj));
D3DXMATRIX trans;
D3DXMatrixTranspose(&trans,&inver);
D3DXPLANE outRefraction;
D3DXPlaneTransform(&outRefraction,&refractionClipPlane,&trans);
refractionMap->beginScene(); //refraction map is a renderTarget
gd3dDevice->Clear(0, 0, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0);
gd3dDevice->SetClipPlane(0, outRefraction);
gd3dDevice->SetRenderState(D3DRS_CLIPPLANEENABLE, D3DCLIPPLANE0);
drawReflectedByWater(); //draw geometry
gd3dDevice->SetRenderState(D3DRS_CLIPPLANEENABLE,0);
refractionMap->endScene(); //render target ends


I have this problem, if I only move the camera's position DirectX draws the scene perfectly:

http://imageshack.us...neproblem1.jpg/




But if I change the camera look vector, for instance, if I aim the camera to the sky the clip plane moves along with te camera too:

[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

http://imageshack.us...neproblem2.jpg/[/font]




As you can see from my code, I've taken into account that if you are not using the fixed pipeline the plane has to be in clipspace coordinates.
Anyone knows what can I do in order to avoid this problem (plane moving along with the camera)?


Ok, I solved it, it has to do with the graphic card, I had to reset de clipplane, here is the solution:
http://www.gamedev.net/topic/523062-setclipplane-and-nvidia-drivers/

Thanks!
My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/

This topic is closed to new replies.

Advertisement