0

コンピュータグラフィックスについていくつか質問があります。

  • Javaで複数の光を使用して拡散シェーディングを計算するにはどうすればよいですか?

  • Javaで複数のライトを使用してアンビエントシェーディングを計算するにはどうすればよいですか?

4

1 に答える 1

2

ライトの数に関係なく、ライトは次のように計算されます。

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 ...
于 2012-10-24T08:37:58.483 に答える