( Ok so did end up finishing the threejs journey on raycaster )

/**
* Animate
*/
const clock = new THREE.Clock();

const tick = () => {
 const elapsedTime = clock.getElapsedTime();
 raycaster.setFromCamera(mouse, camera);
 const objectsToTest = [object1, object2, object3];
 const intersects = raycaster.intersectObjects(objectsToTest);

 for (const intersect of intersects) {
   intersect.object.material.color.set("#0000ff");
 }

 for (const object of objectsToTest) {
   if (!intersects.find((intersect) => intersect.object === object)) {
     object.material.color.set("#ff0000");
   }
 }

 // Update controls
 controls.update();

 // Render
 renderer.render(scene, camera);

 // Call tick again on the next frame
 window.requestAnimationFrame(tick);
};

tick();