Skip to content

Instantly share code, notes, and snippets.

@zhangwc
Created December 18, 2013 02:00
Show Gist options
  • Save zhangwc/8016170 to your computer and use it in GitHub Desktop.
Save zhangwc/8016170 to your computer and use it in GitHub Desktop.
threejs vector3d to screen projection
function toScreenXY( object, camera, div ) {
var mat = object.matrixWorld;
var pos = new THREE.Vector3();
pos = mat.multiplyVector3(pos);
projected = pos.clone();
projScreenMat = new THREE.Matrix4();
projScreenMat.multiply( camera.projectionMatrix, camera.matrixWorldInverse );
projScreenMat.multiplyVector3( projected );
var offset = findOffset(div);
return { x: ( projected.x + 1 ) * div.width / 2 + offset.left,
y: ( - projected.y + 1) * div.height / 2 + offset.top };
}
function findOffset(element) {
var pos = new Object();
pos.left = pos.top = 0;
if (element.offsetParent)
{
do
{
pos.left += element.offsetLeft;
pos.top += element.offsetTop;
} while (element = element.offsetParent);
}
return pos;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment