问题标签 [raycasting]

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 回答
1440 浏览

java - 从java LWJGL中的字节数组中绘制

我正在使用 java、LWJGL 和 Slick2D 创建一个光线投射器。问题是我似乎无法弄清楚如何正确地从这个字节数组中绘制。

这就是我将纹理放入颜色缓冲区的方式。这行得通。所有的 RGB 值与纹理中的值相同。

现在这是我创建屏幕缓冲区并为其分配像素的方法:

这是我绘制缓冲区的方式:

现在,假设我创建了一个由 3 条垂直线组成的纹理:红色、绿色和蓝色。它将使红色变成白色,其他变成黑色,并且在距离越远的纹理中添加一些颜色。

这是它的样子。绘制文件是原始纹理,右侧窗口是光线投射器。

图片

有谁知道如何解决这个问题?

0 投票
1 回答
406 浏览

javascript - 鼠标在哪个体素上?

我计算从前到后的线。在我的代码中,它从frontback

然后我尝试在 3D 中使用Bresenham 的线算法来访问该线上的体素:

这经常会遗漏一些体素;0,0,0->1,1,1例如,当相机位于 时,一条穿过位于 的体素的线会丢失10,10,10

我的怀疑是我使用了Math.floor,但我应该使用什么来代替它?向 0 或远离 0 舍入只会移动我的失误,并不能真正解决它们。

如何准确访问鼠标光标射线经过的所有体素?

0 投票
1 回答
1514 浏览

three.js - Three.js Raycaster on WebWorker

我在基于网络的赛车游戏中使用 Three.js Raycaster 方法。但是由于计算量大,它消耗了大量的 CPU 周期,因此导致 fps 下降。我正在考虑在 WebWorker 上导出 Three.js 的 RayCaster 方法。谁能指导我如何完成它,或者有可能吗?

0 投票
1 回答
1142 浏览

html - 在 three.js 中针对“子场景”进行光线投射

所以我正在使用three.js 示例中的webgl_interactive_cubes.html,我有一个相对简单的问题:是否可以测试光线与对象的子对象的交集。

例如,如果我执行以下操作:

当我打电话

它将与这些对象相交。但是,如果我首先像这样创建一个“子场景”:

然后将所有这些对象添加到 subScene 而不是场景中,将不再发生交集。

是否有可能使场景和子场景中的所有对象相交(在最终项目中,我希望有多层嵌套的子场景)或者如果我使用光线投射,我应该尝试将所有对象保持在同一个场景中?

提前感谢您的时间,

艾萨克

0 投票
1 回答
3989 浏览

three.js - 如何在three.js中的位置半径内获取其他3D对象

我在 three.js 中有一个 3D 场景,我需要在其中获取源对象 X 范围内的对象数组。目前,我正在使用的示例是在 for 循环中利用光线投射,该循环迭代场景中存在的“可碰撞对象”数组。我觉得必须有更好的方法来处理这个问题,因为如果数组中的每个对象都必须从自身投射到数组中的每个其他对象,这种方法会成倍地复杂。随着可碰撞对象数组的增长,这会对性能产生巨大影响。

你可以在这里看到这个的 JSfiddle。

如果您将指示的变量更改为更大的数字,例如 200,那么您会看到处理时间开始失控。我觉得必须有一种更简单的方法来减少这样做的数组,所以我查看了 Three.js 的 Raycaster 的文档,我注意到nearfar属性都说“这个值表明哪些对象可以被丢弃在远方。” 所以我认为有一些内部函数用于在投射所有光线之前根据距离细化结果。

我对此进行了一些挖掘,并在Ray.js.

我想我正在寻找的是一种更好的方法来获取场景中源对象 X 半径内的所有对象。我什至不需要使用 Raycasting,因为我对网格碰撞不感兴趣,而只是源对象 X 半径内的对象列表。由于场景的设置方式,我什至不需要递归到这些对象的子对象。所以我觉得必须有一些内部功能或者只是使用THREE.Vector3对象和数学以通过距离细化它们。在这种情况下,这必须比 Raycasting 便宜得多。如果在 three.js 中已经有一个函数可以处理这个问题,我不想从头开始重新创建一个。我也意识到这可能是一个非常冗长的问题,因为很可能是单行答案,但我想确保我有所有的细节和其他东西,以防其他人稍后搜索它。

0 投票
0 回答
275 浏览

three.js - 射线和射线投射之间的区别

在我的三个.js 项目中,我个人使用“Raycaster.js”进行光线投射。但一直以来,我也使用“ Ray.js”找到了射线的概念。两者都使用 diff js 文件。

目前我熟悉光线投射的概念,但不熟悉光线。谁能告诉我 ray.js 的概念以及它与 raycaster.js 的区别..?

0 投票
1 回答
1200 浏览

javascript - Three.js:Raycast 与 BufferGeometry 的交点

由于 R59 可以在线进行光线投射,而且效果很好。我在鼠标悬停时显示工具提示。

由于数据不断增长,我遇到了性能问题,所以我决定THREE.GeometryTHREE.BufferGeometry. 一切正常,而不是光线投射......我在鼠标悬停时没有收到任何错误或其他东西,真的什么都没有发生!

是否可以在与 建立的线上相交光线投射THREE.BufferGeometry

0 投票
2 回答
264 浏览

c# - 如何检测点击的确切位置?

我正在尝试使用 C# 在 Unity 中获取单击的确切位置,但我不知道如何确定它。我尝试使用 raycast,我得到了一个非常准确的位置,但它只是四舍五入到小数点后一位。这对我来说有点太大的错误。那么我怎样才能得到一个完全准确的位置呢?

我的代码如下:

我得到一个类似 (0.5, 1.3, -5.0) 的结果,但我想要一个高达 4 或 5 位小数的精度。

0 投票
1 回答
3568 浏览

c++ - 光线追踪:变换问题

我在合并转换时遇到了麻烦。不管出于什么原因,一切都不像我想的那样发展,但说实话——所有来回的转变让我很头晕。

正如我到处阅读的那样(尽管很少有明确的解释,恕我直言),转换的原理算法如下:

  • 用变换矩阵的逆变换射线(原点和方向)
  • 用变换矩阵变换得到的交点
  • 在交点处变换对象的法线,并用逆的转置

据我了解,这应该可以解决问题。我很确定我的问题出在我尝试计算光照时,因为初始交叉点和光照算法都使用相同的函数 ( obj.getIntersection())。但话又说回来,我不知道。:(

你可以在这里阅读我的部分代码:

main.cpp , scene.cpp , sphere.cpp , sdf-loader.cpp

如果您需要更多信息来帮助我,请告诉我 - 请帮助我!;)

编辑:

我做了一些结果,也许有人“看到”(通过结果)我可能错了:

未转换的场景:

未转换的场景

球体缩放(2,4,2):

球体缩放 (2,4,2)

框翻译 (0,-200,0):

翻译框 (0,-200,0)

球体平移(-300,0,0):

球体平移 (-300,0,0)

球体 x 旋转 (45°):

球体 x 旋转 (45°)

0 投票
0 回答
104 浏览

collision-detection - 如何放置一个对象,使其不会在 jMonkey 中碰到我场景的墙壁

在我的游戏中,用户必须单击某个点才能放置对象(网格)。我可以投射光线并找到可以平移对象的水平点,然后将其附加到 rootNode 以显示它。然而问题是,如果用户点击太靠近另一个对象/场景墙,则要放置的对象会碰到它。我怎样才能防止它?