 # Orthographic/Isometric Camera Motion

First off, I apologize if this is in the wrong section, as there’s no rigging or really animation in this particular problem, but this forum seemed the most apt, as my issue has to do with camera motion.

My problem is as follows: I have an orthographic camera at a theoretically arbitrary angle (in this case, 54.736 degrees along the x axis, no other rotation). I rotated the scene (sans camera) 45 degrees around the z axis so that I can pan the camera directly along x and y, thus giving me true isometric projection and easy camera motion. My camera is at an orthographic scale of 25.

Then I have a landscape that I modeled that is quite large. My goal is to prerender this landscape in true isometric projection in tiles that are 512px square. When setting up my keyframes to render out the animation I noticed that while moving along the x axis by 25 works perfectly, moving along the y axis by 25 doesn’t move enough, creating overlap in the resulting images. This is clearly due to the fact that this isn’t top-down, therefore along the y axis more than 25 units are being displayed, but in several hours of searching I’ve been unable to find a solution to find how many are.

So my question, then, is this: In this situation, how do I determine how many units are being displayed along the y axis, especially with an arbitrary rotation of the camera’s x axis (for example, if I decided to go with video game isometric projection of 60 degrees)? To put it another way, how many units must the camera pan along the y axis to create seamless tiles of a single terrain mesh when given a certain x rotation on the camera?

If you know how many tiles are in the column you are rendering you can render an entire column of tiles on the y-axis then determine how many pixels it is shifted compared to the top edge of the last tile by counting how many it misses. Then determine how many percentage points it is missing over the amount of tiles that were supposed to be in the column and adjust the camera movement to that amount. There are free tools online for easily making measurements of screen objects in pixels. That’s what I would try. Not sure if it would work or not though.

I’m sure there’s an elegant geometric equation you can use if you know the distance between the camera and the objects. You may be able to calculate the base of the triangle although I would not know how to do this off the top of my head.

If I understand you correctly, the camera started out aimed down the z-axis and you rotated it by 54.736 (the “magic angle”) using the x-axis. This means that the camera is in the y-z plane. When you are moving it along x, you are moving it perpendicular to the line-of-sight of the camera. When you are moving it in y, you are moving it in the plane that contains the line of sight of the camera. These two motions are not equivalent, and that is the source of your problem.

I cannot quite understand what you are trying to do; I’m having a deal of difficulty visualizing the motion of the camera relative to your (presumably) large square scene and I don’t understand what the pictures would do.

My first instinct, since you twisted the landscape by 45 deg. is that if you twist the camera along z by 45 deg, then the x and y motion will at least become equivalent (i.e your camera will be pointing along one of the coordinate cube’s body diagonals). This would be true no matter what the deviation angle from the z-axis.

Thanks for the answers all. In this case I was looking primarily for that geometric function you spoke of, but when I woke up this morning it hit me that I could estimate it by simply extruding a vert from the corner to the top of my camera view along the y axis to determine the length of the y view (in this case, the result was approximately 43.30147 units – probably not perfectly accurate, but close enough for my purposes).

Thanks again!