是否有任何公式可以计算给定眼睛/相机矢量和物体表面法线/位置的半矢量。
这是我能说明我的意思的最好例子:
我的最终目标是根据这两个值计算正确的光矢量。 (相机矢量和表面法线)。
答案 0 :(得分:3)
您不能单独从曲面法线和凸轮矢量导出光矢量 - 如果您考虑一下,这意味着每个独特的法线和相机组合都会导致不同的光线位置。但是你可以轻松地推导它
light_vect = light_position - face_center_position
cam_vect = cam_position - face_center_position
halfangle_vect = (light_vect.normal() + cam_vect.normal()).normal()
其中light_position,face_center_position和cam_position都是OpenMaya.MVectors
答案 1 :(得分:0)
我认为你想要实现镜面反射:那么实际上你想要计算眼睛方向和光线方向之间的半角矢量,然后将标量乘以法线并提高到某个幂。
确定半角矢量的一般公式是
H(a,b) = normalize(normalize(a) + normalize(b))
,其中
normalize(v) = v/len(v)