2009.3.9

LilyEightでシーン作成その1

■RIBを調整してシーンをつくる

Breeze Designerを使ってサンプル2_toy.cadを呼び出し、Exportでribを出力します。

Breeze DesignerのRIBのカメラはいつも固定されています。
Projection "perspective" "fov" 35
Translate 0 0 36.0000
Scale -1 1 1
Rotate 180 0 1 0
以下のようなカメラ位置になります。AIRでレンダリング

LilyEightアプリAを呼び出し、Breeze DesignerでExportしたモデルをLoadします。 LilyEightには、undo機能がないので、やってみてうまく行かないときは、モデルを破棄するかね別名で保存していく方が良いでしょう。 ここでは、読み込んだRIBを再構成して見ます。キーボードのAを押してモデルを選択すると、すべてのオブジェクトが一つとして選択(赤表示)されてしまいます。 個別にオブジェクトを分けるために、全体をちょっとだけ移動させます。移動するためには、キーボードのMを押し、ちょっとだけマウスドラッグします。 すると以下のように警告メッセージがでます。OKを押して、改めて別名で保存Saveしてください。拡張子はRIBにしましょう。

それぞれのオブジェクトが以下のようにAttributeBegin〜AttributeEndで囲まれた形で構成されます。エディタで開いて確認してみましょう。
AttributeBegin
   Attribute "identifier" "name" "_World"
       AttributeBegin
       Attribute "identifier" "shadinggroup" "World$1"
       ConcatTransform [
         1.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 1.000000 0.000000
         0.000000 -5.000000 0.000000 0.000000
         -6.937500 -0.062500 3.000000 1.000000
       ]
       Color 1.000000 0.730469 0.261719
       Cylinder 1 -1 1 360
       Disk 1 1 360
       Disk -1 1 360
      AttributeEnd
AttributeEnd
保存したモデルを再び開いてキーボードのOを押して、カメラ位置を調整します。キーボードのTとDも使ってマウスドラッグして見る位置を調整します。シーンを保存します(Save Model)。 レンダリングしてみると以下のようになります。

再び、LilyEightでシーンを開き(Load Model)、キーボードのAを押して地面を選択し、X ScaleとZ Scaleで拡大してあげます。レンダリングしてみると以下のようになります。

■■レイレーシングで影をつける

エディタで開いて、ライトを変更してみましょう。
LightSource "pointlight" 0 "intensity" 500 "from" [ -20.000000 35.000000 34.000000 ]
LightSource "pointlight" 1 "intensity" 500 "from" [ 0.000000 0.000000 24.000000 ]
このRIBファイルでは、材質として何も設定されていません。そのためレンダラーではDefault Surface Shaderが適用されており、ライトの 明るさに関係なく、一定の色合いが出されています。ちなみに上記のライトの"intensity" 500を変更してみてください。明るさが変わらないと 思います。また、LightSourceの行頭に#を入れてコメントアウトしてレンダリングしてみてください。変わらないと思います。

そこで、エディタを使って最初にAttributeBeginと始まる上の行を空けてSurface "matte"と挿入してみましょう。
ここではAIRのライトシェーダを使ってみます。以下のようにライトとレイトレーシングの設定に変更してみました。
WorldBegin
LightSource "rh_pointlight" 0 "intensity" 1 "from" [ -20.000000 35.000000 34.000000 ] "string shadowname" ["raytrace"]
LightSource "rh_pointlight" 1 "intensity" 0.8 "from" [ 0.000000 0.000000 24.000000 ] "string shadowname" ["raytrace"]

Attribute "visibility" "transmission" ["opaque"]
Attribute "visibility" "trace" [1]
Surface "matte"
AttributeBegin
Attribute "identifier" "name" "_World"
AttributeBegin
Attribute "identifier" "shadinggroup" "World$1"
ConcatTransform [
1.000000 0.000000 0.000000 0.000000
0.000000 0.000000 1.000000 0.000000
0.000000 -5.000000 0.000000 0.000000
-6.937500 0.059115 3.000000 1.000000
]
Color 1.000000 0.730469 0.261719
Cylinder 1 -1 1 360
Disk 1 1 360
Disk -1 1 360
AttributeEnd

以上はAIRレンダラーを利用しました。

toy_cad.rib
toy_cad4.rib

さらに、エディタを利用して、
AttributeBegin
Attribute "identifier" "name" "m2"
Attribute "identifier" "shadinggroup" "World$2"
Surface "matte"
オブジェクト名とマテリアル名、さらにサーフェスシェーダを上記のように各Attributeに付け加えて編集します。 AIRについているAirSpaceに読み込んで、シェーダやカメラ位置など変更してレンダリングしてみました。シェーダのProjectionをPlanerやSphericalに変更しています。 LilyEightはデフォルトで読み込んだモデルにst座標が付属していない場合は良い結果が得られません。


toy_cad.zip

戻る