0
我正在寫一個簡單的路徑跟蹤器,我想用OpenGL進行預覽。 但是,由於OpenGL管道使用投影矩陣,因此使用OpenGL和Path跟蹤渲染的圖像有點不同。如何讓OpenGL相機和Ray-Tracer相機顯示相同的圖像?
對於OpenGL渲染我使用基本的管道,在最終變換矩陣是:
m_transformation = PersProjTrans * CameraRotateTrans * CameraTranslationTrans * TranslationTrans * RotateTrans * ScaleTrans
參數透視投影是:45.0f, WINDOW_WIDTH, WINDOW_HEIGHT, 0.01, 10000.0f
。
而在我的路徑示蹤我生成光線從相機這樣的:
m_width_recp = 1.0 /0m_width;
m_height_recp = 1.0/m_height;
m_ratio = (double)m_width/m_height;
m_x_spacing = (2.0 * m_ratio)/(double)m_width;
m_y_spacing = (double)2.0/(double)m_height;
m_x_spacing_half = m_x_spacing * 0.5;
m_y_spacing_half = m_y_spacing * 0.5;
x_jitter = (Xi1 * m_x_spacing) - m_x_spacing_half;
y_jitter = (Xi2 * m_y_spacing) - m_y_spacing_half;
Vec pixel = m_position + m_direction * 2.0;
pixel = pixel - m_x_direction * m_ratio + m_x_direction * (x * 2.0 * m_ratio * m_width_recp) + x_jitter;
pixel = pixel + m_y_direction - m_y_direction*(y * 2.0 * m_height_recp + y_jitter);
return Ray(m_position, (pixel-m_position).norm());
問題是場景和相機之間的距離。我的意思是,這不是恆定的。在某些情況下,路徑跟蹤圖像看起來比較接近對象,在某些情況下反之亦然。
我還沒有在google上找到任何東西。