我目前正在研究光線追蹤器,我只是在一個問題上「碰撞」。 我實現了飛機,圓柱體和球體的紋理映射,它的工作非常好...除了正常的地圖部分。 下面是我擁有的每個像素的內部位置和內部法線:world-space normals。 和一些切線空間法線貼圖(通常的法線貼圖)。光線追蹤法線貼圖
我似乎無法弄清楚如何將切線空間法線轉換爲世界空間。我曾嘗試使用「TBN」矩陣,但法線關閉:normal map projected normals。
這裏是我的代碼來計算新標準:
VEC3 t = vec3_cross(worldnormal, new_vec3(0.0, 1.0, 0.0));
VEC3 b;
if (!vec3_length(t))
t = vec3_cross(worldnormal, new_vec3(0.0, 0.0, 1.0));
t = vec3_normalize(t);
b = vec3_normalize((vec3_cross(worldnormal, t)));
VEC3 map_n = vec3_normalize(get_texture_color(normal_map, texcoords));
MAT3 tbn = new_mat3(t, b, worldnormal);
worldnormal = vec3_normalize(mat3_mult_vec3(tbn, map_n));
get_texture_color()返回法線貼圖的紋理顏色由255.f