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

javascript - 正交相机和使用光线投射选择对象

我在使用 raycaster 使用正交相机选择对象时遇到了一些困难。不过,当我使用透视相机时,我对此没有任何问题。在两者之间切换时我唯一改变的是类型相机。

我可以在正交视图上选择面,但它仅与我在屏幕上单击的位置松散相关。当我可以在远离对象的地方单击时,它仍然会回来,就好像它击中了靠近其中心的对象一样。

关于我在这里缺少什么的任何想法?

我的大部分代码都基于此示例,并希望从我的代码中获得非常相似的结果。(我引用的这个例子使用透视相机)

任何帮助深表感谢

我希望这是一些我还不知道的简单事情。

三.js r60

0 投票
1 回答
3517 浏览

c++ - 使用opengl 2从鼠标投射光线

我试图在鼠标点击时进行光线投射,最终目标是找到与平面的碰撞点。但是我无法创建射线。这个世界是使用一个平截头体和另一个我用作相机的矩阵来渲染的,顺序是平截头体 * 相机 * vertex_position。屏幕左上角为 0,0,我能够以像素为单位获得点击的 X,Y。然后我使用下面的代码将其转换为射线:

view_frustum 矩阵:

当“相机”矩阵为 0,0,0 时,这给出了预期的结果,但是一旦我更改到另一个位置的固定相机位置,返回的结果根本不正确。固定的“相机”矩阵:

因为我在网上找到的许多示例都没有以这种方式实现相机,所以在这种情况下我无法找到很多信息来提供帮助。任何人都可以对此提供任何见解或为我指明更好的方向吗?

0 投票
2 回答
2381 浏览

java - java中的光/射线投射?

我一直在尝试在不使用库的情况下在 java 中制作动态灯光系统。但是,出于某种原因,我似乎无法获得光线以有效地运行。它闪烁并滞后一吨。我这样做之前对游戏中的光照引擎一无所知,所以我愿意接受建议。这是我当前的更新方法:

这会修改显示灯光的多边形。我稍后会改变它。有什么方法可以让这个运行更好吗?此外,不,没有图书馆。我对他们没有任何反对意见,只是现在不想使用。

0 投票
2 回答
15091 浏览

c++ - SFML Drawing Pixel Array

I found this (http://lodev.org/cgtutor/raycasting.html) tutorial on the Internet and was interested and wanted to make my own. I wanted to do it in SFML though, and I wanted to extend it, and make a 3D version, so there could be different levels the player can walk on. Thus, you would need 1 ray for every pixel, and thus each pixel would have to be drawn independently. I found this (http://www.sfml-dev.org/tutorials/2.1/graphics-vertex-array.php) tutorial, and it seemed easy enough to have the array be of individual vertices. To start, I figured the best thing to do would be to create a class that could read the pixels returned by the rays, and draw them to the screen. I used the VertexArray, but things were not working for some reason. I tried to isolate the problem, but I've had little success. I wrote a simple vertex array of just green pixels that should fill up part of the screen, and still there are problems. The pixels only show my code and the pic. of what I mean.

}

http://oi43.tinypic.com/s5d9aw.jpg

I meant for this to just fill in the top 10 rows with Green, but apparently that is not what I did... I think if I can figure out what is causing this not to work, I can probably fix the main problem. Also if you think there is a better way to do this instead, you could let me know :)

Thanks!

0 投票
1 回答
4196 浏览

c++ - 3D 屏幕空间光线投射/拾取 DirectX9

我需要根据特定深度(用于光线投射)将 2D 鼠标坐标转换为 3D 世界坐标。我没有直接在 C++ 中使用 DirectX,我使用的是专有语言,但如果你用 C++ 或伪代码(首选 C++)给我答案,我可以转换它。

我可以访问世界矩阵、视图矩阵和投影矩阵以及各种矩阵操作函数。

如果有必要将vector4乘以matrix4,我唯一可用的同时采用vector4和matrix4的函数是transformVector4(vector4Source,matrix4Source)。如果这很重要,我不确定它将它们乘以哪个顺序。

任何帮助将不胜感激:)我已经为此工作了几个小时,但我只是没有得到 3D 数学......

0 投票
2 回答
607 浏览

c++ - 3D Volume rendering and multiple point of view occlusion

I've a `W x H x D' volumetric data that is zero everywhere except for little spherical volumes containing 1.

I have written the shader to extract the "intersection" of that 3D volume with a generic object made of vertices.

Vertex shader

Fragment shader

In the OpenGL program, I'm looking the centered object with those almost-spherical patches of white on it from (0,100,0) eye coordinates, but I want that for another viewer (0,0,0) the spheres that lie on the same line-of-sight are correctly occluded, so that only the parts that I underlined in red in the picture are emitted.

Ideal occlusion for (0,0,0) viewer as view from up

Is this an application of raycasting or similar?

0 投票
1 回答
540 浏览

matrix - 如何在 3d 空间中转换的表面上找到 3d 点的相对位置

我有一个似乎无法解决的数学/向量/矩阵问题。

我在 3D 空间中有 4 个点代表表面的边界。

我编写了一个光线投射算法来获取鼠标“光线”与 3d 场景中矩形的交点位置。

场景中的矩形应用了一个旋转和平移矩阵,因此它可以在场景中的任何位置移动,并且我的光线投射系统确实可以正确获取表面上的光线命中位置。

我的问题是我现在需要获取世界空间中的 Ray Hit 位置,并计算出在矩形的 2d 表面上命中的位置。

我无法弄清楚如何做到这一点。

0 投票
2 回答
1058 浏览

three.js - THREE.Raycaster 是否对 CSS3DObject 对象执行交叉检查?

我需要从鼠标坐标运行光线投射并检查一组三个 CSS3DObject 对象上的交叉点。

这是功能:


objects 参数是一个数组css3dobjects。我可以使用类似的功能将场景中的水滴定位到正确的鼠标位置,因此我相信我对世界空间中鼠标点的计算是正确的。这导致人们相信 Raycaster 不会检查交叉路口css3dobjects

我的 css3dobjects 通常以 div 作为其元素来构造。

我的场景是通过这个函数创建的

场景中是否拥有启用光线投射所需的所有元素?

是否可以使用 raycasting 进行光线css3dobjects投射css3drenderer

谢谢您的帮助

0 投票
1 回答
167 浏览

javascript - 绘制箭头从一个网格对象到另一个网格对象的表面的问题

我正在尝试从一个网格对象向另一个网格对象绘制箭头。但是,如果我直接使用他们的位置并在 Arrow Helper 中作为参数发送,那么箭头将进入对象内部,因为对象的位置意味着它的中心。

所以我创建了对象,我正在使用 raycaster。

所以这里的原点是源对象的位置,方向是源到目标的方向。然后我在与目标相交时获取碰撞结果,即

然后我计算光线第一次与目标相交的距离:

然后,使用以下参数创建一个箭头:

箭头正在按预期创建:

但对于 :

它说“collisionResults[0]”为空。我无法弄清楚原因。任何帮助表示赞赏。下面是我正在使用的代码片段。我还提到了辅助方法:

以及我正在使用的辅助方法:

0 投票
1 回答
16695 浏览

c# - Unity 在运行时替换材质

我正在尝试根据我选择的标签在运行时更改对象的材质。但是,Unity 不是替换材质,而是添加我的目标材质的实例并将其添加到对象中。

有没有办法通过代码删除现有材料并将其替换为我的目标材料?

这是我目前处理此问题的代码: