three.js - watch controller

by mmalex

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/91/three.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

CSS

body {
  overflow: hidden;
}

JavaScript

var renderer;
var camera;
var controls;

var scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(54, window.innerWidth / window.innerHeight, 0.1, 1000);

renderer = new THREE.WebGLRenderer({
  antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(new THREE.Color(0xfefefe));
document.body.appendChild(renderer.domElement);

camera.position.x = -0.1;
camera.position.y = 5;
camera.position.z = 0;
camera.lookAt(0, 0, 0);

controls = new THREE.OrbitControls(camera);

// white spotlight shining from the side, casting a shadow
var spotLight = new THREE.SpotLight(0xffffff, 2.5, 25, Math.PI / 6);
spotLight.position.set(9, 10, 1);
scene.add(spotLight);

var gridHelper = new THREE.GridHelper(4, 4);
scene.add(gridHelper);

var arrowThickness = 0.025;
var hourArrowLen = 1.75;
var minutesArrowLen = 3;
var secondsArrowLen = 3;
var hourArrowWidth = 0.2;
var minutesArrowWidth = 0.12;
var secondsArrowWidth = 0.08;
var arrowCenterOffs = 0.5;

var axisMaterial = new THREE.MeshPhongMaterial({
  color: 0x408040,
  transparent: true,
  opacity: 0.95
});
var material = new THREE.MeshPhongMaterial({
  color: 0x906060,
  transparent: true,
  opacity: 0.95
});

var hoursAxisgeometry = new THREE.CylinderGeometry( hourArrowWidth/3, hourArrowWidth/3, 3*arrowThickness, 12 );
var hoursAxis = new THREE.Mesh( hoursAxisgeometry, axisMaterial );
hoursAxis.matrixAutoUpdate = false;
scene.add(hoursAxis);

var minutesAxisgeometry = new THREE.CylinderGeometry( minutesArrowWidth/3, minutesArrowWidth/3, 6*arrowThickness, 12 );
var minutesAxis = new THREE.Mesh( minutesAxisgeometry, axisMaterial );
minutesAxis.matrixAutoUpdate = false;
scene.add(minutesAxis);

var secondsAxisgeometry = new THREE.CylinderGeometry( secondsArrowWidth/3, secondsArrowWidth/3, 9*arrowThickness, 12 );
var secondsAxis = new THREE.Mesh( secondsAxisgeometry, axisMaterial );
secondsAxis.matrixAutoUpdate = false;
scene.add(secondsAxis);

var geometry1 = new...