gpt4 book ai didi

javascript - Three.js raycaster.intersectObject() 每次都返回相同的faceIndex

转载 作者:行者123 更新时间:2023-11-28 06:58:16 30 4
gpt4 key购买 nike

我有一个用 THREE.CanvasRenderer() 渲染的 3D 立方体,我试图根据双击立方体的哪一面来打开特定的网页。但是,无论单击哪个面,都会打开相同的页面。一些黑客调试(我不知道如何使用控制台)显示 intersects[ 0 ].faceIndex 始终为“11”。我怎样才能让它返回立方体最近的面。

这是我的 js 中处理这个问题的部分;

document.addEventListener('dblclick', onDocumentMouseDblClick, false);

function onDocumentMouseDblClick(event) {

event.preventDefault();

mouse.x = (event.clientX / renderer.domElement.width) * 2 - 1;
mouse.y = -(event.clientY / renderer.domElement.height) * 2 + 1;

raycaster.setFromCamera(mouse, camera);

var intersects = raycaster.intersectObject(cube);

if (intersects.length > 0) {
if (intersects[0].faceIndex = 1 || 2) {
window.open("About.html", "_self")
//title.innerHTML = intersects[ 0 ].faceIndex;
}
if (intersects[0].faceIndex = 3 || 4) {
window.open("Mondrian.html", "_self")
//title.innerHTML = intersects[ 0 ].faceIndex;
}
if (intersects[0].faceIndex = 5 || 6) {
window.open("page3.html", "_self")
//title.innerHTML = intersects[ 0 ].faceIndex;
}
if (intersects[0].faceIndex = 7 || 8) {
window.open("page4.html", "_self")
//title.innerHTML = intersects[ 0 ].faceIndex;
}
if (intersects[0].faceIndex = 9 || 10) {
window.open("page5.html", "_self")
//title.innerHTML = intersects[ 0 ].faceIndex;
}
if (intersects[0].faceIndex = 11 || 12) {
window.open("page6.html", "_self")
//title.innerHTML = intersects[ 0 ].faceIndex;
}

我首先关注 THREE.js interactive cubes example并阅读 THREE.raycaster documentation表明交叉点应按最近距离排序。我读过一些使用 Vector3 和非投影的 SO 帖子,它们要么不起作用,要么我误解了它们。由于声誉,无法链接它们。

最佳答案

最有可能应该是:

if (intersects[0].faceIndex === 1 || intersects[0].faceIndex === 2) {

关于javascript - Three.js raycaster.intersectObject() 每次都返回相同的faceIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32383304/

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