С тэгом. Js, могу ли я прикрепить информацию к объекту, например URL?

У меня есть вопрос webgl, связанный с three.js. Я хотел бы добавить информацию к объекту. Например, когда я нажимаю на объект, я хотел бы получить некоторую информацию, привязанную к объекту, например URL-адрес, а затем запустить функцию, используя эту информацию.

Код, который я использую для поиска объекта:

    var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);
    projector.unprojectVector(vector, camera);

    var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());

    var intersects = raycaster.intersectObjects(objects);

    intersects[0].object.material.color.setHex(Math.random() * 0xffffff);

Последняя строка - это то, как я сейчас манипулирую объектом. Массив objects представляет собой просто массив всех объектов. Проблема в том, что я недостаточно знаю о том, как работает Raycaster или intersectObjects, или достаточно о том, как связать любую информацию с объектом, чтобы ее можно было позже вспомнить.

Ответы

Ответ 1

действительно вы можете установить пользовательские данные для объекта в файле Three.js. Ключ здесь - Object3D, который является основой для всех объектов графа сцены. Документы имеют свойство

Object3D.userData; 

Это может быть загружено с помощью объекта по вашему выбору, и когда класс Raycaster получает ваше пересечение, вы можете просто получить к нему доступ непосредственно в этой точке.

Сеттер во время init или runtime

Object3D.userData = { URL: "http://myurl.com" };

Getter on Collision

window.location = intersects[0].object.userData.URL;