平移后获取 Object3D 的位置

Getting position of Object3D after panning

这可能是我忽略的简单问题。但我试图在平移后获得 Object3D 的位置。我正在使用 OrbitControls.

我试过object.position,但返回的结果总是一样的。这是一个例子 fiddle:

https://jsfiddle.net/jmg157/b9xxdubc/

我试过 grid.position,但它总是返回 (0, 0, 0),正如我最初设置的那样。我还尝试为 DOM 元素 (container) 设置一个 ID,并使用 jQuery 的 position() 方法,但也没有成功。

所以如果我右键单击并在网格周围平移,我如何才能获得网格在屏幕上的新位置(即顶部、左侧)?

一如既往,非常感谢!

这似乎可以解决问题,感谢这个问题的回答:Converting 3D position to 2d screen position [r69!]

只要控件发生变化(即平移、旋转等),我就调用此方法来获取更新的位置。

function getScreenPosition(object, camera) {

    var vector = new THREE.Vector3();

    var widthHalf = 0.5 * renderer.context.canvas.width;
    var heightHalf = 0.5 * renderer.context.canvas.height;

    object.updateMatrixWorld();
    vector.setFromMatrixPosition(object.matrixWorld);
    vector.project(camera);

    vector.x = (vector.x * widthHalf) + widthHalf;
    vector.y = -(vector.y * heightHalf) + heightHalf;
    return vector;

}

其中 leftvector.xtopvector.y