我试图找出一种方法来使用通过Three.js创建的3D模型作为超链接。换句话说,如果我单击一个多维数据集(THREE.CubeGeometry),则希望打开另一个页面。
例如,在此threejs.org示例中,
我该如何更改它,以便在框上单击而不是在框上打小点,从而打开另一个页面,例如超链接?
一种实现方法是在创建每个多维数据集时将自定义userData(URL)与每个多维数据集相关联。
因此,这是一个示例代码,我们如何在生成数据时将其放入多维数据集(在jsfiddle中,第25-63行之间使用了类似的逻辑)
var object = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({
color: Math.random() * 0xffffff }));
object.userData = { URL: "http://stackoverflow.com"};
现在,这里我们使用一种称为“raycasting
检测鼠标单击”的方法,因此,原则上,单击鼠标时,我们在与单击垂直的平面上投射了光线(不可见),并捕获了光线相交的所有对象。
然后,我们从相交的对象列表中检索第一个对象,因为它将最靠近屏幕
为了更好地理解光线投射和对象拾取,请参考本教程。
现在,在创建多维数据集时,我们已经插入了数据,因此我们可以简单地从相交的多维数据集中检索(URL)数据并将用户重定向到该页面。
示例代码将是这样的(在小提琴中的第95行)
if (intersects.length > 0) {
window.open(intersects[0].object.userData.URL);
}
在这里,我们正在工作的jsfille希望对您有所帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句