追踪并发现了一个意想不到的问题。如果我写了光线跟踪器的两个主要循环,负责图像像素的那个循环:
for (int y=0; y<image.getWidth(); y++) {
for (int x=0; x<image.getHeight(); x++) {
我得到了这个扭曲的图像。 (实际上,facebook以某种方式将图像固定在图像上,甚至比真实图像还要多,但重点是代码会生成多个带有某种扫描线的镜像球体(实际上更小)
但是,如果我做了一个小改动,请:
for (int y=0; y<image.getHeight(); y++) {
for (int x=0; x<image.getWidth(); x++) {
它可以作为一种魅力,如下所示:
getHeight
,getWidth
为我提供了图像的高度和宽度。
以下是一些我认为可能有用的代码:
Ray viewRay = { {float(x), float(y), -1000.0f}, { 0.0f, 0.0f, 1.0f}};
第一部分是摄像机位置,第二部分是方向 我不知道为什么会这样,并会感激任何意见。如果需要更多代码来评估问题,请询问。
答案 0 :(得分:0)
问题在于,虽然你正在改变for循环的顺序,但你并没有改变索引。你应该试试:
for (int x=0; x<image.getWidth(); x++) {
for (int y=0; y<image.getHeight(); y++) {
将其与您发布的两个片段进行比较。