私はレイトレーシングでカメラに完全に固執しました。私の計算を見て、エラーがどこにあるかを指摘してください。左利きの座標系を使用しています。
x、y //範囲[0..S)x [0..S)//ピクセル座標
それでは、ピクセル座標をカメラ平面のパラメトリック座標に変換しましょう。
xp = x/S * 2 – 1;
yp = y/S * 2 – 1;
xp、yp//範囲[-1..1]x [-1..1]
カメラベースの計算:
//eye - camera position
//up - camera up vector
//look_at - camera target point
vec3 w = normalize(look_at-eye);
vec3 u = cross(up,w);
vec3 v = cross(w,u);
したがって、光線の方向は次の座標である必要があります。
vec3 dir = look_at – eye + xp*u + yp*v;
ray3 ray = {eye, normalize(dir)};