Unprojects a 2D screen space point into 3D space using the inverse of your camera's combined matrix.
var mat4 = require('gl-mat4') var unproject = require('camera-unproject') //projection * view matrix var combinedProjView = mat4.multiply(, projection, view) //now invert it var invProjView = mat4.invert(, combinedProjView) //viewport bounds var viewport = [x, y, width, height] //2D point in screen space //z=0 means "near plane" var point = [123, 52, 0] //vec3 output var output =  unproject(output, point, viewport, invProjView)
vec3 = unproject(out, point, viewport, invCombined)
Unprojects the 2D
point into 3D space using the
viewport bounds (screen x, y, width, height) and
point [x, y, z] uses window coordinates for XY and a range between 0.0 (near plane) and 1.0 (far plane) for Z.
invCombined is typically the invert of the combined
projection * view matrix for your camera.
[x, y, z] result is stored in
out and returned.
MIT, see LICENSE.md for details.