Hello, I want to raycast into a terrain (a plane with height map), however, the intersection point is logged as is on a flat plane other than a terrain. Part of my code is as follows:
const disMap = new THREE.TextureLoader().load(heightMap)
const material = new THREE.MeshStandardMaterial({
side: THREE.FrontSide,
displacementMap: disMap,
displacementScale: disScale
})
const terrainGeom = new THREE.PlaneGeometry(sizeX, sizeY, widthSeg, depthSeg);
const terrainMesh = new THREE.Mesh(terrainGeom, material);
scene.add(terrainMesh);
document.addEventListener('mousedown',onMouseClick);
function onMouseClick(evt) {
var rayCaster = new THREE.Raycaster();
var mousePosition = new THREE.Vector2();
var canvas = renderer.domElement;
var canvasPosition = canvas.getBoundingClientRect();
evt.preventDefault();
mousePosition.x = ((evt.clientX - canvasPosition.left) / canvas.width) * 2 - 1;
mousePosition.y = -((evt.clientY - canvasPosition.top) / canvas.height) * 2 + 1;
rayCaster.setFromCamera(mousePosition, camera);
var intersects = rayCaster.intersectObjects(lineObject, true);
if (intersects.length > 0)
console.log(intersects[0].point);
}