11得票2回答
寻找单变量大量函数的根

我正在使用Python/numpy/scipy编写一个小型的光线跟踪器。表面被建模为二维函数,其给出相对于法平面的高度。我将射线与表面的交点问题简化为找到一个单变量函数的根。这些函数是连续可微的。 有没有比简单遍历所有函数更有效的方法,可以使用scipy根查找器(可能还要使用多个进程)? ...

10得票4回答
确定一个点是否在三维空间中的三角形内部

我希望确认一种方法,用于确定一个点是否位于三维空间中的三角形内。给定一个以R(t) = e + td形式表示的射线和由三个点T = {V0, V1, V2}构成的三角形集合,我知道如何找到这三个点所形成平面的参数方程,以及如何确定射线是否与该平面相交。最后,如果相交,我想知道交点是否实际上在三...

10得票2回答
GLSL立方体有符号距离场实现解释。

我一直在查看并尝试理解下面的代码:float sdBox( vec3 p, vec3 b ) { vec3 d = abs(p) - b; return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); } 我明...

10得票1回答
OpenGL中的光线追踪通过计算着色器实现。

我正在通过计算着色器在OpenGL中尝试进行一些光线追踪,并遇到了一个奇怪的问题。目前,我只想显示一个没有任何阴影的球体。我的计算着色器为每个像素启动一条射线,看起来像这样: #version 430 struct Sphere{ vec4 position; floa...

10得票1回答
为什么光线追踪器将球渲染成椭圆形?

最近几天我一直在编写光线追踪器。然而,有一些怪癖让我困扰,我不知道该如何解决。其中一个问题从一开始就存在,那就是场景中球体的形状——渲染时它们实际上看起来像是椭圆形。当然,场景中存在透视,但最终的形状仍然看起来很奇怪。我附上了一个示例渲染图像,我所遇到的问题在图像左下角的反射球上尤为明显。 ...

10得票3回答
有没有一种特定的或适合光线追踪的3D场景格式?

我正在开发一个光线追踪程序,不想在处理3D场景的文件格式时重复造轮子。同时,我还希望能够使用其他人创建的场景来测试我的程序。我是一名程序员,而不是3D建模师。 是否有一个特定的或适合光线追踪的3D场景格式?

10得票5回答
想编写一个光线追踪器,卡在了选择使用哪个代数库上(C++)

我一直想用C++编写自己的多线程实时光线追踪器,但我不想实现其中涉及的所有向量和矩阵逻辑。我想做些研究,找到一个好的库来完成这个任务,但我没有得到太多成功... 重要的是实现要快,并且最好带有一些友好的许可。我看到Boost提供了基本的代数运算,但我无法找到关于它速度如何的信息。 在谷歌上...

10得票1回答
射线追踪器-计算视线射线

我正在编写一个光线追踪器(主要是为了好玩),虽然我以前写过一个,花费了相当多的时间搜索,但没有任何教程能够阐明如何在透视投影中计算眼睛射线,而不使用矩阵。 我相信上一次我是通过使用Quaternion类将眼向量从相机方向向量旋转x/y度(可能效率不高)来实现的。那时我用的是C++,但这次我用...

9得票1回答
球体的光线追踪纹理实现

我正在尝试在我的光线追踪器中为球体实现纹理。 我设法让一些东西运作,但我不确定它是否正确。 下面是获取纹理坐标的代码。 目前,纹理是随机生成的并在运行时生成。 virtual void GetTextureCoord(Vect hitPoint, int hres, int vres, in...

9得票1回答
如何混合颜色

我正在编写一个光线追踪器。我想知道如何将基元颜色与光源颜色混合。 我看到了很多组合方式。 有些只是将两种颜色相加。这给我带来了非常奇怪的结果。 有些则是对每个分量进行乘法运算。这看起来还可以,但如果基元是蓝色({0, 0, 1}),而光源是红色({1, 0, 0}),那么就变成了黑色。这...