コンピュータグラフィックスについていくつか質問があります。
Javaで複数の光を使用して拡散シェーディングを計算するにはどうすればよいですか?
Javaで複数のライトを使用してアンビエントシェーディングを計算するにはどうすればよいですか?
ライトの数に関係なく、ライトは次のように計算されます。
ambient = material.ambient * light.ambient
diffuse = material.diffuse * light.diffuse * dot(normal, direction_to_light)
方向ベクトルと法線ベクトルは正規化する必要があります。さらに、dot()
がゼロ未満の場合、結果の拡散色はちょうど黒になります。
複数のライトがある場合は、各ライトが結果に追加されます。だから例えば
result = ambient_light1 + diffuse_light1 + ambient_light2 + diffuse_light2 ...