问题标签 [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.
opencl - 具有相同实时体素光线投射器实现的 opencl c99 和 c++ 之间的不同行为
我正在与 opencl 合作开发体素光线投射引擎。我正在尝试做类似于Crassin的 Gigavoxels 的事情。在本文中,他们使用八叉树来存储体素数据。目前我只是试图在八叉树内下降,直到到达包含渲染数据的叶子。
我做了两个实现:一个在 GPU 上的 OpenCl 中,另一个在 CPU 上的 C++ 中。我遇到的问题是,在 GPU 上,算法正在经历错误数量的级别,直到到达八叉树内的叶子。CPU 版本给出了正确的结果。两个版本的算法相同,代码几乎相似。
你们知道可能是什么问题吗?可能是硬件问题、OpenCl 问题还是我做错了什么?我在三个不同的 nVidia GPU 上遇到了相同的结果。
这是 C++ 代码:
这是 OpenCL 代码:
这是extractOctreeNodeAddress,根据要求:
这两个函数都只是做一些位操作:
OpenCL 版本:
C++ 版本:
嗨,我发现了一些有趣的东西。我尝试手动测试不同的变量,比较它们在单个精确像素和相机位置和方向上的 CPU 和 GPU 版本。在下面的代码中,如果我像现在这样运行程序,像素被打印为白色,并且值(> 5.5 与 CPU 实现相比完全错误),但是如果我注释最后一个 if 结构,并取消注释第一个,我得到的结果是红色的......这对我来说有点无法解释。有任何想法吗?
c++ - 如何使用具有网格三角形的绝对坐标和光线开始/结束的 rayTestSingle?
我创建了一个简单的btCollisionShape
(从一个三角形制成的 triMesh):
我创造了ClosestRayResultCallback
如何btCollisionWorld::rayTestSingle
在btCollisionShape
我的光线开始和结束并且没有应用转换时执行?
同时,我在整个世界上尝试了 rayccast(实际上我不需要),但似乎我做错了 =( 因为我没有看到hasHit
:
graphics - 透视光线投射
有人可以指出一些透视光线投射的方法。我见过光线分裂技术。还有哪些其他铸造方法可用?哪一个最容易实现?
opengl - OpenGL拾取并找到纹理的命中点
我目前正在研究使用射线进行采摘。我可以找到选择了哪个模型,但是如何检索选择的纹理上的位置?在这种情况下,我说的是四边形。
编辑:另外,如果我想检查命中点是否透明/半透明,我最好用着色器检查吗?
view - 3D 视图截锥体剔除,光线投射
我需要更多关于视锥体剔除的理论,以更好地理解如何实现它。我知道光线投射是为了弄清楚前面有什么物体,从而找出不渲染的物体。
我担心 CPU 使用率。据我了解,我应该按相机的宽度*高度投射光线,并且可能会根据相机看到的距离增加光线的数量。此外,我必须将其乘以场景中的对象数量,以验证哪个最接近光线。
我对这个概念的理解准确吗?我究竟怎样才能更有效地做到这一点?
编辑:
目标是实现某种类型的体素引擎,其中世界可以使用八叉树进行细分。它可能由数十万个立方体组成。
android - 增强现实 + 子弹物理 - rayTest/Ray Picking 的麻烦
我试图在子弹物理世界中挑选物体,但我似乎只能挑选地板/地平面!!!我正在使用 Vuforia SDK 并更改了 ImageTargets 演示代码。我使用以下代码将我的触摸屏点投影到 3d 世界:
当我在我的物理世界中尝试进行射线测试时,我似乎只是击中了地平面!这是射线测试调用的代码:
我知道我主要是从上往下看,所以我一定会撞到地面,我至少知道我的触摸被正确地投射到世界上,但是我有物体躺在地面上,我似乎不能能够触摸到它们!任何指针将不胜感激:)
raycasting - 是否可以将地形渲染算法从翻转码转换为“全 3d”渲染器?
我找到了这个(http://www.flipcode.com/voxtut/)基于体素技术的地形渲染算法示例,并将其转换为“全3d”渲染器。我的意思是,在高度图中,一对 (x,y) 只有一个 z(up) 坐标,而在“真实 3d”中则有很多。
我通过向普通 x,y 地图添加新的“z”层来做到这一点。例如,我有一个数据集:
这意味着,坐标为 x、y、z 的可见体素,其中 0<=z<=10 或 50<=z<=100。因此,我以与 Flipcode 上描述的相似的方式绘制此数据集。
我对这种方法有一些问题。
在该算法中,对象由平行于屏幕的长条纹绘制(因为我们通过将水平屏幕坐标加 1 并将相机与射线上的点之间的距离加常数 dd 来穿过屏幕)。我们在可绘制对象之间有空间的地方,也有这些丑陋的锯齿形。我可以用其他东西(例如立方体)而不是这些条纹轻松绘制对象吗?或者也许还有另一种方法可以提高质量?
由于光线不会在屏幕上绘制列(而是绘制垂直线段),因此很难确定屏幕上哪些像素已经绘制,哪些尚未绘制。有什么关系吗?
有没有关于这个主题的论文或描述的任何现成算法?
three.js - Three.JS- 在 Collada 中检测交叉点(Ray Casting)
我的原型系统中有一个功能可以在您单击 Collada 文件时检测交叉点。相交函数如下:
但是当我使用:
intersects 矩阵为空,无法检测到交叉点!!!
但是当我使用:
我可以得到 intersects 矩阵,它工作得很好,但是发现了另一个问题(看这里:Three.JS -- conflict Camera controls with a textbox in a scene)
上面的函数中有代码吗?为了您的信息,我使用了一个简单的相机:
谢谢。
raycasting - 用于碰撞的射线投射
嗨,我正在尝试在我的 3d 游戏中实现光线投射以供多种用途
我读过很多关于光线投射的东西,我知道你需要一个原点、方向和长度,我有这些。我遇到的麻烦是找到发射光线的角度,光线投射是检查你面前是否有东西的最佳解决方案吗?我在某处读到光线投射是一种古老而糟糕的技术,如果它是一种糟糕的技术,那么还有哪些其他方法适合拍摄等。
谢谢
line - Three.js 用于碰撞检测的光线投射
我正在尝试使用光线投射画一条线。基本上我想设置一些来自我的“玩家”对象的线在各个方向。
(像这样:https ://gamedev.stackexchange.com/questions/35013/how-to-handle-3d-collisions-using-raycasting-with-a-reflection-vector )
我想要这个,然后我可以使用我可以直观地看到我的碰撞检测。
我知道我可以使用不同的方式进行碰撞检测,但我将这种方式用作学习检测。
我的问题是下面的代码画了一条线,但它似乎随机改变长度,并不总是指向同一个角度。
var ray = new THREE.Ray( player.model.objects.position, new THREE.Vector3(1, 1, 1));
任何帮助表示赞赏。