当我将鼠标悬停在Three.js元素(即sphere)上时,如何创建工具提示。
我有一个3D散点图,每次将鼠标悬停在散点图中的球体上时,我都希望弹出工具提示。
任何帮助将是有用的。
预先感谢
答案 0 :(得分:1)
您正在寻找的被称为“光线投射”,您将找到更多的信息in the documentation和the examples。
通过射线广播,您将获得有关当前光标光标位于哪个对象的信息。基于此,您可以将数据填充到工具提示中并使用鼠标位置进行定位(或者,使用like this来计算3d对象的屏幕位置并将工具提示定位在此处)。
答案 1 :(得分:0)
我从MartinSchuhfuß的答案开始,以此为基础:
您正在寻找的东西称为“光线投射”,您将找到更多信息in the documentation和the examples。
通过光线投射,您将获得有关当前光标光标位于哪个对象的信息。基于此,您可以将数据填充到工具提示中,并使用鼠标定位它。
或者,用like this来计算3d对象的屏幕位置,并将DOM工具提示放置在屏幕空间坐标中。
使用DOM制作工具提示是最简单的方法,但是缺点是,如果您想在工具提示中进行诸如增加光泽,阴影,凹凸贴图等操作,则无法获得WebGL渲染的好处。 / p>
使用like this来计算3d对象的屏幕位置,并将工具提示放置在屏幕空间坐标中。
然后,使用您需要弄清楚如何相对于Three.js相机定位内容,以便项目的大小和位置在屏幕空间中。为此,请参阅以下Three.js论坛帖子:
一旦确定了如何在Three.js中绘制屏幕空间,就可以使用上一节 Making it with DOM
中提到的技术来确定要在屏幕空间中的哪个位置绘制WebGL工具提示。
要绘制WebGL工具提示,您有一些选择:
renderOrder
,以使UI内容始终呈现在顶部。参见three.js: how to control rendering order renderOrder
技术(或类似方法,请参见前面的要点)链接)以确保此四边形在所有内容的顶部都呈现。
这三种可能性中的第一种可能最快,但最困难。这三种可能性中的最后一种可能是最简单但最慢的(但对于您的情况,这并不重要,具体取决于您要绘制的内容)。
我没有列出所有可能的选项。还有其他方法可以做到!有人可以随时对其进行编辑,以添加更多可能的方式或更多细节。
也可以随意提出其他问题,那么也许我可以扩大答案。