OMAP4 in my pocket. LG Optimus3D Speed has arrived


Our LG Optimus3D Speed has finally arrived!. Autostereoscopic screen, stereo camera and a powerful OMAP4 1GHz dual core processor... that's a lot more than our PhotoMint concept :).

What to say. Everything is smooth and responsive in this phone. The dual core OMAP4 performs pretty well, specially in the video side, as this phone has an stereo camera, as well as, an autostereoscopic screen. The camera is indeed double in order to capture the 3D images, and pretty good quality. Together with the power of the OMAP4, the LG Optimus3D can capture HD stereo videos!

LG 3D Stereo CameraLG 3D Stereo Camera

You cannot see the autostereoscopic effect in a normal image. You need to see it in the real thing. The effect is impressive and very cool, but for us, what is really interesting is how to take advantage of this in our software.

Android does not officially support stereoscopic output devices yet, so you need to use a special SDK to take advantage of this feature in your application. The LG's one is called LG Real3D SDK and can be downloaded from LG's mobile developer site.

The SDK can be installed stand-alone or within the Android development environment (Eclipse). Within the SDK zip file there is a .jar file, some emulator images and a skin for the LG Optimus3D. We have not yet tried it so we cannot say anything more.

The SDK contains a folder with some examples and there is some more documentation available in the LG developers site. There is also a sample package that also includes examples and a PDF with some extra information. There you can find different samples, including 3D and 2D applications. 2D here means, for instance, visualisation of images captured by the stereo camera, in other words, you already have the data for right and left eye. On the other hand, 3D means that you are calculating the data for each eye yourself.

The process to produce OpenGL applications working with the autostereoscopic screen seems to be something like this:

  • First you initialise the Real3D API, using some standard code. This code basically seems to set up the hardware so that half of the screen goes to the right eye and the other half goes to the left eye. After this code gets executed you've got an OpenGL Renderer ready to be use with the stereoscopic screen. In the SDK samples folder, take a look to demos/opengl/
  • Then you just need to write your 3D application taking into account that what you draw in the left half of the screen will go to your left eye, and what you render on the right half of the screen goes to your right eye. The example code is in demos/opengl/
    The example basically defines a function that renders the scene without setting camera or projection. Then in the draw method, that function is called twice, changing the camera position and viewport accordingly. Pretty much the same you do with any stereo application on a dual headed xinerama configuration.

Take above description as an indication because we have not yet tried the SDK and maybe something else is required. The code looks pretty straightforward but you never know.

One more remark. The sample code is OpenGL ES 1.0, that means it makes extensive use of the OpenGL matrix manipulation functions like glPush/PopMatrix and so on . There is no reason to think that an OpenGL ES 2.0 won't work with the system, it simply will need a little bit of extra effort in our side, however, we have not yet found a GLES 2.0 example out there.

Anyway, the "computer" (we do not believe "phone" is a good description) is great. We are planning to acquire a Pandaboard anyway for a couple of projects, but having this device will give us an additional testing platform for them.