sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-12-02 14:20:43 26 4
mua khóa gpt4 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

1 Câu trả lời

如果这不是您要找的内容,我深表歉意。如果您的意思是需要将 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;
trở lại {
x: vector.x,
y: vector.y
};
};

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

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

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com