天天看点

Three.js 世界坐标转换屏幕坐标偏差问题

/*     world position to screen position
*     v3: Vector3
*     camera: Camera
* */
function wordPosToScreen(object,camera) {
    var vector = new THREE.Vector3();
    var widthHalf = 0.5 * window.innerWidth;
    var heightHalf = 0.5 * window.innerHeight;
    object.updateMatrixWorld();        /*这段代码是重要的在获取前先更新下对象的世界坐标/世界矩阵*/
    vector.setFromMatrixPosition(object.matrixWorld);
    vector.project(camera);
    vector.x = (vector.x * widthHalf) + widthHalf;
    vector.y = -(vector.y * heightHalf) + heightHalf;
    return {
        x: vector.x,
        y: vector.y
    };
}
           

继续阅读