Choosing a Scale

Started by
16 comments, last by angelmu88 12 years, 1 month ago
Hi!
I've been working on a DirectX project for some time, but I can't go ahead if I don't choose a good scale. so far I've been using this scale:
1 world unit = 1 metre
The problem with this scale is that things don't look natural, they seem very small to me. By the way I'm using a FOV between 60 a 70 deg (I think this is the most typical field of view in first person games).
I was thinking to change units into inches, I mean:
1 world unit = 1 inch

What scale do you use most for your videogames?
My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/
Advertisement
The scale shouldn't make any difference to how natural things look. A screenshot might help identify the issue.

The field of view that looks right will vary depending on how close you're sitting to the monitor, and how big the monitor is. Console games tend to have it set differently to PC games for that reason.

I'd also suggest checking:

- Camera settings.
- Are the relative sizes of objects right?
- Have you got a consistent level of texture detail?

The scale shouldn't make any difference to how natural things look. A screenshot might help identify the issue.

The field of view that looks right will vary depending on how close you're sitting to the monitor, and how big the monitor is. Console games tend to have it set differently to PC games for that reason.

I'd also suggest checking:

- Camera settings.
- Are the relative sizes of objects right?
- Have you got a consistent level of texture detail?


Sorry but I think I didn't express myself clearly. As you said, things look natural, here's a screenshot:

http://imageshack.us/photo/my-images/10/preguntaescala.jpg

In this picture you can see a living room, sorry but it only has a lamp as furniture, and it doesn't have all the textures mapped. The problem is that you can see "to much" of the living room, is like you are very far from it, instead of being in the middle of it. In other words is like the whole living room is too small for the screen. If I change the fov to a lower value it helps but It still looks very small (even with a 50 or 45 deg). As I said I think it has to do with the scale I'm using (1 world unit = 1 metre) but I might be wrong and it could be something related with the camera as you stated, please take a look at the link above.

Here's another screenshot where you can see the house from outside, the land around the house is big, about 70 metres (230 feet) but it looks smaller too (fov = 50 deg in this picture):
http://imageshack.us/photo/my-images/651/scaleask2.jpg/
My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/

If I change the fov to a lower value it helps but It still looks very small (even with a 50 or 45 deg).

That's because even your 45 degree FOV is too large for an accurate mapping to the real world. You have to take real world measurements into account to get the correct FOV which is the angle between the edges of your monitor and your eyes.

For example, I have a 21-inch monitor about half a meter in front of me. That makes a vertical FOV of about 35 degrees. And that's for a full screen window. If you have a smaller window, the FOV is even smaller. A 400x300 window for example (about the size of your screen shots), is no more than 10 to 12 degrees FOV. Anything larger than that, and you have a wide-angle view of your scene.

Sounds small, and does it give you a very small view of your scene? Yes, but that is how it is if you want a real and accurate mapping of your scene to real life measurements. See the window as a view into your scene. You can do the same experiment in real life; take a big cardboard box/sheet and cut a hole in it the size of the window and hold it the same distance away as your monitor. How much do you really see of your environment? Not much, really, and it's quite difficult to navigate in real life when the FOV is limited to such an extent as you are when you view things on a monitor.


As I said I think it has to do with the scale I'm using (1 world unit = 1 metre) but I might be wrong and it could be something related with the camera as you stated, please take a look at the link above.

It has nothing to do with scale. If you are applying the scale correctly, mapping the scale correctly to the real world measurements, and mapping the units to proeprly match your view, then things will look exactly as it would in real life. No matter what unit you use. A foot may be shorter than a meter, but the values in feet is correspondingly larger than the values in meters. The differences always cancel each other.

As my previous quote, it is all in the field of view. If you want an accurate mapping, you need to correctly calculate the true FOV. The true FOV, however, is likely to be much narrower than you expect and want. To see more of the scene, you need to increase the FOV, at which point you don't have an accurate mapping anymore, and the scene will look just like the images you posted. But as I said, the true FOV is typically much narrower that people thing it is.

It has nothing to do with scale. If you are applying the scale correctly, mapping the scale correctly to the real world measurements, and mapping the units to proeprly match your view, then things will look exactly as it would in real life. No matter what unit you use. A foot may be shorter than a meter, but the values in feet is correspondingly larger than the values in meters. The differences always cancel each other.




You are totally right about the scale, I was a bit frustrated with the aspect of the scene and I didn't think about it deeply.

I have 21 inch monitor at about the same distance too, so I tried a 35 deg for fullscreen mode as you use, and you are right, everything looks more liker a real videogame:
http://imageshack.us...vquestion1.jpg/
Dont you think so?

But I have a little question about your advice. You said that:


[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

For example, I have a 21-inch monitor about half a meter in front of me. That makes a vertical FOV of about 35 degrees. And that's for a full screen window. If you have a smaller window, the FOV is even smaller. [/font]


[color=#ff0000][font=helvetica, arial, verdana, tahoma, sans-serif]

A 400x300 window for example (about the size of your screen shots), is no more than 10 to 12 degrees FOV[/font]





Maybe I'm not changing well to fullscreen mode in my DirectX code, but when I change to fullscreen mode I can see more things than wen I use a 800x600 resolution (for instance). Please take a look at this comparison image:
http://imageshack.us...lutioncomp.jpg/

I don't know if that is an incorrect way of changing into a bigger resolution, but this way of changing things suggest me that If I'm using a slower resolution (like the 400x400 you mentioned) I should use a bigger field of view If I want the user to see the same things in both modes (full screen and windowed with lower resolution). Am I wrong?

Thanks!
My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/
The FOV is totally unrelated to the resolution. What matters is the physical size; that is, pick up a ruler and physically measure the size directly on the monitor. If you see more with a 1920x1080 resolution than you see with 1024x768, then it's simply because you have a wider FOV in the first setup.

What I mean with the 400x300 window in my example is simply that the physical size of a 400x300 window on my monitor corresponds to roughly that FOV. It is not that 400x300 itself is 10 to 12 degrees, but that a 400x300 window on a 21-inch monitor with a 1920x1080 native resolution occupies a physical size corresponding to a vertical FOV or 10 to 12 degrees. That is, if I pick up a ruler and measure the size of the window as it looks on my screen.

It's all about the physical size. A smaller physical size gives a smaller field of view.

The FOV is totally unrelated to the resolution. What matters is the physical size; that is, pick up a ruler and physically measure the size directly on the monitor. If you see more with a 1920x1080 resolution than you see with 1024x768, then it's simply because you have a wider FOV in the first setup.

What I mean with the 400x300 window in my example is simply that the physical size of a 400x300 window on my monitor corresponds to roughly that FOV. It is not that 400x300 itself is 10 to 12 degrees, but that a 400x300 window on a 21-inch monitor with a 1920x1080 native resolution occupies a physical size corresponding to a vertical FOV or 10 to 12 degrees. That is, if I pick up a ruler and measure the size of the window as it looks on my screen.

It's all about the physical size. A smaller physical size gives a smaller field of view.


Ok thank you very much, I understand it now
My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/

Maybe I'm not changing well to fullscreen mode in my DirectX code, but when I change to fullscreen mode I can see more things than wen I use a 800x600 resolution (for instance). Please take a look at this comparison image:
http://imageshack.us...lutioncomp.jpg/

I don't know if that is an incorrect way of changing into a bigger resolution, but this way of changing things suggest me that If I'm using a slower resolution (like the 400x400 you mentioned) I should use a bigger field of view If I want the user to see the same things in both modes (full screen and windowed with lower resolution). Am I wrong?

Thanks!


Don't forget that the FOV is vertical FOV. In one image you have an aspect ratio of 4:3, and in the other 16:9, so in both cases you are drawing the same amount vertically but in the widescreen resolution you are getting more horizontally.

There was a fairly big stink involving Bioshock when people found out that on widescreen monitors, they turned the vertical fov down so that the player couldn't see too much out the sides - this made a lot of people unhappy as they felt they deserved to see more because of their widescreen.

Don't forget that the FOV is vertical FOV. In one image you have an aspect ratio of 4:3, and in the other 16:9, so in both cases you are drawing the same amount vertically but in the widescreen resolution you are getting more horizontally.

There was a fairly big stink involving Bioshock when people found out that on widescreen monitors, they turned the vertical fov down so that the player couldn't see too much out the sides - this made a lot of people unhappy as they felt they deserved to see more because of their widescreen.


Thank you for your advice. I had no idea about that problem with bioshock,It's very interesting.
My 3D graphic engine: http://graphicprogramming.wordpress.com/rebirthengine/
My blog: http://graphicprogramming.wordpress.com/
Oh and as far as your original question, the primary thing you need to consider when choosing a scale is floating point precision and your level/scene layout. Since floating point formats lose precision as they increase, its important to choose a scale that will, erm, scale well.

If you know that you want a level that extends from 0m to 10,000m, and you choose 1m = 1 world unit as your scale, the precision at 10,000 will be .000977. If, however, you use 1mm = 1 world unit, at 10,000m that's 10,000,000 world units, and at that number your precision drops down to 1 unit.

This topic is closed to new replies.

Advertisement