シーンファイルを書いてみよう!


シーンファイルの構成

さぁ、チュートリアル入門編もこれで最後。
この章を理解した頃には、簡単なシーンを自分で作ることができるようになっているはずです。
前の章でそれぞれのアセットに対して名前を決めましたね。
それらのアセットを子ノードとしてsceneクラスに定義していくことでシーン定義を行ないます。

それでは見ていきましょう。 シーンファイルの定義は非常に簡単で

 scene:
    sensor: sensor
    nodes:
      - id: sensor
        sensor: sensor_1
      - light: light_1
        mesh: mesh_Plane
        bsdf: bsdf_black
      - mesh: mesh_bunny
        bsdf: oyouhuku
前章で作成したアセットをnodes以下に記述していきます。 カメラの役割を果たすsensorだけidを登録しなくてはいけません。 なのでまずnodesに入る前に任意の名前でsensor:にid名をつけましょう。
-light:では今面光源(area)を用いているので、その形状(trianglemesh)を表すmesh_Planeと材質(bsdf)を表すbsdf_blackを関連づけしています 。
前章でoyouhukuにはtextureであるtex_oyouhukuを関連づけしていましたね。 そのためmesh_bunnyoyouhukuを関連づけすることでtextureが貼り付けられたウサギちゃんを作ることができます。

他のライトやオブジェクトも同じように作成していきます。


アセットを移動・回転・拡大させる

最後にアセットを移動させてみましょう。
上のシーンファイルの定義で作成したシーンのレンダリング結果を見てみましょう。

例画像

例画像

このウサギの位置を動かしてみましよう。

 scene:
    sensor: sensor
    nodes:
      - id: sensor
        sensor: sensor_1
      - light: light_1
        mesh: mesh_Plane
        bsdf: bsdf_black
      - mesh: mesh_bunny
        bsdf: oyouhuku
        transform:
          translate: -2 -1 0
赤字で示したところが新しく記述されました。
移動後

移動後

ウサギの位置が変わっているのがわかりますね。
translate:にそれぞれx,y,z方向どれだけ動かしたいかを記述します。
次に回転と拡大させてみましょう。

 scene:
    sensor: sensor
    nodes:
      - id: sensor
        sensor: sensor_1
      - light: light_1
        mesh: mesh_Plane
        bsdf: bsdf_black
      - mesh: mesh_bunny
        bsdf: oyouhuku
        transform:
          rotate:
           axis: 1 0 0
           angle: -90
          scale: 2 2 2
赤字で示した部分が回転を表します。また、青字で示した部分が拡大を表します。
回転&拡大画像

回転&拡大画像

かなり成長したウサギちゃんが睡眠してますね。 回転させるには、rotateと記述してaxisに回転軸を angleに回転角度を記載するだけです。
拡大させるには、scaleで(x,y,z)それぞれどの方向にどれだけ拡大させたいのかを記述します。
ここではTrianglemeshであるうさぎちゃんだけを大きくしたり動かしたり回転させたりしましたが、 lightsensor等も同様の方法で動かすことができます。


シーンファイルを書く上でひとつ注意点として、インデントに気をつけてください。 それぞれのアセットがノード構造を持っているため、インデントの位置でツリー構造のレベルが決定します。

これでチュートリアル入門編はおしまいです。 発展編ではさらに複雑なシーンの作成や、Lightmetricaの拡張を行い方を説明していきます。


チュートリアル[発展編]へ