问题标签 [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 投票
1 回答
6512 浏览

math - 反向透视投影

我正在使用

将屏幕空间坐标转换为世界空间坐标。我以为

将转换为远平面上的一个点,而

转换为近平面上的一个点,并连接线我可以查询与线相交的视锥体中的所有对象。转换后,我将结果点除以它们各自的 .w 分量。这适用于远平面,但近平面上的点不知何故被转换为世界空间原点。

我认为这与我输入逆投影的 1 的 w 分量有关,因为通常它在投影之前是 1,而不是之后,我正在做逆投影。我究竟做错了什么?

0 投票
3 回答
2334 浏览

python - 使用 Pyglet 进行 OpenGL 拾取

我正在尝试使用 Pyglet 的 OpenGL 包装器实现拾取,但在将C 教程转换为 Python 时遇到了麻烦。具体如下部分。

我不确定如何打开声明 GLuint 或 GLint 的数组,以便 glSelectBuffer 和 glPickMatrix 工作。有谁知道如何在 Python 中使用 Pyglet 做到这一点?谢谢。

0 投票
2 回答
2008 浏览

c++ - OpenGL 3D 选择

我正在尝试创建一个 3D 机器人,当单击某些身体部位时应该执行某些操作。我已经成功(某种程度上)实现了拾取,如果您单击任何 x 平面部分,它会记录一次命中,但不会记录其他任何地方。也就是说,它没有记录深度,如果你点击它的方形头部,你只能通过点击头部的前部(面对你)来记录一次命中。显然,我并不完全理解挑选和选择,并且我草率地试图将我对 2D 选择的了解转录为 3D(我的老师就像石头一样乐于助人),但我遗漏了一些东西或者没有改变与深度有关的东西。谁能帮我吗?以下是相关功能。

0 投票
2 回答
839 浏览

java - 在 java 2d 中挑选

我正在使用 java2d 绘制一个简单的图形,此时我通过为每个对象/形状调用 contains(MousePoint) 来实现拾取,这有效但线性缩放。

有没有更有效的方法在 java2d 中进行挑选?

0 投票
6 回答
28963 浏览

math - 实现光线拾取

我有一个使用 directx 和 openGL 的渲染器和一个 3d 场景。视口和窗口的尺寸相同。

如何以独立于平台的方式实现拾取给定的鼠标坐标 x 和 y?

0 投票
1 回答
3127 浏览

opengl - 使用 OpenGL 着色语言进行选择

我试图找出选择使用着色器呈现的信息的最佳方法。窗口管理器缓冲区(窗口)用于输出渲染。在用户事件中,我应该选择渲染的几何图形。使用 gluPick 很容易,但我试图只使用着色器来选择。

着色器的灵活性并不能帮助我找到正确的解决方案。我找到了以下解决方案:

  • 使用系统提供的缓冲区进行渲染(实际上是使用颜色)。使用 glScissor 限制特定区域的渲染,并使用 glReadPixels 获取颜色,映射几何标识符
  • 使用单独的帧缓冲区对象进行渲染。需要定义渲染缓冲区格式。也许我可以使用普通整数来输入名字吗?
  • 使用帧缓冲区对象进行渲染,用于渲染和拾取。一个包含渲染名称的附加渲染缓冲区对象。

似乎第二种解决方案是最好的,因为它不会改变窗口缓冲区,并且可以定义自定义方式来指定几何名称。

有什么建议吗?

PS:

由于在片段着色器中我声明了一个 vec4 数组来定义片段数据,我如何设置一个帧缓冲区来保存一个只有 R 组件的渲染缓冲区,并以大小整数内部格式存储?

是否可以将片段着色器输出变量与特定的附加渲染缓冲区链接?

0 投票
1 回答
619 浏览

opengl - glPushName + glPopName 堆栈上溢和下溢

谁能解释我如何使用 glPushName 和 glPopName。我喜欢使用它们而不是 glLoadName,但我总是得到 GL_STACK_OVERFLOW 和 GL_STACK_UNDERFLOW 错误。(首先,下然后溢出)。

示例代码也会对我有所帮助。

注意#1:我的 Rendering/selection_rednering 代码由多个 glBegin(...)/glEnd() 块组成,如果这是任何问题加上各种旋转和变换。

注意#2:我知道 GL 选择/拾取已被弃用,但我必须在不久前使用 OpenGL2.1 开发的应用程序中实现它。

0 投票
4 回答
2422 浏览

opengl - 如何确定何时在 OpenGL 中在屏幕上绘制对象?

我对 OpenGL 非常陌生。我正在编写一个在屏幕上显示飞行 3D 文本的程序。我需要知道某些文本字符串何时出现(绘制)到屏幕上并且对用户可见。程序需要识别显示哪些文本字符串。(注意:虽然我的问题涉及文本,但它可以推广到任何 OpenGL 对象)。

起初,我开始认为我可以使用 OpenGL 的选择机制,但到目前为止,我只看到了选择区域专注于某种用户交互的示例。我想知道整个窗口区域上显示了哪些对象。这让我觉得我走错了路……我错过了什么吗?

欢迎任何建议。

0 投票
1 回答
3683 浏览

c# - 在 OpenGl 中拾取对象,使用 C#

我正在使用 C#(使用 TaoFrame 工作)使用 opengl,问题是我想在屏幕上绘制 2 个对象(例如矩形),我的问题的主要目标是,如何按下鼠标按钮以便我可以选择一个物体让它移动。

基本上我只需要知道如何选择一个对象即可:

关于我的项目的信息:

我正在使用 taoframe 工作库,opengl 视图端口只是主控制窗口中的一个小面板,它不是全屏的。

这个函数是主要的opengl绘图函数:

}

这个函数是鼠标处理程序:

实际选择 Vodo 在这里完成:

这个函数 ProcessHits 所以我可以得到对象的名称

1-ProcessHits 函数中的 Result 值始终为 1,它更喜欢 object1,所以如果我按下空间,即使没有什么可供选择,我也会得到对象 1,所以我错过了一些代码吗?.

2-选择函数中的命中值总是2?我不知道为什么?

0 投票
1 回答
1863 浏览

iphone - iPhone 上的 OpenGL ES 颜色拾取

我正在研究 iPhone 上的 3D,我已经设法在设备上获得了一个 3D 立方体,但想添加交互性,例如触摸一张脸会触发特定事件,而另一张脸会触发不同的事件。我宁愿避开光线拾取,因为这会增加我不希望在我的应用程序中出现的额外复杂性。

我已经阅读了很多颜色挑选教程,但似乎在网络上的任何地方都没有任何 iPhone 特定的教程或示例代码。

我的主要问题是将独特的彩色对象绘制到后缓冲区,将纹理对象绘制到前缓冲区,从不向用户显示独特的颜色对象,而是检测从后缓冲区触摸的像素的颜色。

所以我的问题是任何人都可以指出我的 Objective-C 教程的方向或发布一些示例代码吗?

任何帮助或建议将不胜感激。