Sceneクラス

シーン(Scene)とは

Mittsuにおける「シーン」(Scene)とは、3Dグラフィクスを表現するための3次元空間を表すものであり、 X軸・Y軸・Z軸の3つの方向に無限に広がる3D空間を表現しています。

この3D空間全体の座標系のことを、以後「ワールド座標系」と呼称します。

下図は、シーン内のワールド座標系における原点([0, 0, 0])に、立方体(3Dキャラクタ)が 配置されているイメージです。

3Dキャラクタ、カメラ、光源等、Mittsuで扱う全てのオブジェクトはこのシーンの中に内包されることになります。

ディスプレイ上に表示される3Dグラフィクスは、このシーン内に配置された「カメラ」を通じて見た光景が、 ウィンドウという2次元平面に投影された状態と言うことが出来ます。

シーンのウィンドウ上での見え方

では、例えばシーン内の「0, 0, -5」の位置に緑色の立方体を配置し、原点(「0, 0, 0」)に -Z方向を向いたカメラを配置したとしましょう。

イメージとしては↓のようになります。

この3D空間を実際にPCのディスプレイ上に配置された2次元のウィンドウに投影するのが、カメラの役割になります。

カメラを通して得られた光景を「レンダラー」を通してウィンドウに投影した結果が↓になります。

ローカル座標系

シーン全体の座標系であるワールド座標系とは別に、個々の3Dオブジェクト毎に持つ 座標系を「ローカル座標系」と呼称します。

例えば、前の図における立方体について考えます。

立方体の1辺の長さを仮に「1」とした場合、立方体のある頂点Aの座標はどのように表現されるでしょうか?

立方体は、その中心点がワールド座標[0, 0, -5]の位置に配置されていますので、 頂点Aの座標は、ワールド座標系で表せば、[0.5, 0.5, -5.5]と表現することができます。

しかし、例えばこの立方体に別の3Dオブジェクトを少しだけ位置をずらして合体させる場合などでは、 ワールド座標で物事を考えると複雑になってしまう場合があります。

前述の例では、立方体に合体させた別の3Dオブジェクトは、立方体の動きや回転変更などに 追随して、立方体との位置関係を常に同じに保つ必要があるとします。

そうなると、立方体のワールド座標系での変化に、同じくワールド座標系を用いて位置や回転を合わせる より、オブジェクトの中心点を原点とする、オブジェクトローカルの座標系で合わせた方が分かり やすくなります。

図示すると、以下のようなイメージになります。

赤線で示されたのが、オブジェクトの中心部を原点とするローカル座標系になります。

このローカル座標系における頂点Aの座標は [0.5, 0.5, -0.5] であり、この値は、立方体の ワールド座標上の位置や回転がどのように変化しても変わることはありません。

3Dアプリケーションを扱う上では、このワールド座標系とローカル座標系をしっかり区別して 扱えるようにする必要があると言えます。