Forum
Contact





DirectX using C#
DirectX using C++
DirectX using Visual Basic



Latest Forum posts

 Texture on a 3d Object
  Posted by: ToastbrotX
  When: 10/09/2010 at 10:23:08

 Unable to Build
  Posted by: Rich_Zap
  When: 09/09/2010 at 15:39:33

 HLSL calculating normals
  Posted by: Rich_Zap
  When: 09/09/2010 at 15:34:56

 Texture on a 3d Object
  Posted by: ToastbrotX
  When: 09/09/2010 at 11:14:19

 DRIVER ERROR XBOX 360
  Posted by: Anonymous
  When: 09/09/2010 at 01:12:47

 Reflection problem in corners ...
  Posted by: Anonymous
  When: 08/09/2010 at 21:03:35

 Texture on a 3d Object
  Posted by: radulph
  When: 08/09/2010 at 17:34:01

 InvalidDataException???
  Posted by: Anonymous
  When: 08/09/2010 at 09:10:36

 Unable to Build
  Posted by: Anonymous
  When: 08/09/2010 at 07:49:36

 Suggestion to change a few lines
  Posted by: Insomnica
  When: 06/09/2010 at 14:37:05

 Collision with series 1
  Posted by: radulph
  When: 05/09/2010 at 13:33:14

 HLSL calculating normals
  Posted by: miroslavign
  When: 04/09/2010 at 17:26:26

 Collision with series 1
  Posted by: ToastbrotX
  When: 04/09/2010 at 16:52:02

 HLSL calculating normals
  Posted by: Rich_Zap
  When: 04/09/2010 at 15:00:20

 Collision with series 1
  Posted by: ToastbrotX
  When: 04/09/2010 at 12:28:41

 HLSL calculating normals
  Posted by: miroslavign
  When: 04/09/2010 at 08:46:31

 Walk along a wall
  Posted by: Anonymous
  When: 03/09/2010 at 10:28:02

 model problems
  Posted by: muffinman
  When: 03/09/2010 at 06:47:32

 Vertices problem
  Posted by: Anonymous
  When: 03/09/2010 at 05:48:35

 OcTree Question
  Posted by: Zorzomezz
  When: 03/09/2010 at 04:07:03




Topic: Efficient reflection matrix



  
Goto parent category
  
Create a new user account


   Efficient reflection matrix
 Poster : lordikon
 Posts: 57
 Country : USA
 City: Denver

  
Posted by lordikon on 30/09/2007 at 00:46:34
Riemer,

   Been playing around with your water tutorial, and I wanted to let you know I found a decent way of creating the reflectionView matrix. Not sure if it is more efficient or not, I'll let you be the judge, just thought I'd post it.

Vector3 reflectPos = Cam.GetPosition();
reflectPos.Z = Elevation - (reflectPos.Z - Elevation);      // Move camera under the water

Vector3 reflectForward = Cam.ForwardVector;
reflectForward.Z *= -1;

ReflectionViewMatrix = Matrix.CreateLookAt(reflectPos, reflectPos + reflectForward, Cam.UpVector);
 Poster : riemer
 Posts: 1388
 Country : Belgium
 City: Antwerp

  
Posted by riemer on 30/09/2007 at 05:33:23
Hmmm not sure if this will always work :)
I'll just give some thoughts on this, dont take them as comments as I think people playing around with the code is the best appreciation of a tutorial.

This line

reflectPos.Z = Elevation - (reflectPos.Z - Elevation);      

is the same as

reflectPos.Z = -reflectPos.Z + 2*Elevation;      

which is what I use. The way you calculate the reflectForward vector is not 100% correct, as it does not take the height of the water into account. Using your code , you should do something like

Vector3 reflectForward = Cam.ForwardVector;
reflectForward.Z = Elevation - (reflectForward.Z - Elevation);

Try to increase your Elevation value, you should see you're getting strange results.

As you can see in the image on my page, both cameras have a different Up vector. If you specify Cam.UpVector as Up vector for your underwater cam, XNA projects this axis for you, which will be correct in 99% of the cases (probably even more ;), in my text I've  calculated the exact vector, based on cross product between forward and side vector.

anyhow, you showed you understand the principle of reflection, and that's the main goal of that page ;)
 Poster : Anonymous
 Posts:
 Country :
 City:

  
Posted by Anonymous on 14/02/2009 at 09:11:45
I think that this image could be useful to some people.




  
Post a new reply
 





Google
 
Web www.riemers.net
If you appreciate the amount of time I spend creating and updating
these pages, feel free to donate -- any amount is welcome !
- Website design & DirectX code : Riemer Grootjans -
©2006 Riemer Grootjans


News
Home
Forum
XNA 2.0 Recipes Book (8)
XNA 3.0 Recipes Book (8)
Downloads
Extra Reading (3)
Matrices: geometrical
Matrix Mathematics
Homogenous matrices
Community Projects (1)
Tutorials (160)
XNA 3.0 using C# (89)
DirectX using C# (54)
Series 1:Terrain (14)
Opening a window
Linking to the Device
Drawing a triangle
Camera
Rotation - Translation
Indices
Terrain creation
Terrain from file
DirectInput
Importing bmp files
Colored vertices
DirectX Light basics
Mesh creation
Mesh lighting
Series 2: Flightsim (19)
Series 3: HLSL (19)
Short Tuts (2)
Resizing problem
Checking Device caps
DirectX using C++ (15)
DirectX using VB (2)