0

私はpythonを使って画像を作っています。しかし、ランバート シェーディングは機能しません。

最初はこんな感じで保存された画像。 ここに画像の説明を入力

しかし、球の法線ベクトルを逆にすると、このように画像が保存されました。ここに画像の説明を入力

これは私のシェーディングコードです。

v = -m*ray

if s == 'Sphere':
    n = view.viewPoint - list[idx].c - v
    n =  -n / np.sqrt(np.sum(n*n))

for i in light:
    l_i = v + i.position - view.viewPoint
    l_i = l_i / np.sqrt(np.sum(l_i * l_i))

 x = list[idx].s.d[0] * i.intensity[0] * max(np.dot(l_i, n), 0)
 y = list[idx].s.d[1] * i.intensity[1] * max(np.dot(l_i, n), 0)
 z = list[idx].s.d[2] * i.intensity[2] * max(np.dot(l_i, n), 0)

list は球のリストで、idx は最も近い球の番号です。誰かが私を助けてくれれば幸いです。私はこれを一週間やっています

4

1 に答える 1