Articles of 光线追踪

AABB树中的重叠同胞问题

我正在试图制作一个实时GPU(CUDA)射线追踪器,现在我正在追踪单光线,但是我遇到了一个问题:BVH。 这个[PDF] 文件是我理论部分的灵感,正如你所看到的,BVH是由轴alignment边界框组成的,然而,用于射线AABB相交的无堆绳索algorithm没有考虑到重叠兄弟姐妹,这与我在互联网上多处读到的AABB创建algorithm有很大关系,这个algorithm是对当前三角形列表中每个三角形的质心进行平均,并根据投影确定每个三角形的放置位置平行于父框的最长边的轴上的平均值。 在论文中使用AABB表明确实存在一种有效地(在速度上)使AABB树不重叠的兄弟。 不幸的是,我找不到这样的方法。 请有人请描述一个快速的方法来创建一个AABB树没有重叠的孩子? 我也很感激,如果他们也张贴伪代码。 谢谢。

退化AABB(轴alignment的边界框),这总是相交吗?

我正在研究ray-AABB交点,我在问自己:如果轴alignment边界框的一个维度退化,会发生什么? 例如: AABB_min = {1,1,1} AABB_max = {5,5,1} 在这种情况下,Z坐标对于AABB的最大和最小点是相同的。 你可以把这个AABB想象成一个2D矩形。 在这种情况下,如果光线的Tmax和Tmin是+ inf和-inf (这样我们就不需要打扰它们),这总是会产生与光线相交的“真实”?

限制Quaternion / vector3 ax在一定的时间间隔内

我有些麻烦要理解,并且处理Quaternion和Vector3。 我正在改进教程坦克统一: 编辑:因为一个video解释好得多,有一个链接到30次端video我: https : //www.youtube.com/watch?v= nNrmlfbHNTI&feature = youtu.be 在第一部分,炮塔转动与两线newRotation.z = 0.0f; and newRotation.x = 0.0f; newRotation.z = 0.0f; and newRotation.x = 0.0f; (见下面的代码)。 第二部分,我只是评论这两行。 我的问题是:我希望能够上下查看(就像在video的第二部分,但是有一个DEPRESSION LIMIT (不要看起来太高和太低) 我尝试了曼尼的情况下,不能管理我想要做的事情…有参考坦克炮塔脚本的代码: public float m_TurnSpeed = 8f; private Transform m_Transform; private int floorMask; private float camRayLength = 100f; void Awake() { floorMask = LayerMask.GetMask ("Ground"); m_Transform = GetComponent […]

如何find一个考虑投影失真的点

我找不到能帮助我实现基于投影失真的坐标变换algorithm的资料。 我正在创建一个代码识别algorithm(类似于qr-code)。 认识到图像后,我得到了三点。 我的问题是图像有不同的投影失真,大小和角度。 我如何findk点,知道p1,p2,p3的坐标是失真的,而且没有畸变的投影。 帮我理解! 也许有现成的algorithm或文献可以帮助实现它。 这对我来说非常重要。 谢谢!

如何制作与Housemarque的Nex Machina类似的粉碎效果?

玩了Nex Machina一段时间之后,把怪物和场景变成立方体的震撼效果真让我着迷,我不能抱着我的好奇心来探索他们是如何做到的。 我曾尝试谷歌一些相关的材料,但我只发现了一个介绍了Nex Machina的游戏引擎理论的video和一个博客文章 ,简要地展示和介绍了他们如何做到这一点。 根据我所收集的资料,这种破碎效果是通过光线追踪和变形技术来实现的,但我不知道他们究竟是如何实现这一点的。 我在这里find了一个“光线追踪变形”的解决scheme,但很显然,它不能在Nex Machina中实现“立方体”效果。 由于没有从Housemarque发现GDC谈话或技术博客,我们只能猜测他们是如何实现这一点的。 欢迎任何讨论!

计算“视野”锥体内的2D瓦片地图瓦片

我需要计算哪些拼贴组成了一个“锥形”,起源于我的玩家,并向外延伸一定距离。 我的球员只能面对北部,南部,东部,西部,我还不确定我将用于锥体的角度。 我发现有几篇文章已经覆盖了这篇文章,但是他们试图确定可见性,而且比我需要的复杂得多。 我不照明房间或计算阴影/遮挡。

如何计算射线多边形交集?

我正在上课,我们正在用C ++创建一个光线追踪器。 我正处在一个我无法用计算光线与一个多边形相交的点所需的math计算方法。 我们对如何做到这一点有一些指导,但所有的课堂教材以及我的Googlesearch都没有帮助。 这些是我们必须完成的function: bool polygon::Intersect(const ray &R, intersection &inter) { // To Do: If you have implemented the "CalculateNormal" method // below, should already be calculated and placed in the member // "n". // // Now, using n, you need to calculate the intersection of the // ray with the plane containing the […]

你会推荐哪些可选function用于raytracer?

我正在开发一个基本的三角形网格光线追踪器在一个很短的截止date。 这意味着我不能实现我遇到的每个function,所以我正在寻找一些关于您认为哪些function是最重要的反馈,同时考虑function的性能以及打包的function。 我特别寻求优化技术,可以提供更快的渲染速度和简单的技术,对最终的场景质量产生重大影响。 有没有机会让速度足够快,以实时运行? 这里有一些我读过的function的例子: 抗锯齿 边界框 天空盒子

在OpenGL中使用Raypicking /光线跟踪

好的,所以在你投票之前说OpenGL不支持光线渲染,请阅读: 所以我想在opengl 1.1中检测一个四元组(我不想使用opengl 3.0)。 我想用OpenGL来检测它,但这似乎不可能。 但基本上我有一个select,这是一种“哈克”。 我创建自定义matrix并将转换的顶点存储在某处,然后进行简单的碰撞testing。 在传统OpenGL中进行光线跟踪的常用方法是什么?

光线追踪 – 有光泽的reflection

在这里,我再次与我的光线追踪器的iPad。 现在我正在尝试向对象添加光泽reflection。 我如何实现它? 我在网上阅读了一些文档: http://www.cs.cmu.edu/afs/cs/academic/class/15462-s09/www/lec/13/lec13.pdf http://www.cs.cornell.edu/courses/cs4620/2012fa /lectures/37raytracing.pdf 如果我正确地理解,而不是跟踪标准reflection的单一射线,我必须跟踪随机方向的n射线。 我如何得到每个射线的随机方向? 我如何生成这些样本?