Jump to content
  • Advertisement
Sign in to follow this  
Racky1275

Trouble with my scene in XNA. [Solved - XNA uses RH coords!]

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

Ok, I've been using Direct3D for quite some time now, but only with 2D pretransformed vectors. Now that I've finally decided to give 3D a shot I find myself failing at the most basic of tasks! [depressed] My objective very simple: Draw a textured quad on the X/Z plane, with a camera looking down at it from one edge. Since I'm only playing around, I thought I'd try out XNA. Here's the vertex and camera definitions I'm using: (drawn as an indexed triangle list)
vertexGrid[0].Position = new Vector3(-512.0f, 0.0f, +512.0f);
vertexGrid[1].Position = new Vector3(+512.0f, 0.0f, +512.0f);
vertexGrid[2].Position = new Vector3(-512.0f, 0.0f, -512.0f);
vertexGrid[3].Position = new Vector3(+512.0f, 0.0f, -512.0f);

vertexGrid[0].TextureCoordinate = new Vector2(0.0f, 0.0f);
vertexGrid[1].TextureCoordinate = new Vector2(1.0f, 0.0f);
vertexGrid[2].TextureCoordinate = new Vector2(0.0f, 1.0f);
vertexGrid[3].TextureCoordinate = new Vector2(1.0f, 1.0f);

indexGrid[0] = 0;
indexGrid[1] = 1;
indexGrid[2] = 3;
indexGrid[3] = 3;
indexGrid[4] = 2;
indexGrid[5] = 0;

mWorld = Matrix.Identity;
mView  = Matrix.CreateLookAt(new Vector3(0.0f, 256.0f, -512.0f), Vector3.Zero, Vector3.Up);
mProj  = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, 1280.0f / 720.0f, 1.0f, 1024.0f);


Unfortunately to obtain the following image I had to turn culling off. It clearly shows that my quad is facing away from the camera... Screen capture from XNA As far as I can tell I'm defining the two triangles of my quad in clockwise order, so what am I missing? I feel such a noob! [rolleyes] [Edited by - Racky1275 on April 4, 2008 3:59:28 AM]

Share this post


Link to post
Share on other sites
Advertisement
XNA, if I recall, switched to a right-handed coordinate system and by default uses counter-clockwise winding for front faces.

Share this post


Link to post
Share on other sites
Quote:
Original post by smitty1276
XNA, if I recall, switched to a right-handed coordinate system and by default uses counter-clockwise winding for front faces.


Yeah, they did. Sure makes for some annoying bugs when I'm porting over my D3D code.

Share this post


Link to post
Share on other sites

AAAAARRRRGH! OK, April 1st has passed so I'm going to assume that you're not joking. I must admit to not actually 'reading' the documentation, so I guess it's my fault for assuming...

RTFM [smile]

Share this post


Link to post
Share on other sites

From the XNA Migration Guide
Quote:
Nearly all of the basic math types familiar to the native D3DX libraries and MDX have been replicated in the XNA Framework. There have been numerous additions to the XNA Framework math types and methods to reduce the amount of boilerplate math code that you have to rewrite for each new game. The biggest breaking change has been the removal of left-handed coordinate-system math functions in favor of unifying on a right-handed coordinate system. This simplifies the Math API and omits functionality that causes a large amount of confusion.


I personally would have liked to stick with the LH coordinate system to maintain parity with my DX3D code, but RH is the accepted mathematical standard. Gotta move with the times I guess. [wink]

Share this post


Link to post
Share on other sites
How does changing to a RH system make the math API any more simple than sticking with only the LH system.

Share this post


Link to post
Share on other sites
It doesn't make the maths any simpler, it just makes it more 'standard'. If you are learning 3D from a math text book, you'll be using RH coordinates.

Wiki Quote (sorry) - Cartesian coordinate system
Quote:
The standard orientation, where the xy-plane is horizontal and the z-axis points up (and the x- and the y-axis form a positively oriented two-dimensional coordinate system in the xy-plane if observed from above the xy-plane) is called right-handed or positive.

There's also a fair bit if discussion about it here

From my point of view I wish they hadn't made the change, but I can see why they did it. Of course the best solution would be to travel back in time and bash some people over the head with a maths book. [smile]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!