平移后获取Object3D的位置

时间:2015-03-08 10:18:27

标签: three.js

这可能是我忽略的简单事情。但是我试图在平移之后获得Object3D的位置。我使用OrbitControls

我已尝试object.position,但返回的结果始终相同。这是一个例子:

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

我尝试了grid.position,但同样,它总是返回(0, 0, 0),因为我最初设置了它。我也尝试为DOM元素(container)设置ID,并使用jQuery的position()方法,但也没有运气。

因此,如果我右键单击并平移网格,我如何在屏幕上获得网格的新位置(即顶部,左侧)?

一如既往,非常感谢!

1 个答案:

答案 0 :(得分:1)

由于这个问题的回答,这似乎可以解决问题: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