javascript - three.js 3d 模型作为超链接

标签 javascript hyperlink 3d three.js raycasting

我正在尝试找出一种方法,将通过 Three.js 创建的 3D 模型用作超链接。换句话说,如果我单击一个立方体(THREE.CubeGeometry),我希望打开另一个页面。

例如,在 this threejs.org example 中,

我怎样才能改变它,而不是在方框上制作小点,点击方框会打开另一个页面,比如超链接?

最佳答案

实现它的一种方法是在创建每个多维数据集时将自定义 userData(URL) 与它相关联。

所以这是一个示例代码,我们如何在生成数据时将数据放入多维数据集(在 jsfiddle 中,第 25-63 行之间使用了类似的逻辑)

var object = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({
            color: Math.random() * 0xffffff }));  

object.userData = { URL: "http://stackoverflow.com"};

现在我们使用一种称为光线转换的方法来检测鼠标点击,所以原则上当鼠标被点击时,我们在垂直于点击的平面上转换一条光线(不可见),我们捕获所有射线相交的对象。

然后我们从相交对象列表中检索第一个对象,因为它最靠近屏幕

ray casting image

要更好地理解光线转换和对象拾取,请参阅 this tutorial .

现在,在创建多维数据集时,我们已经插入了数据,因此我们可以简单地从相交的多维数据集中检索 (URL) 数据并将用户重定向到该页面。

示例代码将是这样的(在 fiddle 的第 95 行)

if (intersects.length > 0) {
        window.open(intersects[0].object.userData.URL);
    }

这里是我们一个正在工作的 jsfille,希望它能有所帮助

JSFiddle Link

关于javascript - three.js 3d 模型作为超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690731/

相关文章:

javascript - 是否可以在不使用 React 应用程序的情况下使用 React-Speech-Recognition?

javascript - 是否可以使用Ajax进行文件上传?

python - 3D 中的 matplotlib 等高线标签

java - 将 3D 点投影到 2D 屏幕坐标

javascript - 如何从被 GLSL 着色器置换的 Three.js 几何体中导出 OBJ?

javascript - RegExp 与 .html 扩展名完美配合,但不适用于 .php 扩展名

乱序执行的 Javascript 代码,我可以修复它吗?

visual-studio-2010 - 将指向另一个文件 (Word) 的超链接插入到 Visual Studio 代码文件中

excel - VBA 从形状运行宏和屏幕提示(或工具提示)。我无法获得我发现工作的代码

python - 在 python 中创建超链接