[+] Add z parameter to project function

This commit is contained in:
Hykilpikonna
2021-12-11 12:58:36 -05:00
parent c3f79de1eb
commit de5c0c87d7
+22 -9
View File
@@ -15,14 +15,27 @@ export function initMouseTracker(): void
mouse = e
moused.x = e.clientX / window.innerWidth * 2 - 1
moused.y = -(e.clientY / window.innerHeight * 2 - 1)
// Project to 3d position
// https://www.reddit.com/r/threejs/comments/eba9l3/3d_cursor_using_threejs_html_css/
// https://jsfiddle.net/atwfxdpd/10/
const vector = new THREE.Vector3(moused.x, moused.y, 0.5)
vector.unproject(camera)
const dir = vector.sub(camera.position).normalize()
const distance = -camera.position.z / dir.z
moused.pos = camera.position.clone().add(dir.multiplyScalar(distance))
moused.pos = projectTo3D(moused.x, moused.y, 0)
}
}
/**
* Project to 3D position
* https://www.reddit.com/r/threejs/comments/eba9l3/3d_cursor_using_threejs_html_css/
* https://jsfiddle.net/atwfxdpd/10/
*
* @param screenX X position on 2D canvas
* @param screenY Y position on 2D canvas
* @param z Z position in 3D
*/
export function projectTo3D(screenX: number, screenY: number, z: number): Vector3
{
const vector = new THREE.Vector3(screenX, screenY, 0.5)
vector.unproject(camera)
const dir = vector.sub(camera.position).normalize()
const distance = (-camera.position.z + z) / dir.z
const pos = camera.position.clone().add(dir.multiplyScalar(distance))
// console.log('Dir:', dir)
// console.log('Pos:', pos)
return pos
}