gpt4 book ai didi

java - 光线追踪器根据相机角度扭曲立方体?

转载 作者:行者123 更新时间:2023-12-01 18:12:27 25 4
gpt4 key购买 nike

本质上,发生的情况是我的光线追踪器渲染的 3D 立方体出现了一些奇怪的扭曲,随着相机向上移动,这种扭曲会继续恶化,即使立方体位于屏幕上的同一位置。

代码位于 http://pastebin.com/HucgjRtx

这是输出的图片:

http://postimg.org/image/5rnfrlkej/

编辑:问题已解决,因为我只是错误地计算了 vector 的角度。我发现的最好方法是根据 FOV (Z) 当前像素 X 和当前像素 Y 创建一个 vector ,然后对该 vector 进行归一化。

最佳答案

看起来您正在根据欧拉角而不是通常的投影来计算要转换的光线。

通常对“3D”相机进行建模,使得相机位于一个点,光线通过与其间隔一定距离的网格转换......顺便说一句,这就像观看距离您的脸部一定距离的监视器一样并通过监视器的每个像素转换一条光线。

在固定情况下,计算在概念上很简单......例如

double pixelSpacing = 0.005;
double screenDistance = 0.7;
for (int yIndex= -100; yIndex<= 100; yIndex++)
for (int xIndex= -100; xIndex<= 100; xIndex++) {
Vector3 ray = new Vector3(
xIndex * pixelSpacing,
yIndex * pixelSpacing,
screenDistance
);
ray = vec.normalize();
// And 'ray' is now a vector with our ray direction
}

如果您想旋转该视野,可以使用一种常用技术(例如 4x4 矩阵乘法)。

关于java - 光线追踪器根据相机角度扭曲立方体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com