我正在使用OpenGL构建一款LIDAR模拟器。这意味着片段着色器返回光矢量的长度(距离)代替其中一个颜色通道,通过远平面到距离的归一化来实现(因此它将介于0和1之间)。换句话说,我使用红色指示光强度,蓝色指示距离;并将绿色设置为0。Alpha未使用,但我将其保留为1。
这是我的测试对象,恰好是一块岩石:
我是否漏掉了什么?这是否与我禁用抗锯齿有关?(抗锯齿会导致更严重的周期性伪影,但出现在相机和物体之间。我禁用了线条平滑、多边形平滑和多重采样,解决了这个特定的问题。)
编辑
这是计算距离的两个地方:
这是我的测试对象,恰好是一块岩石:
然后我将像素数据写入文件并加载到点云可视化器中(每个像素一个点)-基本上是默认设置。这样做之后,很明显我的所有点都位于不同深度的离散平面上:
我尝试在R中绘制相同的数据。由于飞机密度相当高,因此默认直方图一开始不会显示出来。但是当我将断点设置为大约60时,我得到了这个结果:
.
我是否漏掉了什么?这是否与我禁用抗锯齿有关?(抗锯齿会导致更严重的周期性伪影,但出现在相机和物体之间。我禁用了线条平滑、多边形平滑和多重采样,解决了这个特定的问题。)
编辑
这是计算距离的两个地方:
是因为我在顶点着色器中计算了ec_pos
吗?如何在片元着色器中计算ec_pos
?