What will be the equation for the ray and ray origin when we are using parallel projection and how to derive that?

有帮助吗?

解决方案

In traditional raytracing, you use a ray that starts at your eye point. For each pixel you calculate where it is on a virtual screen in front of the camera and shoot a ray through that pixel.

Let pO be the eye point, d be the direction of the camera, r to be a vector pointing to the right and u to be a vector pointing up. Let w be the number of pixels in the screen horizontally and h be the number of pixels vertically.

The parametric equation for a ray going through any pixel x, y is then:

ray = pO + t * normalize (d + (x - 0.5w)/0.5w * r + (y - 0.5h)/0.5h * u)

where t is the parameter.

Perspective projection

For a parallel projection, move the virtual screen to the origin and calculate the x, y to be the origin of the ray then use the same direction d for each ray:

ray = (pO + (x - 0.5w)/0.5w * r + (y - 0.5h)/0.5h * u) + t*d

其他提示

For a perspective projection, you have an eye origin, direction, right and up vectors. You then run a vector from the eye origin to each pixel in a virtual screen by scaling the right and up vectors.

In a parallel projection, you do the same calculation for the point on the screen, but your origin becomes that point and you use the same direction for each ray.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top