BGE on 3DTV?

As you know, there are already many lcd or plasma 3DTVs around, like Panasonic’s Viera TX-P50VT20E display. Such displays are primarly used for watching stereoscopic movies with some kind of glasses (polarized, shutter, etc.). However, mostly they also allow to connect a pc over HDMI and use them as a 2d computer monitor.

Wouldn’t it be nice if the BGE could show its content in stereo on such 3dtvs?

Unfortunatelly, the stereoscopic signals which can be provided by BGE (side by side, top bottom) are not compatible to the (side by side, top bottom) signal expected by 3dtv’s. 3dtv’expect a so called ‘frame compatible’ sbs or tb signal. That is a signal which shows two views within one frame of HD resolution (1080x1920), thereby both views have to have a reduced horizontal (or vertical) resolution. It is expected that the reduction in resolution is achieved by linear scaling in horizontal (or vertical) direction.

However, the side by side or the top bottom options for stereo rendering with BGE create one frame with two views which are cropped left and right (or on the top and the bottom) in order to fit into one frame. No horizontal or vertical scaling is applied. This leads to horizontally or vertically stretched content, when watched sterescopically on a 3dtv.

Does anybody know how to create a frame compatible output signal with the BGE?

Are there any plans to add a setting in the upcoming BGE 2.5 which allows to create such a signal? I think that would be very usful.

You could apply a Y-scale to the camera with:

from Mathutils import Matrix
def test(cont):
 if not cont.sensors[0].positive:
 cam = cont.owner
 scale = 0.5
 projList = cam.projection_matrix
 proj = Matrix(projList[0], projList[1], projList[2], projList[3] )
 scale = Matrix([1,0,0,0],[0,scale,0,0],[0,0,1,0],[0,0,0,1])
 cam.projection_matrix = scale * proj

Let it run just once!

Unfortunatly this sets the projection camera of the second camera as well. Wich removes the 3D stereo effect :(.