gpt4 book ai didi

javascript - 在 ThreeJS 中将 2D 鼠标坐标转换为世界 XZ 坐标

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:09 26 4
gpt4 key购买 nike

我需要将鼠标屏幕坐标转换为 XZ 平面上的 ThreeJS 世界坐标。

我找到了将鼠标位置转换为 XY 世界坐标的有效代码,但我不知道如何修改它以获得 XZ 坐标:

var vector = new THREE.Vector3();
vector.set((event.clientX / window.innerWidth) * 2 - 1, - (event.clientY / window.innerHeight) * 2 + 1, 0.5);
vector.unproject(camera);
var dir = vector.sub(camera.position).normalize();
var distance = - camera.position.z / dir.z;
var position = camera.position.clone().add(dir.multiplyScalar(distance));
console.log("x: " + position.x + " y: " + position.y);

最佳答案

通过修改从这里找到的代码得到它: http://www.osd.net/blog/web-development/3d-board-game-in-a-browser-using-webgl-and-three-js-part-3/

                var x, y;
//
if (event.offsetX !== undefined) {
x = event.offsetX;
y = event.offsetY;
} else {
x = event.layerX;
y = event.layerY;
}

var pos = new THREE.Vector3(0, 0, 0);
var pMouse = new THREE.Vector3(
( event.clientX / window.innerWidth ) * 2 - 1,
- ( event.clientY / window.innerHeight ) * 2 + 1,
1);
//
var projector = new THREE.Projector();
projector.unprojectVector(pMouse, camera);

var cam = camera.position;
var m = pMouse.y / ( pMouse.y - cam.y );

pos.x = pMouse.x + ( cam.x - pMouse.x ) * m;
pos.z = pMouse.z + ( cam.z - pMouse.z ) * m;

关于javascript - 在 ThreeJS 中将 2D 鼠标坐标转换为世界 XZ 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32973060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com