0

是否有任何公式可以从给定的眼睛/相机矢量和物体的表面法线/位置计算半矢量。

这是我能说明我的意思的最好例子:

图表

我的最终目标是根据这两个值计算正确的光矢量。(相机矢量和表面法线)。

4

2 回答 2

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

于 2013-06-19T21:33:17.213 回答
0

我假设你想实现镜面反射:那么实际上你想计算眼睛方向和光线方向之间的半角矢量,然后取法线的标量积并提高到一些幂。

确定半角矢量的一般公式为

H(a,b) = normalize(normalize(a) + normalize(b))

在哪里

normalize(v) = v/len(v)
于 2013-06-19T20:48:28.433 回答