Jupiter Rotation example
Meant to be a demo with working with Babylon's local and world rotations
by John Grden
HTML
<script src="http://www.rockonflash.com/webGL/babylon/babylon.js"></script>
<script src="http://www.rockonflash.com/webGL/babylon/Neo.js"></script>
<div id="rootDiv">
<canvas id="renderCanvas"></canvas>
</div>
CSS
html, body, div, canvas {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow: hidden;
}
JavaScript
NEO.JackIntoBabylon();
// Get the Canvas element from our HTML below
var canvas = document.getElementById("renderCanvas");
// Load BABYLON 3D engine
var engine = new BABYLON.Engine(canvas, true);
var scene = new BABYLON.Scene(engine);
var origin = new BABYLON.Vector3(0,10,0);
// Create a camera
var camera = new BABYLON.ArcRotateCamera("ExternalCamera", 240*NEO.toRADIANS, 67.5*NEO.toRADIANS , 140, origin, scene);
// Attach the camera to the scene
scene.activeCamera.attachControl(canvas);
var sunLight = new BABYLON.DirectionalLight("Sun", new BABYLON.Vector3(-22*NEO.toRADIANS,-90*NEO.toRADIANS, 0), scene);
var material = new BABYLON.StandardMaterial("default", scene);
material.emissiveColor = new BABYLON.Color3(1, 1, 1);
material.wireframe = true;
var ground = new BABYLON.Mesh.CreatePlane("ground", 100, scene);
ground.rotation.x = -90*NEO.toRADIANS;
ground.material = material;
//JUPITER
var jupiter = BABYLON.Mesh.CreateSphere("marker", 10, 10, scene);
jupiter.DrawAllAxis(scene, 10);
jupiter.RotateEulers(NEO.Axis.X, -26, NEO.Space.WORLD);
// marker is what we're moving/rotating in the render loop
var moon_0 = BABYLON.Mesh.CreateSphere("marker", 10, 1.0, scene);
moon_0.position = BABYLON.Vector3.Zero();
moon_0.rotation = new BABYLON.Vector3(0,0,0);
moon_0.Translate(NEO.Axis.X, 15, NEO.Space.LOCAL);
moon_0.DrawAllAxis(scene);
moon_0.RotateEulers(NEO.Axis.X, 45, NEO.Space.WORLD);
moon_0.parent = jupiter;
engine.runRenderLoop(function ()
{
// rotate in LOCAL space on Y axis using eulers
//marker.rotation.y += .01;
//jupiter.RotateEulers(NEO.Axis.Y, .5, NEO.Space.LOCAL);
moon_0.RotateEulers(NEO.Axis.Y, -2, NEO.Space.LOCAL);
// 3D
scene.render();
});