Один из способов добиться этого — связать пользовательские данные пользователя (URL) с каждым кубом при его создании.
Итак, вот пример кода, как мы можем помещать данные в кубы во время их генерации (в jsfiddle аналогичная логика используется между строками 25-63)
var object = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({
color: Math.random() * 0xffffff }));
object.userData = { URL: "http://stackoverflow.com"};
Теперь здесь мы используем метод под названием raycasting
для обнаружения щелчка мыши, поэтому в принципе, когда мышь щелкнут, мы отбрасываем луч (невидимый) в плоскость, перпендикулярную щелчку, и захватываем все объекты, которые пересекает луч.
Затем мы извлекаем первый объект из списка пересекающихся объектов, потому что он будет ближе всего к экрану.
![изображение для литья лучей](https://i.stack.imgur.com/MgXYZ.png)
Чтобы лучше понять raycasting и выбор объектов, обратитесь к этому руководству.
Теперь при создании кубов мы уже вставили данные, поэтому мы можем просто получить (URL) их из пересекающегося куба и перенаправить пользователя на эту страницу.
Пример кода будет примерно таким (в строке номер 95 в скрипке)
if (intersects.length > 0) {
window.open(intersects[0].object.userData.URL);
}
Здесь нам рабочий jsfille, надеюсь, это поможет
person
Shiva
schedule
11.07.2014