This website uses cookies to improve our services and deliver relevant ads.
By interacting with this site, you agree to this use. For more information, see our Cookies Policy
This section describes how to create and compile a movie theater FBX for use with Oculus Cinema.

Steps to Create a Theater:


Create a CG scene in MODO that is lit as if the lights were turned on. This scene is then baked to a texture. Next, turn off all room lights in the MODO scene and add one area light coming from the screen. This scene is baked out as the second texture. In the cinema that is included with the SDK, the material is named "cinema." The lights-on image is named "cinema_a.png" and lights-off image is named "cinema_b.png"


\OculusSDK\Mobile\Main\SourceAssets\scenes\cinema\cinema.fbx
\OculusSDK\Mobile\Main\SourceAssets\scenes\cinema.batFbxConvertx64.exe -o cinema -pack -cinema -stripModoNumbers -rotate 90 -scale 0.01 -flipv -attrib position uv0 -sort origin -tag screen cameraPos1 cameraPos2 cameraPos3 -remove cameraPos1 cameraPos2 cameraPos3 -render cinema\cinema.fbx -raytrace screen -include cinema\icon.png
Here is an explanation of the different command-line options used to compile the cinema.
FbxConvertx64.exe | The FBX Converter executable. |
|---|---|
-o cinema | The -o option specifies the name of the .ovrscene file. |
-pack | Makes the FBX Converter automatically run the cinema_pack.bat batch file that packages everything into the .ovrscene file. |
-cinema | The .ovrscene file is automatically loaded into Cinema instead of VrScene when the device is connected. |
-stripMODONumbers | MODO often appends “ {2}” to item names because it does not allow any duplicate names. This option strips those numbers. |
-rotate 90 | Rotates the whole theater 90 degrees about Y because the cinema was built to look down +Z, while Cinema looks down +X. |
-scale 0.01 | Scales the theater by a factor of 100 (when MODO saves an FBX file, it converts meters to centimeters). |
-flipv | Flips the textures vertically, because they are flipped when they are compressed. |
-attrib position uv0 | Makes the FBX Converter remove all vertex attributes except for the ‘position’ and first texture coordinate. |
-sort origin | Sorts all triangles front-to-back from 0,0,0 to improve rendering performance. |
-tag screen cameraPos1 cameraPos2 cameraPos3 | Creates tags for the screen and view positions in the theater. These tags are used by Cinema. |
-remove cameraPos1 cameraPos2 cameraPos3 | Keeps the view position meshes from being rendered. |
-render cinema\cinema.fbx | Specifies the FBX file to compile. |
-raytrace screen | Allows gaze selection on the theater screen. |
-include cinema\icon.png | Includes an icon for the theater in the .ovrscene file. |
Theaters are static scenes that we want users to spend dozens of hours in. It is therefore especially important to design them to very high standards. In this section, we offer some guidelines to assist with theater design.
The viewpoint should be centered on the screen. The screen should be exactly 16:9 aspect ratio, exactly flat, and exactly axial. The screen in the SDK source files for Oculus Cinema covers 60 degrees horizontal FOV.
It is more comfortable to have a larger screen that is farther away, because the eyes will have less focus/vergence mismatch. The sample Oculus Cinema screen is five meters from the viewpoint, which requires the screen to be six meters wide. Three meters away and 3.46 meters x 1.95 meters or four meters and 4.62 x 2.60 may be more reasonable actual targets. The large screen would go nearly to the floor to remain centered on the viewpoint unless the couch area is raised up.
Do not over-optimize geometry for the viewpoint for any model that will also be used for PC with position tracking. For example, don’t remove occluded back sides, just make them cruder and lower texture detail if you need to optimize.
All of the geometry in the scene should be designed to minimize edge aliasing. Aliasing will show up at every silhouette edge and at every texture seam. With a nearly constant viewpoint it should be possible to place texture seams on the back sides of objects.
Venetian blinds are almost worst case for silhouette edges – many long edges.
Surfaces that are very nearly coplanar with the viewpoint are even worse than silhouette edges, causing the entire surface to go from not-drawn to a scattering of pixels using the deepest mipmap as the user’s head moves around. This can be worked around in the geometric design.
You have a large enough triangle budget that there shouldn’t be any starkly visible polygon edges. Keeping the use of complex curved surfaces to a minimum in the design is important.
Don’t use solid black in any environment source textures. OLED displays have technical problems with very deep blacks, so design rooms with fairly bright surfaces. The black leather chairs in the current home theater are problematic for this.
You may compress all textures with ETC2 or ASTC texture compression to conserve power - we recommend using ASTC compression. Make sure that no alpha channel is encoded.
If you place text on any surfaces, make it as close to parallel with the view plane as possible, and make it large enough that it is easy to read. It should either be headlines or a tiny blur, nothing in between at a barely-legible state.
Cut the texture sizes to only what is needed for the sized-to-view-position texture layouts – don’t expand them to fit a 2x 4k x 4k budget, since additional resolution will be completely wasted. In theory, arbitrary texture sizes are fine, but we recommend staying on power of two boundaries. No need to remain square – 4k x 2k and so on are fine.