function cloneMeshMaterial(object3d) {
  object3d.traverse(function (node) {
    var newMaterial;
    if (node.type !== 'Mesh') return;
    newMaterial = node.material.clone();
    object3d.originalColor = node.material.color;
    node.material.dispose();
    node.material = newMaterial;
  });
}
Some of the controller models share the same material for different parts (buttons, triggers...).
In order to change their color independently we have to create separate materials.