This is the code I’m using for creating the meshes:
const depth = 0.1;
const width = 0.017;
for (let i = 0; i < 10; i++) {
const geometry = new THREE.BufferGeometry();
const v1 = [-0.075 + i * width, 0.06, 0];
const v2 = [-0.075, 0.06, -depth];
const v3 = [
-0.075 + (i + 1) * width,
0.06,
-depth,
];
const v4 = [
-0.075 + (i + 1) * width,
0.06,
0,
];
const v5 = [v1[0], 0.15, v1[2]];
const v6 = [v2[0], 0.15, v2[2]];
const v7 = [v3[0], 0.15, v3[2]];
const v8 = [v4[0], 0.15, v4[2]];
const vertices = new Float32Array([
//bottom
...v1,
...v2,
...v3,
...v3,
...v4,
...v1,
//top
...v5,
...v6,
...v7,
...v7,
...v8,
...v5,
//north
...v1,
...v4,
...v5,
...v4,
...v5,
...v8,
//east
...v1,
...v2,
...v5,
...v5,
...v6,
...v2,
//south
...v2,
...v3,
...v6,
...v6,
...v7,
...v3,
//west
...v3,
...v4,
...v7,
...v7,
...v8,
...v4,
]);
geometry.setAttribute(
"position",
new THREE.BufferAttribute(vertices, 3)
);
const material =
new THREE.MeshBasicMaterial({
color: 0xff0000,
side: 2,
transparent: true,
opacity: 0,
});
const mesh = new THREE.Mesh(
geometry,
material
);
const box = new THREE.BoxHelper(
mesh,
0xff0000
);
console.log(box);
scene.add(mesh);
// scene.add(box);
meshes.push(mesh);
boxes.push(box);
console.log(mesh.id, box.id);
}
This is the final output: when using pointermove or mousemove event and hovering the mouse over the same box the console prints different ids!!
Any explanations for this matter??
window.addEventListener("pointermove", () => {
const intersections =
raycaster.intersectObjects(meshes, true);
if (intersections.length > 0) {
const object = intersections[0];
for (const element of intersections) {
element.object.material.opacity = 0;
}
console.log(object.object.id);
}
});
I’m trying to turn on the material opacity for the box that raycast intersects.