Hot answers tagged

33

This is a dimetric projection (a special case of the axonometric projection) with the horizontal axes at tan-1(0.5) ≈ 26.565° (an isomeric projection would have them at 30°, by the way) from the horizontal line. It's commonly called "isometric projection", but it isn't exactly one. EDIT: A simple transformation matrix for this one, assuming the x and y ...


31

Reduce the players sight-range. You can do that by adding an overlay mask on top of the rendered scene. This simulates the reduced sight-radius of the player-characters due to darkness. It forces the player to concentrate on a very small section of the screen giving a feeling of claustrophobia. But keep in mind that it disorients the player, so cut the ...


22

Yes, To name a few: Pannini Mercator Fisheye Miller The Pannini projection, for example, can capture wide fields of view in nice ways. (totally just my opinion) I think implementation details would be beyond the scope of this specific question. EDIT: Thanks for the comment, I did misspell Pannini. And to make this edit worthwhile here are a few more: ...


21

EDIT Disclaimer: For convenience in this answer vectors with w==0 are called vectors and with w==1 are called points. Although as FxIII pointed out, that is not a mathematically correct terminology. However, since the point of the answer is not the terminology, but the need to distinguish both types of vectors, I'll stick to it. For practical reason this ...


21

That's an Oblique Projection. Oblique is a type of parallel projection where the projection "rays" are not perpendicular to the image plane. Usually this is used to show two spatial axes perpendicular & without foreshortening (as though looking directly down the third axis), while the third axis is splayed off at a diagonal. In an orthographic ...


20

Use per-tile lighting to do sight-range reduction. Shadowlands (1992) - 3 light levels: Diablo (1997) - 8 light levels: You can do much more with this dynamic, such as easily having monsters only spawn on dark tiles, have light streaming out of doorways and windows, etc. To induce claustrophobia beyond just lighting, have a look at the way the Maggot ...


19

In a perspective projection, not necessarily - in fact, the further the sphere is from center of projection, the more distorted it will be. Example: old picture of a distorted sphere.


15

If you can vary your speed (thus your angle of steer) you will always find a solution, starting from the degenerate one where the entity is almost stopped rotating in a little circle until pointing the target. If you can't vary your speed, you can think about unreachable areas or shadows that you can not reach even using your better steer, if the target is ...


14

It's isometric projection or perspective. Isometric perspective can work very well with a 2D game, and there is the example of the Flexible Isometric Free Engine which is a 2D engine, with an isometric view (though as it is flexible, that is not forced).


14

Short Answer Yes, it can. You should simply calculate a View Matrix and Projection Matrix separately (which are both 4x4 matrices), multiply them together in that order and pass the result (which is still a 4x4 matrix) to your 3D engine. Long Answer Do you know the difference between a View Matrix, a Projection Matrix, and Perspective? You seem to be ...


14

It depends on what you mean by "that could be used in a 3D system such as OpenGL". :) Narrowly speaking, 3D graphics hardware and APIs like OpenGL only deal correctly with linear projections - projections that map straight lines in world space to straight lines on the image. They never distort something into a curved shape (unless it was curved to begin ...


13

If we're talking about any projection, this is quite obviously not the case. After all, Cahill's Butterfly is a valid projection of a sphere onto a 2D surface: Non-uniform parallel projections will also tend to distort the shape. Perspective projections on the other hand won't distort the shape as long as the projection surface has zero curvature (that ...


13

It's basically an isometric projection. Your second image is closer to a dimetric projection. Both projections are kinds of axonometric projections. The differentiating factor between them is the mainly the angle between the projected axes. (The above images are a subset of this image from Wikipedia). As you can see above, an isometric projection has ...


11

This is orthographic projection plain and simple. You can see this by the fact that all lines, especially the horizontal ones are perfectly parallel. Addendum: The comments are correct, this is isometric projection, which is a special case of the orthographic projection.


8

Well, if you want to use it for 2D games (assuming from the tags), you only need a Transform matrix to apply to the SpriteBatch, you don't need World and Projection matrices. So, when you're drawing an object that should be drawn inside your game world (e.g. the main player), you use the following Begin method from SpriteBatch (XNA 4.0, replace the other ...


8

As the two current other answers suggest, limiting visibility is a good way of doing this. There are other games which did this. One I can think of is Breath of Fire II, where early on in the game you are navigating a cave with only a candle for lighting. This restricts the visibility and creates tension (which mounts to a nice payoff in that game). But I ...


7

That is simple. You are using orthographic projection (viewing rays are parallel), so it doesn't make any difference if you are at distance 1 or 100. Use gluPerspective and it will work how you expect. (left img ortho projection, right img perspective proj) your code may look like this: glMatrixMode(GL_PROJECTION); gluPerspective( PI / 3.0f, ...


7

In practice, even when a scene is built to minimise problems, a 360-degree-FOV camera tends to introduce so much distortion in some directions that its results are useless for most purposes. If you want to avoid the expense of rendering a full texture cube, you can get a similar effect by using dual paraboloid environment maps, in which you render two ...


7

You guessed properly. The orthographic projection you came up with is the one used for most of the objects. You can tell because parallel lines in the X, Y or Z directions all become parallel lines, indicating that there is no perspective projection. Also, horizontal lines remain horizontal, meaning that X' does not depend on Y. Similarly, Y' does not depend ...


6

The multidimensional generalization of a triangle is an N-Simplex, here is a video of a projection of such an object. Here is another interesting video of a 4D hypercube. This wiki page is a good starting point if you want to learn more about the fourth dimension and how to visualize such objects. It also links a wiki page with a list of 4D games. ...


6

Pre- or post-multiplication just defines the order of operations how the member of that matrix and vector are multiplied, its purely a notational convention. The common operations in 3D graphics are post-multiplying a row-vector with column-major matrices (OpenGL) and pre-multiplying a column-vector with row-major matrices (DirectX). Both are basically ...


6

For a cavalier projection, it looks like you would want to start with an orthographic projection and then apply a shear to the z-axis. In other words, for OpenGL you would want to multiply the projection matrix on the left by a matrix of the form: 1 0 a 0 0 1 a 0 0 0 1 0 0 0 0 1 where a is the shear factor, which you'd tune to taste. (You could also use ...


6

Your description is a bit vague, but it sounds like what you're trying to do is map coordinates from one space (the window coordinates) to another (your tile coordinate space). Doing so is a simple transformation using the window size: x_trans = x - (windowWidth / 2); y_trans = y - (windowHeight / 2); x_norm = x / (windowWidth / 2); y_norm = y / ...


6

They're both similar, in that they are both parallel projections (lines that are parallel in the source are parallel in the projection). In a parallel projection of (x, y, z) onto the xy plane becomes (x + az, y + bz, 0). When a and b are equal, the projection is orthographic; otherwise the projection is oblique. Another way to look at it is that in an ...


5

You can assign any arbitrary matrix to the pipeline's projection matrix in XNA, even one that doesn't perform a useful projection (you probably won't see useful results doing that, but you can). So you can construct an orthographic projection matrix yourself or use one of XNA's helper methods and use that. You'll also have to adjust the view matrix to ...


5

How is the rotated sprite generated? Are these screenshots of a rotating 3D model? The facing angle could be off due to the camera perspective of the 3D modeling tool. Isometric perspective is not an accurate representation of the 3D space. Stuff far away from the 'camera' does not get smaller. If you just want a quick fix. Solution 2 might be difficult ...


5

I solved my own problem--and rather than just blow it off as a simple explanation, I want to describe the steps I took to debug the issue. I left out that I was using a single FBO for special-effects. First, it turns out everything above is in fact correct and a step I left out was the problem. I verified my orthogonal matrices through-and-through. ...


5

I need vector in iso coordinates that leads outside the monitor (is normal to a monitor screen). It's two rotations. Your tiles are half as high as they are wide. Projection/dot product is proportional to cosine, and arccosine(1/2) == 60 degrees, which means that's your first rotation. It is followed by a 45-degree rotation. You start with unit-z, ...


5

The diamonds of the grid measure 23 by 45. If this were isometric projection, they would be in ratio 1:sqrt(3). (That is 35.264… degrees above horizontal, not 45 as Nathan Reed suggested.) By taking arcsin(23/45), we find that this projection is 30.737… degrees above horizontal.


5

It's isometric. How can you tell? When things get bigger the closer they are to your point of view, that's "perspective," because your perspective matters in the view. When things appear to be the same size no matter how you move the view around, that's "isometric" (Greek for "equal measure"). Since the objects at the bottom (what should be the near edge) ...



Only top voted, non community-wiki answers of a minimum length are eligible