水の流れをアニメーションさせたい

川や海などの水の流れをアニメーションで表現します。
Shade3Dでは、テクスチャをアニメーションさせる手段として動画ファイルをテクスチャ用のイメージにすることができます。
この動画ファイルのテクスチャを使用して水の流れを表現します。

手順

以下の工程で作成します。

  • 凸凹を表現するタイリング加工された法線マップテクスチャを用意
  • Shade3Dを使い、法線マップを一定方向にずらしていった動画を2つ作成(ループ再生を考慮)
  • Shade3Dの新規シーンで、対象の形状の表面材質のマッピングとして2つの法線マップ(動画を指定)を重ね合わせて水の流れを表現

凸凹の法線マップテクスチャ

以下のようなノイズパターンの法線マップを用意します。

※ 上記画像は縮小しています。Shade3D ver.20以降の場合はShadeExplorerの「イメージ」-「00_New/noise_pattern」から取得できます。

※ ver.19以下のバージョンの場合は、Shade3Dチュートリアルの「「フライパン」のモデリング(PBRマテリアルを割り当て)」からダウンロードできます。

これは、上下左右に並べるとシームレスにつながっているタイリング加工されたテクスチャです。
タイリング加工については「上下左右につなぎ目が見えにくいタイリングテクスチャを作成したい」もご参照くださいませ。

法線マップの動画テクスチャを作成

最終的に、以下のような一方方向にスクロールする動画を作成します。
これはループ再生してもつながって見えるようにしています。

 

この2つの動画はそれぞれで異なる法線マップのテクスチャを与えています。
また、移動の向きが異なり移動速度を変えています。
まずは素材として、この動画を作成します。

「閉じた線形状」を配置

「閉じた線形状」の直方体をXY方向に3000×3000(mm)のサイズで作成します。
これを複製し縦に3つ並べます。

中央の「閉じた線形状」の中心位置が原点に来るようにしています。
サイズは形状情報ウィンドウの「サイズ」で確認、微調整します。

表面材質を指定

法線マップのテクスチャをシーンに読み込んだ後、表面材質を作成します。
これはマスターマテリアル(ver.19以前はマスターサーフェス)としておき、3つの「閉じた線形状」に割り当てます。

「その他」ボタンを押し「陰影付けしない」「影を落とさない」「影を表示しない」チェックボックスをオンにします。
「拡散反射」を1.0の白にします。
「光沢1」を0にします。
マッピングで「イメージ/拡散反射」として凸凹の法線マップのテクスチャを割り当てます。
「イメージ/法線」ではない点に注意してください。
マッピングの「イメージ」タブを選択し、「スムーズ」チェックボックスをオン、反復を3×3にします。
この指定により、以下のように1つの「閉じた線形状」で3×3のタイリングがされた状態になります。

レンダリング画像サイズの変更

イメージウィンドウを表示し、レンダリング画像サイズを512 x 512ピクセルにします。

カメラを配置

-Z方向を向くオブジェクトカメラを配置します。
カメラは、1つの「閉じた線形状」内の1マス分にちょうどフィットするように視野角度を調整します。

カメラとしては、視野角度90度で視点から注視点の距離が500mmの場合、1000 x 1000 mmをレンダリング範囲にできます。

視野角度90度は、「カメラの視野角度から焦点距離を計算 (スクリプト)」のスクリプトで計算すると、
焦点距離18.0になります。
焦点距離18.0をカメラウィンドウで指定します。

ブラウザでオブジェクトカメラを選択し、視点と注視点の位置を指定します。

視点(0, 1000, 500)、注視点(0, 1000, 0)とします。

これでレンダリングすると、ちょうど法線マップのテクスチャがきっちり収まるレンダリングとなります。

直線移動ジョイントを使ってカメラを一方向に動かす

カメラの位置を(0, 1000, 500)から(0, -1000, 500)まで移動させると、上から下まで移動するレンダリング結果を得ることになります。

もともとの法線マップのテクスチャがシームレスに加工済みのため、
これをアニメーションレンダリングするとはじめのフレームと最後のフレームは滑らかにつながります。
1000mm x 1000(mm)の範囲のレンダリングサイズの場合、縦方向もしくは横方向が1000(mm)の倍数の移動量にあわせると
アニメーション時にフレームの最初と最後がつながることになります。

この移動を「直線移動ジョイント」で調整します。
ツールボックスの「パート」-「ジョイント」-「直線移動」を選択し、正面図で上から下にドラッグして直線移動ジョイントを配置します。
この段階では大雑把な配置でかまいません。

ブラウザで直線移動ジョイントを選択し、
形状情報ウィンドウで「始点」をカメラの中心である(0, 1000, 500)、「終点」を(0, -1000, 500)と入力しました。

この直線移動ジョイント内にカメラを入れます。

ブラウザで直線移動ジョイントを選択した状態でモーションウィンドウを表示します。
アニメーション設定ウィンドウを表示し、「フレーム数」を240に変更します。
これがアニメーションレンダリング時の全フレーム数となります。

左上の「シーケンス」チェックボックスがオンになっているのを確認します。
0フレーム目に直線移動ジョイント値0.0、240フレーム目に直線移動ジョイント値1.0のキーフレームを追加しました。

この状態でアニメーションレンダリングすると、冒頭のようなシームレスな動画をレンダリングすることができます。
なお、動画ファイルフォーマットはWindows環境の場合はAVI、Macの場合環境はMOV、Windows/Mac共通ではmp4(Shade3D Ver.21.2以降)となります。

同様に、全体で400フレームの斜めに移動する動画もレンダリングしておきます。
カメラを(-1000, 1000, 500)から(0, -1000, 500)に直線移動しています。

この直線移動を使った動画テクスチャの作成用のシーンはテクスチャを入れ替えるだけで再利用できるため、テンプレート向けシーンとして保存しておいてもいいかもしれません。

これで2つの動画テクスチャが作成できました。

川の流れの表現

川の形状をモデリング

新規シーンを作成し、川の流れを作っていきます。
「開いた線形状」で輪郭を作成します。
以下のように正面図で操作して曲線を作成しました。

自由曲面パートを作成し、ブラウザで「開いた線形状」を中に入れます。
「開いた線形状」をZ方向に複製します。以下のようになりました。

動画テクスチャを読み込み

動画テクスチャをシーンに読み込みます。
この操作は通常のpngやjpeg画像の読み込みと同じです。ツールボックスの「作成」-「その他」-「イメージ」を選択し、
Windows環境の場合は拡張子aviのファイル、Mac環境の場合は拡張子movのファイル、または、Windows/Mac共通では拡張子mp4(Shade3D Ver.21.2以降)のファイルを選択します。

表面材質を割り当て

自由曲面パートに表面材質を割り当てます。

マッピングで「イメージ/法線」として動画テクスチャを割り当てます。
イメージタブで「スムーズ」チェックボックスをオンにし、「反復」を1 x 5としました。
この反復は以下のように線形状と垂直な方向をU、線形状の方向をVとしています。

マッピングレイヤを複製し、もう1つの法線マップも同様に割り当てます。
マッピングのパラメータは1つめのレイヤと同じです。

レンダリング

モーションウィンドウを表示し、アニメーション設定で「フレーム数」を100としました。
「手法」を「レイトレーシング」、「大域照明」を「無し」でアニメーションレンダリングすると以下のようになりました。

流れを逆転させたいため、マッピングのイメージタブで「上下反転」チェックボックスをオンにします。
2レイヤ分同じ処理を行います。

また、2レイヤ目の法線マップをの「適用率」を0.7として少し抑え気味にしました。

アニメーションレンダリングすると以下のようになりました。

水のようにするために表面材質を半透明にし、屈折1.33を与えます。

「拡散反射」を0.0、「反射」を0.3、「透明」を0.7、透明色として水色、「屈折」を1.33、「フレネル」を0.6としました。

無限遠光源の向きを調整、ハイライトを出すための面光源の追加、地面用の形状を配置します。

アニメーションレンダリングすると以下のようになりました。

水の流れを速くする

動画テクスチャを使ったアニメーションでは、動画テクスチャ自身の再生速度を変更するオプションはありません。
そのため、動画速度を変更する場合はオリジナルの動画を作成する際のフレーム数や移動量を調整する必要があります。
動画全体の速度を変える場合は、アニメーション設定の「ステップ」の値を大きくする手段もあります。
以下は「ステップ」を2.0としました。

「ステップ」を2倍にしたため、「フレーム数」を倍の200としてアニメーションレンダリングすると以下のようになりました。

この記事のURLとタイトルをコピーする
Translate »