есть пример Three.js raycast текстуры here
function onMouseMove(evt) {
evt.preventDefault();
var array = getMousePosition(container, evt.clientX, evt.clientY);
onClickPosition.fromArray(array);
var intersects = getIntersects(onClickPosition, scene.children);
if (intersects.length > 0 && intersects[ 0 ].uv) {
var uv = intersects[ 0 ].uv;
intersects[ 0 ].object.material.map.transformUv(uv);
canvas.setCrossPosition(uv.x, uv.y);
}
};
var getMousePosition = function (dom, x, y) {
var rect = dom.getBoundingClientRect();
return [ (x - rect.left)/rect.width, (y - rect.top)/rect.height ];
};
var getIntersects = function (point, objects) {
mouse.set((point.x * 2) - 1, - (point.y * 2) + 1);
raycaster.setFromCamera(mouse, camera);
return raycaster.intersectObjects(objects);
};