Measuring perceived depth in S3D games

Post Reply
User avatar
Fredz
Petrif-Eyed
Posts: 2255
Joined: Sat Jan 09, 2010 2:06 pm
Location: Perpignan, France
Contact:

Measuring perceived depth in S3D games

Post by Fredz »

Continued from this post on the thread "My PS3 3D Gaming Experience" : http://www.mtbs3d.com/phpBB/viewtopic.p ... 294#p58294" onclick="window.open(this.href);return false;

Image

I wondered what the perceived depth would be for this Crysis 2 screenshot, so I calculated the depth for each parallax distance I measured, by using the Acer GD245HQ 24'' monitor as a reference (the one used for the screenshot).

I also considered the viewing distance to be 3.1ft (94,48cm) because it's the limit of visual acuity for this display (ie. fully resolved 1080p for 20/20 normal eyes) and a standard eye separation of 6,5cm.

This gives the following formula (thanks to Thales) :
(p / 2) / (s / 2) = D / (D + d) (formula 1)

Where
P = parallax between two points on the screen in cm
s = eye separation (6,5 cm)
d = viewing distance (94,48 cm)
D = depth inside the screen in cm (the value we want to calculate)

Here are the measured values in pixels followed by the value for parallax (1920 - measured distance) :
- green HUD in lower left : 1915 pixels (5 pixels)
- yellow part of the arm : 1893 pixels (27 pixels)
- farthest part of the gun : 1881 pixels (39 pixels)
- white thing on the ground at the left of the hand : 1867 pixels (53 pixels)
- black and yellow frame on the ground in the left : 1864 pixels (56 pixels)
- poster in the bathroom : 1863 pixels (57 pixels)

We need to convert these parallax values in centimeters to obtain p :
p = parallax * screen_width / pixel_width (formula 2)

The pixel width is 1920 and the screen width in centimeters is given by :
screen_width = 16 * diagonal / sqrt(337) = 53,13cm

Using (2) and the real values, we now have this equation for (1) :
(parallax * 53,13) / 3840 / 3,25 = D / (D + 94,48)

Using the free trial of Derive 6.1 to solve the formula for the distance from the screen (d), we obtain the following equation :
D = (4183102 * parallax) / (25 * (416000 - 1771 * parallax))

Here are the results obtained, in cm behind the screen plane :
- screen plane (0 pixels) : 0cm
- green HUD in lower left (5 pixels) : 2,05cm
- yellow part of the arm (27 pixels) : 12,27cm
- farthest part of the gun (39 pixels) : 18,80cm
- white thing on the ground at the left of the hand (53 pixels) : 27,53cm
- black and yellow frame on the ground in the left (56 pixels) : 29,57 cm
- poster in the bathroom (57 pixels) : 30,27cm

I think it better illustrates the depth one is supposed to see with this game on a 24" 1920p 3D monitor. It shows than in this configuration this game looks like it's trapped in a box of dimension 53 x 29 x 30 cm (W x H x P). Way to go for immersion...
Last edited by Fredz on Fri Mar 25, 2011 6:12 am, edited 1 time in total.
User avatar
cybereality
3D Angel Eyes (Moderator)
Posts: 11407
Joined: Sat Apr 12, 2008 8:18 pm

Re: Measuring perceived depth in S3D games

Post by cybereality »

Interesting. Could you run the calculations on a game with a better stereo implementation and see how it compares?
crim3
Certif-Eyed!
Posts: 642
Joined: Sat Sep 22, 2007 3:11 am
Location: Valencia (Spain)

Re: Measuring perceived depth in S3D games

Post by crim3 »

This could be really interesting for my own purposes. Thanks!
I have a doubt. Wasn't 'D' and not 'd' the value that you were calculating?
Zalman Trimon ZM-M220W / Acer H5360 with Another Eye2000 shutters / nVIDIA GTX760
User avatar
Fredz
Petrif-Eyed
Posts: 2255
Joined: Sat Jan 09, 2010 2:06 pm
Location: Perpignan, France
Contact:

Re: Measuring perceived depth in S3D games

Post by Fredz »

Yes, I mixed and matched the two in the final formula, corrected now.
User avatar
Fredz
Petrif-Eyed
Posts: 2255
Joined: Sat Jan 09, 2010 2:06 pm
Location: Perpignan, France
Contact:

Re: Measuring perceived depth in S3D games

Post by Fredz »

cybereality wrote:Interesting. Could you run the calculations on a game with a better stereo implementation and see how it compares?
Image

Ok, I did the calculations with the GRID screenshot you published in the Gran Turismo 5 thread. For this image I calculated the parallax for the 22" wide display (16:10) monitor you used to view it. The optimal viewing distance for visual acuity in this case is 2.9ft (88,39cm) if the screen is 1080p and the screen width is 8*diagonal/sqrt(89) = 47,38cm.

The new formula for this display is :
(parallax * 47,38) / 900 / 3,25 = D / (D + 88,39)

The same formula solved for depth with Derive :
D = (20939591 * parallax ) / (100 * (146250 - 2369 * parallax))

I obtain the following results for this image (measured distance, parallax, depth) :
- HUD (measured on top) : 450 pixels - 0 pixels - 0cm
- white line in the center : 447 pixels - 3 pixels - 4,51cm
- red car on the left : 446 pixels - 4 pixels - 6,12cm
- grey car in the middle : 445 pixels - 5 pixels - 7,79cm
- white car on the right : 440 pixels - 10 pixels - 17,08cm
- green Castrol panel on the right : 436 pixels - 14 pixels - 25,92cm
- yellow arrows, building on the left : 435 pixels - 15 pixels - 28,36cm

It shows than on a 22" 16:10 monitor, the virtual scene is enclosed in a box of dimensions 47 x 29 x 28 cm (W x H x P). From only looking at the numbers that doesn't look any better than with Crysis 2, but the depth budget is more uniform and put to a much better use with GRID. I think that explains why the perceived depth is better and why we don't see any cardboard effect.

I may redo the calculations for both images with a more unequivocal viewing distance, like the distance for which the angle of vision is 30° horizontally. This way it won't depend on the resolution of the display which can vary among monitors. The difference shouldn't be very big though, for the first image it would give 3.3ft instead of 3.1ft and for the second one 3ft instead of 2.9ft.

As always, feel free to reproduce this to see if I didn't do any mistake in the calculations.
User avatar
Fredz
Petrif-Eyed
Posts: 2255
Joined: Sat Jan 09, 2010 2:06 pm
Location: Perpignan, France
Contact:

Re: Measuring perceived depth in S3D games

Post by Fredz »

Here is a simplified formula using variables instead of litteral values if you want to do the calculations for other images :
D = (4 * viewing_distance * screen_width * parallax) / (13 * image_width - 4 * parallax * screen_width)

The viewing_distance and screen_width variables should be in cm to obtain a depth in cm. You can use feet or inches as you see fit, but all the values should use the same units.

The parallax and image_width variables are expressed in pixels. The parallax value is "(image_width / 2) - measured_distance" and image_width correspond to the real image width (ie. 3840 in the first case and 900 in the second one).
User avatar
android78
Certif-Eyable!
Posts: 990
Joined: Sat Dec 22, 2007 3:38 am

Re: Measuring perceived depth in S3D games

Post by android78 »

Your math looks pretty good to me.
I did get a slight variation on the formula though:
Z=(D*P*W)/(2203*E - P*W)

Z: The distance into the screen the object will appear
D: Distance you are viewing from the screen
P: The number of pixels displacement
W: The diagonal distance of the screen
E: The displacement between eyes

So, for my setup, 58" screen, viewed from 2m and using your example of 57 pixels, I get about 155cm depth.
Have you managed to get any screenshots with background mountains? I think that, if we want a standard for evaluating the depth, then it would be best to do a simple grab of the mountains (which should effectively be infinite distance), get the distance between the two and rate that as a % of standard eye displacement (6.5 cm). So if the actual displacement on the screen is 6.5 cm, then it would be 100% (accurate with reality) and if 3.25, it would be 50%.
Or you could do it on an inverse log scale, which would probably be more accurate with regards to the distance away an object appears. This would still give 6.5 cm a value of 100%, but a value of 3.25 would be 29%. I propose a formula such as:
depth_realism = ( pixel_distance^2 / 6.5^2 ) * 100
User avatar
Fredz
Petrif-Eyed
Posts: 2255
Joined: Sat Jan 09, 2010 2:06 pm
Location: Perpignan, France
Contact:

Re: Measuring perceived depth in S3D games

Post by Fredz »

Assuming your display is 58" in diagonal with a 16:9 format, its corresponding width should be :
screen_width = 16 * (58 * 2.54) / sqrt(337) = 128.40 cm

My formula :
D = (4 * viewing_distance * screen_width * parallax) / (13 * image_width - 4 * parallax * screen_width)
gives for the image you used for your display viewed at 2m (200cm) :
D = (4 * 200 * 128.4 * 57) / (13 * 3840 - 4 * 57 * 128.4) = 283.60cm (2.83m inside the screen)

I'm not sure how you came with your formula, but I suspect it's not exact because you didn't take the resolution of the display into account. It's needed to convert the parallax value in cm, which is then used to calculate the corresponding depth in cm.

I guess you shouldn't take my calculated results for your display to literally either, because these two images would not have been generated the same way for your display. Generally 3D drivers calculate the 2 views by taking into account the size of the display, that's why I only calculated the depth for the displays for which the images were generated.
Last edited by Fredz on Wed Mar 30, 2011 6:21 am, edited 3 times in total.
User avatar
Fredz
Petrif-Eyed
Posts: 2255
Joined: Sat Jan 09, 2010 2:06 pm
Location: Perpignan, France
Contact:

Re: Measuring perceived depth in S3D games

Post by Fredz »

For background mountains, I'm not sure it will give a real infinite distance since skyboxes are generally not placed at the correct depth in 3D games. Most of the time they are only placed at the position of the far clip plane, to not have Z-fighting and to not loose too much precision with the limited resolution of the Z-buffer (often 16 bits). It's still possible that 3D ready games take care of putting skyboxes at the correct depth though, but I'm not sure it's easily verifiable.
Post Reply

Return to “General Stereoscopic 3D Discussion”