问题标签 [mouse-picking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
475 浏览

c++ - 询问D3DXIntersect函数:(

这是我挑选的示例源代码。我有个问题。

如果我创建三个 3D 对象。所以挑选第三个对象。第一个,第二个对象不起作用。

如果我只创建一个对象。采摘效果很好!

如果我创建两个对象。拾取不是第一个对象,而是第二个对象。

只有创建最后一个对象才能很好地工作。

我不明白为什么会出现这个问题。

请给我一些建议。

0 投票
0 回答
1632 浏览

three.js - Three.js中球体上的纬度经度

我有一个可以向任何方向旋转的threeJS 地球仪。目前,无论旋转如何,我都可以读取位于地球中心的正确经度和纬度。地球仪的方向使得 raycaster.ray.origin.x 和 raycaster.ray.origin.y 在本初子午线和赤道交叉处读取 0,0。raycaster.ray.origin.z 读取 500。

然而,我试图到达的地方是根据鼠标在地球上单击的位置确定纬度和经度。我试图根据 raycaster.ray.direction.x、y、z 计算它,但无论我是否在对象上,我都会得到读数。

如果我从原点 0,0 读取方向,我的 raycaster.ray.direction.x 和 y 都将读取 0,z 将读取 -100(我将它们乘以 100 以使用更好的数字)。在圆周上,X 将在地球的顶部和底部读取 0,从左到右读取 -40 到 40。Y 将从上到下读取 40 到 - 40,从左到右读取 0,Z 方向将在整个圆周上为 -90。然而,数字将继续增加/减少,直到屏幕边缘。

当地球朝向北极/南极时也是如此,但是,中心的 y 在圆周上是 -100/100 和 -90/90,x 将是 - 100/100 绕地球四分之一和 -90/90 围绕圆周。

是否有一种方法可以获取我单击的位置的值,它只是在对象上而不是整个屏幕上?我无法理解如何将方向与原点相关联。我觉得我到了某个地方,但然后就离开了困惑。这是我得到的一切。任何帮助将不胜感激。

0 投票
1 回答
963 浏览

c++ - 使用屏幕外渲染来选择鼠标?

我有很多简单对象的 3d 场景(可能数量很多),所以我认为使用光线跟踪通过鼠标拾取对象并不是一个好主意。

我想做这样的事情:

  1. 将所有这些对象渲染到一些opengl屏幕外缓冲区,使用指向当前对象的指针而不是他的颜色

  2. 使用真实颜色将相同的场景渲染到屏幕上

  3. 当用户选择具有(x,y)屏幕坐标的点时,我从屏幕外缓冲区(从相应位置)获取值并有一个指向对象的指针

可能吗?如果是的话——我可以为“用指针绘图”选择什么类型的缓冲区?

0 投票
1 回答
162 浏览

webgl - 如何在 Dart WebGL 应用程序中加速波段选择工具

手头的任务是向 Dart WebGL 应用程序添加波段选择工具。该工具将用于通过拖动鼠标在多个对象上绘制一个矩形。因此,可以在单个用户操作中选择/挑选多个对象。我目前正在使用 gl.readPixels() 从屏幕外渲染缓冲区中读取颜色。问题是,当一个大区域被波段选择时, gl.readPixels() 会发出数百万像素。扫描如此大量的颜色会浪费宝贵的时间来定位少数物体。

请任何人指出使用 Dart+WebGL 对多个对象进行波段选择的可能更快的方法。

作为参考,我在下面显示了波段选择工具的当前主要部分。

0 投票
1 回答
1005 浏览

opengl - GLSL - 片段着色器 - 每个三角形都有不同的颜色

我想编写一个着色器程序,它将网格的每个三角形渲染成不同的颜色(所以我可以选择一个三角形)。我尝试使用 gl_PrimitiveID,但它总是返回 0,例如:

此着色器始终呈现黑色。

0 投票
3 回答
7350 浏览

opengl - 如何使用 SceneKit 在场景中找到我的鼠标点?

我已经在 SceneKit 中设置了一个场景,并发布了一个命中测试来选择一个项目。但是,我希望能够沿着我场景中的平面移动该项目。我继续收到鼠标拖动事件,但不知道如何将那些 2D 坐标转换为场景中的 3D 坐标。

我的情况很简单。相机位于 0, 0, 50 并指向 0, 0, 0。我只想沿着 z 平面拖动对象,z 值为 0。

命中测试就像一个魅力,但我如何将鼠标点从拖动事件转换到场景中我正在拖动的 3D 对象的新位置?

0 投票
1 回答
3818 浏览

c++ - 如何将屏幕上的鼠标坐标转换为 3D 坐标

我正在使用 C++ 中的 GLUT 创建一个 3D 应用程序。

现在,我想实现一个类似的方法:

Vector3* MyClass::get3DObjectfromMouse(int mouseX, int mouseY);

我怎样才能实现这个方法?

0 投票
1 回答
237 浏览

actionscript-3 - Away3d 网格没有得到 mouseClick 事件

我只是想在飞机上获取鼠标的坐标,但鼠标事件并没有触发。

我在本教程中获得的away3d 之上还有一个starling 实例,我相信那里存在问题。这是我的代码:

}

0 投票
0 回答
234 浏览

java - 如何将鼠标坐标转换为世界坐标

我想做的事

挑选一个对象。

要求/条件

  • 我的鼠标总是在屏幕中央。
  • 只选择第一个/最近的对象

我想知道的

如何将我的鼠标坐标(实际上是 0,0,因为鼠标锁定在中间)转换为世界坐标?

如何获得实际的视图方向?

我认为我必须做的

伪代码

0 投票
1 回答
552 浏览

opengl - 没有W的屏幕位置未投影

我了解如何取消投影的基本概念:

但这并没有正确采用 W 坐标 - 当我将事物从世界空间渲染到屏幕空间时W != 1,由于透视变换(https://www.opengl.org/sdk/docs/man2/ xhtml/gluPerspective.xml )。当我从屏幕空间转换回世界空间时(假设为W=1),对象位于错误的位置。

据我了解,W是所有其他坐标的比例因子。如果是这种情况,这是否意味着屏幕矢量(0, 0, -1, 1)并且(0, 0, -2, 2)将映射到相同的窗口坐标,并且如果没有进一步的工作,非投影不一定会产生独特的结果?

谢谢!