# How to unproject mouse2D with Orthographic Camera

**URL:** <https://discourse.threejs.org/t/how-to-unproject-mouse2d-with-orthographic-camera/4777>\
**Category:** Questions\
**Tags:** camera, math\
**Created:** [November 3, 2018, 4:47pm UTC](https://discourse.threejs.org/t/how-to-unproject-mouse2d-with-orthographic-camera/4777 "2018-11-03T16:47:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![erickAvSanti](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/erickavsanti/32/809_2.png) [@erickAvSanti](https://discourse.threejs.org/u/erickAvSanti)\
**Post date:** [November 3, 2018, 4:47pm UTC](https://discourse.threejs.org/t/how-to-unproject-mouse2d-with-orthographic-camera/4777/1 "2018-11-03T16:47:49Z")

</div>

Hi guys… someone knows how to project mouse 2D position into World space with orthographic camera ?

---

<div class="post-metadata">

**Author:** ![Mugen87](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mugen87/32/5645_2.png) [@Mugen87](https://discourse.threejs.org/u/Mugen87)\
**Post date:** [November 3, 2018, 5:14pm UTC](https://discourse.threejs.org/t/how-to-unproject-mouse2d-with-orthographic-camera/4777/2 "2018-11-03T17:14:57Z")

</div>

Try this:

```auto
const vector = new THREE.Vector3();
vector.set( mouse.x, mouse.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) );
vector.unproject( camera );

```

BTW: You do not project. You unproject^^.

---

<div class="post-metadata">

**Author:** ![rob-myers](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/rob-myers/32/17590_2.png) [@rob-myers](https://discourse.threejs.org/u/rob-myers)\
**Post date:** [May 11, 2021, 10:25am UTC](https://discourse.threejs.org/t/how-to-unproject-mouse2d-with-orthographic-camera/4777/4 "2021-05-11T10:25:22Z")

</div>

Although perhaps obvious to the initiated, I additionally had to convert to normalized device coordinates.

```javascript
const { left, top, width, height } = e.currentTarget.getBoundingClientRect();
mouseWorld.set(
  ((e.clientX - left) / width) * 2 - 1,
  -((e.clientY - top) / height) * 2 + 1,
  (camera.near + camera.far) / (camera.near - camera.far),
);
mouseWorld.unproject(camera);

```

See also [this stackoverflow thread](https://stackoverflow.com/a/13091694/2917822).
