繁体   English   中英

使用three.js,我可以将信息附加到对象,例如URL吗?

[英]With three.js, can I attach information to an object, such as a URL?

我有一个与three.js相关的webgl问题。 我想将信息附加到一个对象。 例如,当我点击一个对象时,我想检索一些与该对象绑定的信息,如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是如何工作的,或者关于如何将任何信息绑定到对象以便稍后可以调用它。

实际上,您可以将自定义用户数据设置为Three.js中的对象。 这里的关键是Object3D,它是所有场景图形对象的基础。 文档有一个叫做的属性

Object3D.userData; 

这可以加载您选择的对象,当Raycaster类检索您的交叉时,您可以直接在该点访问它。

初始化或运行时的setter

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

碰撞中的吸气剂

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM