3Dグラフのライティング効果

OpenGLの3Dグラフでは、光の効果を追加する事ができます。

  1. 3Dグラフをダブルクリックして、作図の詳細ダイアログを開きます。
  2. ライティングタブを開き、設定を変更できます。

または

  1. 3D OpenGLグラフをアクティブにします。
  2. スタイルツールバーのライティング制御ダイアログボタンButton Lighting Control Dialog.png をクリックしてライティングダイアログを開きます。


ライティング効果をつけるには、モード平行光源に変更します。これで光源の方向と光の色を編集できます。

ライティングモード

Originは平行光源のライティングモードをサポートしています。

平行光源はスポットライトやポイントライトと比べて、最もシンプルな光です。平行光源の光線は、その名の通り並行で、太陽からの光のようなものです。つまり、物体に近づいてくる光線は、必ず同じ角度から当たる事になります。また、平行光源に影響される平面の物体が形成する影は、その平面に対して全て同じになります。

光の方向

光源の方向の角度は、水平と垂直の面から割り出されます。

水平面では0度は光源が東から西に向かっている事を示しています。角度が0 から 360度に増えるに従い、光源は反時計回りの方向に移動します。例えば、 90 度は回転していない面の上で、光源を北に移動したことになります。

垂直面では、0度は地平線上に光源があり、そのまま水平に光が当たっている状態です。90度は光源を真上に配置し、そのまま真下に向かって光が出ている状態です。そして、-90度は反対から、つまり真下から光が当たっている状態になります。

ダイナミック光源は光源が指定された水平と垂直の位置に設定され、平面と共に回転しないようにしています。逆に、このチェックが外れている時は、光源は平面と相対して固定されます。平面が回転すると、光源も同じように回転します。

3D openGLグラフ上でSキーを押します。マウスカーソルの形状が変わります。マウスカーソルまたは方向キーで光源の方向を変更します。

光の色

人間の視覚は、光の反射と吸収を元にしています。これが、様々な色を見る理由になっています。例えば、人間には空が青く見えるのは、大気が他の可視光線を全て吸収し、青色だけを反射するからです。その反射した光が目で感知されるので、空は青い、という事になります。光と3D曲面の様子を表すため、Originは3種類の異なる光、環境光、拡散反射光、鏡面反射光で光の色を扱い、表現します。

Originは純粋な白色光源を使用します。白色光は可視光線を適切な比率で合わせたもので、白い光が表面にあたると、光が当たった表面の材質や色に応じて、いくつかの色の光は吸収され、他のものは次の3種類の形で反射されます。

  • 環境光
    環境光は周囲の環境で複数に拡散され、結果として均等に分配されます。方向が不明な光は全ての方向から向かってくるように見えます。デフォルトの色は「黒」で、環境光は表面に対していかなる効果も与えません。
  • 拡散反射光
    拡散反射光は光が表面にあたる角度にだけ依存します。入射光が表面に対して鈍い角度よりも垂直に入ると、より明るくなります。光は特定の方向から入り、全ての方向に反射します。デフォルトの拡散反は「明るい灰色」で、これは白の強さの75%になるようにまとめた効果です。
  • 鏡面反射光
    鏡面反射光は光源から見ている人に対して直接、鏡のように反射する事です。光は1つの方向から入り、反射して1つの方向に向かって出ていきます。鏡面反射光を明るくすると、より強い影とより明るい箇所ができるようになります。デフォルトの鏡面反射光は白です。
    • 光沢
      光沢は鏡面反射光の大きさを決めるのに使用できます。光沢のパーセントが増えると、反射はより集約して行くので鏡の反射に近づいていきます。この値は0から128の間の値をとります。

表面の色の様子を等しく、客観的に反映するには、これらの反射色は一般的に灰色の濃淡で指定します。その中で、灰色以外の色を反射色に指定する場合、特殊な効果を発揮するのに使用できます。例えば、環境光の反射が真っ赤に設定され、拡散反射光と鏡面反射光の内容が真っ黒に設定されたとします。拡散反射光と鏡面反射光の項目は、黒に設定されているので実際のところ無効化されていることになります。反射されるのは、環境光である赤だけになります。この場合、赤い光だけが反射されるので、赤くなる要素が表面にないところは黒くなります。

Note: デフォルトで、平面化された表面ではサポートされていません。これはシステム変数@OGLFL (デフォルト値 = 0)でコントロールされています。ですが、このシステム変数@OGLFLを1にすれば、平面化された表面でも、ライト効果を使う事ができます(コマンドウィンドウかスクリプトウィンドウで@OGLFL = 1を実行します)。これは、@OGLFL = 0 を実行すれば切る事ができ、Originを再起動すると、システム変数はデフォルト値である0に戻します。