问题标签 [ray-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 回答
3077 浏览

android - 关于 Android 中 3D Picking 的问题(使用 OpenGL ES 2)

我需要一些关于 3D 拾取的帮助。

我正在使用它在这里的工作方式。简而言之,我所拥有的是:

对于 2 和 3,我不知道它应该是什么(我把 1,-1 就像参考一样,它不起作用)

然后,对于我的根对象(仅遵循伪代码):

这就是我所拥有的,但它不起作用,我收到的 outPoint 甚至不接近我想点击的点。我已经在网上搜索了一个多星期。但不知道如何解决它。帮助!

0 投票
0 回答
1541 浏览

c# - SkinnedModel 上的 XNA 三角形拾取

我的游戏使用 SkinnedModel 管道和 AnimationPlayer 来加载和显示模型。我通过从管道中构建顶点和索引列表来实现使用三角形的光线拾取。这可行,但是索引是静态的,仅适用于模型的初始姿势(当它走路时,手臂来回移动,它不够好,因为拾取只看到模型在一个位置)

我通过在运行时获取顶点和索引将其更改为使用三角形进行光线拾取,然后它能够​​通过 AnimationPlayer 提供的 boneTransforms 转换顶点。我现在遇到的问题是我不太清楚在收集顶点时如何转换它们

我将在下面发布代码,但我很确定它与以下行有关:Matrix worldMatrix = Orientation * Matrix.CreateTranslation(Position); 然后稍后在获取特定顶点时: vert = Vector3.Transform(vert, boneTransforms[mesh.ParentBone.Index] * worldMatrix);

我发现省略 *Matrix.CreateTranslation(Position) 会使顶点接近,但不太正确。我不太擅长处理 3d 空间和变换,因此将不胜感激。

代码:

//这是我从类模型中获取顶点的函数

//这里是获取pick ray的函数

//这里有两个检查交叉点的函数。

//最后,如果有帮助的话,我的更新部分使这一切发生

0 投票
1 回答
9456 浏览

opengl - 使用光线投射的对象拾取

我的光线投射算法在检测盒子内的鼠标命中时一直存在不准确的问题。我完全不知道如何正确解决这个问题,而且它已经困扰了我好几个星期。

这个问题最容易用一张图片来描述(以 [0, 0, -30] 为中心的框):

问题截图

黑线代表实际绘制的命中框,绿框代表实际看起来被命中的地方。注意它是如何偏移的(如果框离原点更远,它似乎会变大)并且比绘制的碰撞框略小。

这是一些相关的代码,

光线盒演员表:

鼠标到射线:

我尝试将实际光线绘制为一条线,它似乎正确地与绘制的框相交。

我通过框位置减去所有点和射线原点/方向来部分解决了偏移问题,但我不知道为什么会这样,并且命中框的大小仍然不准确。

有什么想法/替代方法吗?如果需要,我还有其他代码可以提供。

0 投票
1 回答
1686 浏览

java - OpenGL ES on android 微调光线拾取代码

我已经使用 min3d 和我在网上找到的一些代码实现了光线拾取,但是当我实现它时,我注意到它有时有点偏离,这意味着当我点击一个框时,有时会选择错误的那个。有时被选中的那个甚至不在屏幕上。这首先需要大量代码才能实现,但我调用的主要两种方法如下:

现在我也尝试实现截锥体剔除,但这样做会减慢速度,因为我没有做太多优化它并且它没有在本地运行。但是,如果有人可以看,也许能给我一些关于如何使它更准确的指示,那就太棒了。这里我称之为采摘方法。

0 投票
1 回答
3781 浏览

python - 使用 glGetFloatv 检索 pyglet 中的模型视图矩阵

我正在使用 pyglet 在 python 中进行 3d 可视化,并且需要检索模型视图和投影矩阵来进行一些挑选。我使用以下方法定义我的窗口:

然后我定义了我所有的窗口事件:

当我点击时,它会打印...

和崩溃。使用 GL_MODELVIEW_MATRIX 调用 glGetFloatv 应该返回 16 个值,我不确定如何处理。我尝试定义 a = GLfloat*16 但出现以下错误:

如何检索这些矩阵?

0 投票
1 回答
4174 浏览

android - OpenGL:gluUnProject 返回错误的坐标

我这样设置我的场景(Android 应用程序,OpenGL ES):

场景渲染得很好,它在 z=-10 处包含四边形,在 z=-30 处包含一个巨大的背景四边形。我现在正在尝试实现光线拾取,就像这样(取自这个线程

然后以这种方式测试屏幕上的点击:

预期行为:返回的 X、Y 坐标类似于深度 = -30 (BACKGROUND_Z) 处的敲击点

它的实际作用:在屏幕中心点击时返回正确的 X、Y 坐标;但是屏幕中心和点击点之间的距离没有被正确解释——它似乎被某些因素缩小了。例如,点击屏幕中心会给出 [0,0],点击屏幕左边缘应该给出 ~[-3600,0],但会给出 [-1.13,0]。平移视图以使先前触摸的点位于屏幕中心会给出 ~[-3600,0],因为它应该。

这可能是由于场景缩放了 0.001 造成的吗?我已经测试了各种配置(在 gluLookAt 之前移动缩放,或者完全删除它),但问题仍然存在:(


左屏幕边缘触摸的示例数据输出:

传递给 unproject() 的接触点:

投影矩阵:

模型矩阵:

unproject() 输出:

我想到的是返回的 z 值似乎是错误的——传递给 unproject() 的 z 值是 -30(如上所述)。

0 投票
2 回答
1574 浏览

ios - OpenGL ES 2.0 光线拾取,远点

请帮我挑选光线

_modelViewProjectionMatrix 和 _normalMatrix 放入着色器

并在联系结束

我怎样才能得到远点?我的 near_point 是否正确?

谢谢!

0 投票
1 回答
8948 浏览

java - 相机俯仰/偏航到方向矢量

我想做的是从我的相机投射光线。我知道相机的 x、y 和 z 坐标,以及它的俯仰和偏航角。我需要计算它的方向向量,以便将它传递给我的光线追踪算法。

相机的向上向量是 (0, 1, 0)。“俯仰”,从摄像机的角度来看,是上下看。

(我宁愿不使用矩阵,但如果必须,我会使用)

0 投票
1 回答
1153 浏览

java-3d - java3d 拾取对象

我正在构建一个 java3d GUI,用户可以使用它创建自定义场景图,而无需知道代码,我想使用鼠标选择特定的框,并且我希望能够移动它们......所以我需要选择..

我的场景图中有 2 个盒子和 2 个球体。我只想选择其中一个,并知道选择了哪一个。我可以找出单击了哪种类型的对象,例如,如果我单击特定的球体或框,我可以找到它,但是我不知道如何找出它是哪个对象,因此我可以对其进行处理。

谁能建议我解决这个问题?我只想知道选择了哪个对象。就这样。

0 投票
1 回答
2356 浏览

android - 如何通过 glreadpixels 获取颜色?

我正在尝试在 Android 屏幕上获取触摸点的颜色。但它只显示 RGB = (0, 0, 0) 值。我已经搜索过其他网站。它说我应该在下面添加一些代码,但它没有改变任何东西。

所以任何建议都会提前感谢。