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();
});