Blender学習 シェーダ関連
タイムラインと物理演算のアニメーションを同期させたい
例) 背景:海洋モディファイアーの時間で変化させることで、そのタイミングにおける波の様子(スナップショット)は表示されるけどいちいち時間を変えてアニメーションさせるのは大変。 要求:タイムラインを再生(spaceキー)させた時、フレームと同期して海洋モディファイアーも同期して変化してほしい
- 平面オブジェクトを作る
- モディファイアーを追加から、物理演算 > 海洋を選択
- 時間フィールドに
#frame/100と入力 - タイムラインを再生する
#frame/100 の式の意味って何?
→ 現在のフレーム番号÷100。フレーム1なら0.01, フレーム50なら0.5 というように時間経過とともに別々の値が時間フィールドに設定されることで波が動いて見える。
割数が小さければアニメーションが早く動くし、大きければゆっくり動く。(#frame/5 の方が、#frame/200 よりも早く動く。)
そりゃ割る数が小さければ、その分途中のフレームをかなりすっ飛ばして表示しているから早く見えるか🤔
再生したフレームを初期位置に戻したい
spaceキーでフレームを再生して、また最初から見たい時にマウスで調整しながら初期位置に持っていくのが面倒..
その悩みを「shift+←」で解決できる
マテリアルとは
英語の意味としては「材料」「物質」「資材」と言った意味合い
Blenderのコンテキストでは、オブジェクトの表面がどのように見えるか(どんな素材か・材質かなど)を定義するもの。色や光沢、透明度・自然発酵などをまとめて管理している。
シェーダとは
マテリアルの設定に沿ってBlender内部で光の反射計算などを走らせて実際に表示するピクセルの色を決める。 シェーダがあることで、Blenderユーザーは宣言的にマテリアルを構築できるのだ! ユーザーはこんな感じの色にしたい〜を表現したいだけで、その色を表現するための物理的な計算とかしたくないからね😇
BSDFとは
Bidirectional Scattering Distribution Functionの略。 双方向散乱分布関数って日本語では言うらしい。 光が表面(サーフェス)に当たった時、どの方向にどれだけの光が散乱するかを数学的に記述した関数
BSDFという大きな括りの中で、粗さ、透明度、色など光に関連する特定の属性に特化したBSDFが存在している。 特化したBSDFがそれぞれノードという概念で存在していて、それらをシェーダーエディタで組み合わせて最終的なマテリアルを完成させている!
BSDF(大分類)
├── Diffuse BSDF → 拡散反射(マットな色)に特化
├── Glossy BSDF → 光沢反射に特化
├── Glass BSDF → ガラス透過に特化
├── Transparent BSDF → 透明度に特化
└── ... など
とはいえ、シンプルなマテリアルでいいならプリンシプルBSDFで包括的に設定できる。(プリンシプルBSDFはBlender固有の概念じゃなくて、Desneyが提唱した Princepled BSDFがベースみたい)
参考:シェーダーエディターとシェーダーの効果を初心者向けに解説 - Vook
まとめ: 複雑なマテリアルを表現したいならシェーダーエディタで、ノード(BSDF)を組み合わせろ!ただし、ノードはBSDF以外にも存在する!(ノイズテクスチャとかね)