gpt4 book ai didi

javascript - Threejs - 几何坐标系到屏幕坐标系

转载 作者:行者123 更新时间:2023-12-02 14:20:43 25 4
gpt4 key购买 nike

平面宽度为 800px:

geometry = new THREE.PlaneGeometry( 800, 20, 0, 0 );

material = new THREE.MeshBasicMaterial({
color:0xFFFFFF,
side:THREE.DoubleSide
});

mesh = new THREE.Mesh(geometry, material);
mesh.updateMatrixWorld();
scene.add(mesh);

当我尝试操纵它时,使坐标系变成其他垃圾

mesh.geometry.vertices[0].setY(0);
mesh.geometry.vertices[0].setX(0);
mesh.geometry.vertices[0].setZ(0);

mesh.geometry.vertices[1].setY(0);
mesh.geometry.vertices[1].setX(800);
mesh.geometry.vertices[1].setZ(0);

mesh.geometry.vertices[2].setY(20);
mesh.geometry.vertices[2].setX(0);
mesh.geometry.vertices[2].setZ(0);

mesh.geometry.vertices[3].setY(20);
mesh.geometry.vertices[3].setX(800);
mesh.geometry.vertices[3].setZ(0);

mesh.geometry.verticesNeedUpdate = true;

我可以将几何对象的坐标系调整到相机框架的坐标系吗?

0 像素 = 0

最佳答案

如果这不是您要找的内容,我深表歉意。如果您的意思是需要将 3d 世界中的 vector3 位置转换为其在屏幕上的 2d 像素位置,下面是一个典型的转换:

    getScreenTranslation = function (obj, renderer, camera) {
var vector = new THREE.Vector3();
var widthHalf = 0.5 * renderer.context.canvas.width;
var heightHalf = 0.5 * renderer.context.canvas.height;

vector.setFromMatrixPosition(obj.matrixWorld);
vector.project(camera);
vector.x = vector.x * widthHalf + widthHalf;
vector.y = -(vector.y * heightHalf) + heightHalf;
return {
x: vector.x,
y: vector.y
};
};

请记住,您可能需要补偿 Canvas 元素在网页中的位置。

关于javascript - Threejs - 几何坐标系到屏幕坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38664579/

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