BSDF%20theta%20phi%20angles.svg


Oren-nayar-reflection.png


안녕 얘들아


그래픽스 공부하면서 Oren Nayer Diffuse 모델을 공부중인데, 내 빡머가리로는 이해가 안되는게 있어서 찾아왔어


이야기를 들어보니깐 여기가 수학을 잘한다고 하더라고


아무튼 위에 구형좌표계에서 theta랑 phi를 저렇게 정의한다고 하자


근데 내가 계산하고 싶은거는


L_{r}={\\frac  {\\rho }{\\pi }}\\cdot \\cos \\theta _{i}\\cdot (A+(B\\cdot \\max[0,\\cos(\\phi _{i}-\\phi _{r})]\\cdot \\sin \\alpha \\cdot \\tan \\beta ))\\cdot E_{0}

A=1-0.5{\\frac  {\\sigma ^{2}}{\\sigma ^{2}+0.33}}

B=0.45{\\frac  {\\sigma ^{2}}{\\sigma ^{2}+0.09}}

\\alpha =\\max(\\theta _{i},\\theta _{r})

\\beta =\\min(\\theta _{i},\\theta _{r})


여기에서 안에 max[0, cos(phi_i - phi_r)] 부분인데


우선 코드 스니펫부터 보자


vec3 normal = normalize(frag_in.normal); vec3 view_dir = normalize(view_direction); vec3 light_dir = normalize(light_position); float NdotL = dot(normal, light_dir); // cos(theta_r) float NdotV = dot(normal, view_dir); // cos(theta_i) float angleVN = acos(NdotV); // theta_i float angleLN = acos(NdotL); // theta_r float alpha = max(angleVN, angleLN); float beta = min(angleVN, angleLN); float gamma = dot(view_dir - normal * dot(view_dir, normal), light_dir - normal * dot(light_dir, normal));


여기서 gamma가 내가 궁금한 cos(phi_i - phi_r) 부분이야


gamma를 왜 저렇게 구하는지 모르겠어


설명을 어떻게 해야할지 잘 모르겠는데 댓글점 달아주라


읽어줘서 고마워



*******

gamma가 이렇게 계산된다고 하네

OrenNayarGamma

근데 왜 cos(phi_i - phi_r) 가 이렇게되누?


ㅆㅂ