首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用three.js,我可以将信息附加到对象上吗?

使用three.js,我可以将信息附加到对象上吗?
EN

Stack Overflow用户
提问于 2013-08-20 00:59:07
回答 1查看 11.4K关注 0票数 21

我有一个关于three.js的问题。我想将信息附加到对象上。例如,当我单击一个对象时,我希望检索一些与该对象绑定的信息,如URL,然后使用该信息运行函数。

我用来查找对象的代码是:

代码语言:javascript
复制
    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的工作原理,也不太了解如何将任何信息绑定到一个对象上,以便以后可以调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-20 01:14:46

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

代码语言:javascript
复制
Object3D.userData; 

这可以用你选择的对象来加载,当Raycaster类检索到你的交集时,你可以直接在那个点访问它。

初始化或运行时的Setter

代码语言:javascript
复制
Object3D.userData = { URL: "http://myurl.com" };

碰撞时的Getter

代码语言:javascript
复制
window.location = intersects[0].object.userData.URL;
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18319154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档