three.js - move gizmo

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 controls;

var scene = new THREE.Scene();
var width = window.innerWidth;
var height = window.innerHeight;
var aspect = width / height;
var camera = new THREE.PerspectiveCamera(60, aspect, 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 = 15;
camera.position.y = 15;
camera.position.z = 15;
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(4, 10, 1);
scene.add(spotLight);

//
//create a blue LineBasicMaterial
var material = new THREE.LineBasicMaterial({
  color: 0xc0c0c0
});
var geometry = new THREE.Geometry();

for (var xi = -3; xi <= 3; xi++) {
  if (xi === 0) continue;
  geometry.vertices.push(new THREE.Vector3(-3, 0, xi));
  geometry.vertices.push(new THREE.Vector3(3, 0, xi));

  geometry.vertices.push(new THREE.Vector3(xi, 0, -3));
  geometry.vertices.push(new THREE.Vector3(xi, 0, 3));
}

var line = new THREE.LineSegments(geometry, material);
scene.add(line);

// main grid
var material = new THREE.LineBasicMaterial({
  color: 0x404040
});
var geometry = new THREE.Geometry();

geometry.vertices.push(new THREE.Vector3(-3, 0, 0));
geometry.vertices.push(new THREE.Vector3(3, 0, 0));

geometry.vertices.push(new THREE.Vector3(0, 0, -3));
geometry.vertices.push(new THREE.Vector3(0, 0, 3));

var line = new THREE.LineSegments(geometry, material);
scene.add(line);
// end of grid

var origin = new THREE.Vector3(0, 0, 0);
var length = 1.5;
var arrowSize = 0.25;

var gizmo = new THREE.Object3D();
var space = 0.25;

var dir = new THREE.Vector3(1, 0, 0);
var hex = 0xff0000;
var arrowHelper = new THREE.ArrowHelper(dir, origin.clone().add(dir.clone().multiplyScalar(length * space)), length, hex,...