DAT simple

with orbitControls, XZgrid, info

by wayne6172

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/84/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5.1/dat.gui.min.js"></script>
<div id="info">DAT-gui demo page</div>
<div id='guiContainer'></div>
<canvas id='mycanvas'></canvas>

CSS

#mycanvas {
  top: 0px;
  width: 100%;
  height: 100%;
  padding: 2px;
  text-align: center;
  color: #ffff00;
  border: solid 1px red;
}
#info {
    position: absolute;
    top: 0px;
    width: 100%;
    padding: 10px;
    text-align: center;
    color: #ffff00
}
#guiContainer {
    position: absolute;
    top: 10%;
    left: 5%;
    z-index: 9999;
    border: solid 2px white;
}

JavaScript

var camera, scene, renderer, geometry, material, mesh, light, controls;
var angle = 0;
var gcontrols;

init();
animate();

function init() {
    scene = new THREE.Scene();

    camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000);
    camera.position.z = 500;
    scene.add(camera);

    geometry = new THREE.BoxGeometry(100, 20, 20);
    material = new THREE.MeshLambertMaterial();

    mesh = new THREE.Mesh(geometry, material);
    scene.add(mesh);

    light = new THREE.PointLight(0xffffff);
    light.position.set(100, 300, 200);
    scene.add(light);

    var gridXZ = new THREE.GridHelper(200, 20, 'red', 'white');
    scene.add(gridXZ);
    
    mycanvas = document.getElementById('mycanvas');
    renderer = new THREE.WebGLRenderer({canvas:mycanvas});
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.setClearColor(0x888888);

    controls = new THREE.OrbitControls(camera, renderer.domElement);

    //document.body.appendChild(renderer.domElement);

    // building a "gcontrol" object
    /*
    gcontrols = new function () {
        this.speed = 1.2;
        this.turn = false;
    }
*/
    // fraction digits display has to do with
    // the initial values
    // if positive (>0): then display as fraction
    // if non-positive (<=0) then display as integer
    
    gcontrols = {
        speed:0.5,
        turn:false
    };
    
    
    var gui = new dat.GUI({autoPlace: false});
    document.getElementById('guiContainer').appendChild (gui.domElement);
    
    //var gui = new dat.GUI();
    
    //gui.domElement.id = 'gui';
    
    gui.add(gcontrols, 'speed', -1.5, 1.5);
    gui.add(gcontrols, 'turn');
}

function animate() {
    controls.update();

    if (gcontrols.turn) angle += 0.01*gcontrols.speed;
    mesh.rotation.y = angle;

    requestAnimationFrame(animate);
    render();
}

function render() {
    renderer.render(scene, camera);
}