与えられた目/カメラのベクトルとオブジェクトの表面法線/位置から半分のベクトルを計算する式はありますか?
これは、私が言いたいことを示すことができる最良の例です。
私の最終目標は、これら 2 つの値から正しいライト ベクトルを計算することです。(カメラ ベクトルとサーフェス法線)。
サーフェス法線とカム ベクトルだけからライト ベクトルを導き出すことはできません。考えてみると、法線とカメラの固有の組み合わせごとにライトの位置が異なることになります。ただし、次のように簡単に導出できます
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 です。
鏡面反射を実装したいと思います。次に、実際には、目の方向と光の方向の間の半角ベクトルを計算し、法線とスカラー積を取り、累乗します。
半角ベクトルを決定するための一般式は次のとおりです。
H(a,b) = normalize(normalize(a) + normalize(b))
どこ
normalize(v) = v/len(v)