【发布时间】:2016-02-08 21:11:05
【问题描述】:
我正在开发基于 Embree 的光线追踪器(目前处于开发初期)。如果您不熟悉 Embree,可以通过他们的webpage 了解更多信息。
问题:
目前,如果您启动渲染器以使每个像素和每次迭代使用 1 条光线(从现在开始称为 1 条光线模式),它的渲染器就可以了。如果您将其设置为在一个数据包中跟踪 4 条光线 (raypacket4),它会很好地渲染网格,只要您将其移开一些距离,就会出现一些黑线。
Issue Screenshots 截图相机参数为(均为光线包模式):
- 位置 0,1,0,旋转 20,0,0
- 位置 0, 38, 0 旋转 90, 0, 0
- 位置 9.5, 5, 0 旋转 90, 0, 0
- 位置 9.5, 38, 0 旋转 90, 0, 0
调查表明,这些线仅在 pakcet 模式下以及距离网格有一段距离时才会出现。 我在几个不同的相机位置发布了问题的屏幕(渲染图像)。 这里是项目的源代码(在 GitHub 上)Source Code
我敢打赌,问题出在数据包生成(位于camera.cpp/GetRayPacket4)或渲染中(renderer.h/RenderBuffer4, Raytrace4)。
模式之间的切换是在 main.cpp 中完成的,只需将 RenderToBuffer4 替换为 RenderToBuffer 和 RTC_INTERSECT4 到 RTC_INTERSECT1。
非常感谢任何帮助或想法。
编辑:
对于缺少配置文件或场景文件,我深表歉意,它目前处于非常早期的开发阶段(花费了 2 天),目前所有内容都经过硬编码以供测试。
编辑 2:
我发现在 GetRayPacket4 中移除光线方向计算中的 + i 后,问题就解决了,但是 4 条打包光线是相同的。为什么会修复它?
【问题讨论】:
标签: c++ mesh raytracing artifacts embree