Of course all this is really for the time being and we patiently wait for the official version.
Until then for who is interested I copy/pasted a web based viewer for webgl-gyro-phones. It can view different images for the left and the right eye.
@Maru, I hope it is error free this time :D
I checked it on a iphone 5 with safari and chrome. Both browsers work fine.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Stereo Viewer Corona-Cardboard</title>
<meta charset="utf-8">
<meta name="viewport" content="user-scalable=no, initial-scale=1">
<style TYPE="text/css">
body {
margin: 0px;
background-color: #000000;
overflow: hidden;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="js/three.min.js"></script>
<script src="js/DeviceOrientationControls.js"></script>
<script src="js/StereoEffect.js"></script>
<script>
(function() {
"use strict";
window.addEventListener('load', function() {
var container
var camera1, scene1, renderer1, controls1, geometry1, mesh1;
var camera2, scene2, renderer2, controls2, geomerty2, mesh2;
var animate = function(){
window.requestAnimationFrame( animate );
controls1.update();
controls2.update();
renderer1.render(scene1, camera1);
renderer2.render(scene2, camera2);
};
container = document.getElementById( 'container' );
camera1 = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.001, 700);
camera1.aspect = (window.innerWidth/2) / window.innerHeight;
camera1.updateProjectionMatrix();
camera2 = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.001, 700);
camera2.aspect = (window.innerWidth/2) / window.innerHeight;
camera2.updateProjectionMatrix();
controls1 = new THREE.DeviceOrientationControls( camera1 );
controls2 = new THREE.DeviceOrientationControls( camera2 );
scene1 = new THREE.Scene();
scene2 = new THREE.Scene();
var geometry1 = new THREE.SphereGeometry( 500, 32, 32 );
geometry1.scale( - 1, 1, 1 );
var geometry2 = new THREE.SphereGeometry( 500, 32, 32 );
geometry2.scale( - 1, 1, 1 );
var material1 = new THREE.MeshBasicMaterial( {
map: THREE.ImageUtils.loadTexture( 'img/YOUR_LEFT_IMAGE.jpg' )
} );
var material2 = new THREE.MeshBasicMaterial( {
map: THREE.ImageUtils.loadTexture( 'img/YOUR_RIGHT_IMAGE.jpg' )
} );
var mesh1 = new THREE.Mesh( geometry1, material1 );
scene1.add( mesh1 );
var mesh2 = new THREE.Mesh( geometry2, material2 );
scene2.add( mesh2 );
renderer1 = new THREE.WebGLRenderer();
renderer1.setPixelRatio( window.devicePixelRatio);
renderer1.setClearColor( 0xffffff );
renderer1.setSize(window.innerWidth/2, window.innerHeight);
renderer1.domElement.style.top = 0;
container.appendChild(renderer1.domElement);
renderer2 = new THREE.WebGLRenderer();
renderer2.setPixelRatio( window.devicePixelRatio);
renderer2.setSize(window.innerWidth/2, window.innerHeight);
renderer2.domElement.style.top = 0;
container.appendChild(renderer2.domElement);
window.addEventListener('resize', function() {
camera1.aspect = (window.innerWidth/2) / window.innerHeight;
camera1.updateProjectionMatrix();
camera2.aspect = (window.innerWidth/2) / window.innerHeight;
camera2.updateProjectionMatrix();
renderer1.setSize((window.innerWidth/2), window.innerHeight );
renderer2.setSize((window.innerWidth/2), window.innerHeight );
}, false);
animate();
}, false);
})();
</script>
</body>
</html>