   Do I understand model/object space -- world space (and more)?   (newbie question!)
  I'm pretty sure I understand the world, view, and projection matrices but I'd just like to make sure...3D models are created in a modeling program which can use any set of values they want to.  For example, one person might design a box to be 3 units x 3 units x 3 units.  However, somebody else might design the same box in a different program to be 20 units x 20 units x 20 units.  These models typically have a center value of (0, 0, 0).The object/model space to world space conversion is meant to move the model (translation) and scale it appropriately.  For example, if my game has all boxes at 2 units x 2 units x 2 units, then I would scale the above 3D models differently but they would both end up being 2x2x2.View space is confusing but it's basically a camera that sets up a view of the world and changes vertices (moves them further/closer depending on the location of the "camera").The projection matrix converts the 3D coordinates into 2D coordinates to display on your monitor.  This can typically be orthographic or perspective.  I think I understand what it's doing but doesn't the view matrix kind-of put objects into perspective?  I think I'm a little confused on how the view and projection matrices work together and the differences.Am I correct in my understanding or can somebody correct my mistakes?Thank you so much!   
Quote:The projection matrix converts the 3D coordinates into 2D coordinates to display on your monitor. This can typically be orthographic or perspective. I think I understand what it's doing but doesn't the view matrix kind-of put objects into perspective? I think I'm a little confused on how the view and projection matrices work together and the differences.The result of applying the modelview transform to your vertices is to position and orientate them correctly relative to the camera in 3D. (Note that the modelview transform is in a sense a single operation, as far as the API is concerned there is no need for any concept of "world space". Obviously the concept is very neccessary for the application logic, you want your camera and your objects to move around independently so you treat the two transforms separately.)  The projection matrix defines the size and shape of your viewing frustrum, applying the matrix to a vertex in view space will produce a parameterised position in your frustrum which you can use to find screen coordinates. (Some explanation here: http://www.euclideanspace.com/threed/rendering/opengl/index.htm )I haven't found it that necessary to understand exactly how the projection matrix matrix works, generally you set up your frustrum once and then leave it alone. You need to make sure the size and aspect ratio is appropriate to what your rendering, and you don't want the near clip plane to unnecessarily close. Also you need to know how to invert the projection operation to get a pick ray from a mouse click. Also you need to get at your frustrum in order to do "culling", i.e to avoid sending objects that are outside the field of view down the rendering pipeline.;Quote:Original post by sofakng3D models are created in a modeling program which can use any set of values they want to.  For example, one person might design a box to be 3 units x 3 units x 3 units.  However, somebody else might design the same box in a different program to be 20 units x 20 units x 20 units.  These models typically have a center value of (0, 0, 0).In practical applications people will agree on a set of units so there is no scaling involved. Object space is more important in that the vertices of the object are based around a notion of its centre, at 0,0,0. (This relates to my reply to you in the other thread.)Quote:The object/model space to world space conversion is meant to move the model (translation) and scale it appropriately.  For example, if my game has all boxes at 2 units x 2 units x 2 units, then I would scale the above 3D models differently but they would both end up being 2x2x2.Yes, except there's rarely any scaling taking place, and often there is a rotation taking place. Rotate to the correct orientation first, then translate to the correct position, and this can be done with one matrix.Quote:View space is confusing but it's basically a camera that sets up a view of the world and changes vertices (moves them further/closer depending on the location of the "camera").It's just a coordinate system that places the camera at a predictable place (eg. 0,0,0) and the middle of the screen at another predictable place (eg. 0,0,any value of Z) so that reasoning can be done about graphics relative to the view (eg. ignoring all models with Z<0 which are behind the scene).Quote:The projection matrix converts the 3D coordinates into 2D coordinates to display on your monitor.  This can typically be orthographic or perspective.  I think I understand what it's doing but doesn't the view matrix kind-of put objects into perspective?The view matrix puts a camera in the correct position and points it in the right direction. The projection matrix flattens that 3D view down into a set of 2D coordinates suitable for putting on your screen.   