gpt4 book ai didi

c# - 光线转换/光线追踪 : shooting rays from camera

转载 作者:行者123 更新时间:2023-11-30 22:38:32 25 4
gpt4 key购买 nike

我正在用 C# 编写一个简单的 raytracer/raycaster。我过去曾使用过 Vectors,所以我编写了一个名为 Vector3D 的类,如您在下面的代码中所见。我还写了一个类来处理光线。现在,我关心的是确保光线从相机发出,转换到屏幕上的所有像素,然后转换到场景中相机前面的物体。我已经将文本写入输出 (Debug.WriteLine),但很难看出它是否真的有效。以下代码是否合适,或者您会推荐另一种方法或网站来推荐/指导我吗?

for (int x = 0; x < sizeofoutput.Width; x++)
{
for (int y = 0; y < sizeofoutput.Height; y++)
{
Vector3D lookat = new Vector3D(sizeofoutput.Width / 2, sizeofoutput.Height / 2, 0);
Vector3D lookatrev = new Vector3D(lookat.X * -1, lookat.Y * -1, 0);
Vector3D tmp2 = lookatrev + new Vector3D(x, y, 0);
Vector3D campos = new Vector3D(0, 2, -6); // camera position.
Vector3D raydir = tmp2 - campos; // ray goes into a pixel.
Vector3D rayorg = campos; // ray starts at camera.
Ray ray = new Ray(rayorg); // create the ray from the data provided.
ray.Direction = raydir;
for (int c = 0; c < sceneobj.Length; c++)
{
// find object and render!
}
}
}

最佳答案

您的相机似乎在沿 z 轴发射光线,如果这就是您所追求的效果,那么它看起来不错。请注意,您的射线方向未归一化,以后可能会或可能不会成为问题。你必须牢记这一点并采取相应的行动。无论如何,我认为最基本的Phantom's tutorial是让我开始(并沉迷于!)光线追踪的原因,我认为这对您来说可能是一本好书。

关于c# - 光线转换/光线追踪 : shooting rays from camera,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6064402/

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