カーブモデリング
カーブモデリングは、滑らかな形状を描画するために、ベジェカーブやNURBSカーブを活用する技術です。それぞれ特徴があり、用途に応じて選択します
- ベジェカーブ:直感的に操作可能で、アンカーポイントとハンドルを使って自由な形状を作成できます
ただし、複雑な形状の再現には限界があります - NURBSカーブ: 精密で複雑な曲線や曲面をモデリングするのに適しており、高度なデザインに向いています
カーブを使うことで、流れるようなオブジェクトや複雑な形状を効率的にモデル化できます
カーブの追加
- 「Shift + A」で「カーブ」から追加
- 種類を選択:
- ベジェ: アンカーポイントとハンドルで形状を制御
- パス: NURBS形式で、滑らかかつ編集が簡単
移動経路の設定に便利
カーブの編集
カーブを追加後、「編集モード」に切り替えると形状を編集できます
他のオブジェクトと同様に「Gキー(移動)」「Rキー(回転)」「Sキー(拡大縮小)」で調整
制御点操作
- 制御点を増やす:制御点を選択して「Eキー」で押し出し。
- 制御点を結合:shiftで複数の制御点を選択し、「Fキー」で結合。
- セグメント間の接続を切る:両端の制御点を選択し、「Xキー」→「セグメント」を選択
ハンドル操作
制御点を選択して「Vキー」を押すとハンドルタイプを変更できます
- ベクトル:角を作る
- フリー:両方のハンドルを独立して操作可能
滑らかさの調整
- 「Shift + N」で法線方向を修正
- 制御点を選択し、右クリック→「スムース」でカーブを滑らかに
カーブの3D化
カーブのオブジェクトデータプロパティを調整して3Dオブジェクトを作成します
- 2Dと3Dの選択
カーブを2D平面内(XY平面上)または3D空間内で使用するか選択 - ジオメトリ設定
- 「ジオメトリ」→「ベベル」で断面形状を設定
- 断面形状は「丸め」「オブジェクト」「断面」から選択可能
- 例えば、カーブの円を「オブジェクト」として選択すると断面が円形になります
- 断面の「平均傾き」や「平均半径」の変更
編集モードでカーブを選択
Nキーを押してサイドバーを開き「アイテム」タブを選択- 平均傾き:カーブの断面がどの方向に傾くかを制御する値
- 平均半径:カーブの断面の全体的なスケール(太さ)を調整する値
ドローツールでカーブを描く
- カーブを追加し「編集モード」に切り替える
- ツールバーから「Draw」ツールを選択
- 3Dビュー内で直接ドラッグしてカーブを描画
- 描いたカーブは、アンカーポイントやハンドルを調整して形状を整えます
カーブを3Dオブジェクトとして完成させた後、メッシュに変換
- オブジェクトモードでカーブを選択
- 右クリック→「変換」→「メッシュ」を選択
*オブジェクトデータプロパティの中にある「解像度」設定を調整すると、カーブがメッシュに変換された時に頂点の数が変わります
解像度が高いほど、カーブが滑らかに表示され、多くの中間頂点が生成されます
パスアニメーション
事前に定義されたパス(通常は曲線や直線)に沿って動くアニメーション
オブジェクトをパスに追従させる方法
- オブジェクトとパスを「親子関係」で結び付ける
*パスの長さがアニメーションの長さを決定し、キーフレームを設定する必要はありません - オブジェクトに「パスに追従」コンストレイントを追加する
*コンストレイントの設定を通じて、オフセットやフォロー速度、パスの開始と終了のタイミングなど、より詳細な調整が可能で親子関係に依存しない
オブジェクトとパスを「親子関係」で結び付ける方法
- Shift + Aからカーブから「パス(例として)」を追加して軌道を作成
- 編集モードでアニメーションの始点となる頂点を選択して、Shift+Sから「カーソル→選択物」
移動させたいオブジェクトを選択してShift+Sから「選択物→カーソル」
で始点にオブジェクトを移動させます - オブジェクトとパスを選択して「Ctrl+P」で「パスに追従」
*これでパスの形状に沿ってオブジェクトを動かすことができる - パスの形状を編集する
- デフォルトでは一定の間隔でアニメーションするので、減速や加速をしたい場合は
パスのオブジェクトデータプロパティの「パスアニメーション」の「評価時間」を0
右クリックして「キーフレームをクリア」
タイムラインの任意のフレームに「評価時間」のキーフレームを挿入しいく
「パスに追従」コンストレイントを追加する方法
- Shift + Aからカーブから「パス(例として)」を追加して軌道を作成
- アニメーションさせたいオブジェクトを選択
- オブジェクト今ストレイトプロパティで「パスに追従」を追加
- 「ターゲット」にカーブオブジェクトを設定。
- 「オフセット」を調整してオブジェクトをカーブ上で移動させる
- タイムラインで「オフセット」にキーフレームを設定
作成したパスアニメーションをThree.jsで利用するには、アニメーションをベイクして
glTF形式でエクスポート
- オブジェクト > アニメーション > アクションをベイク
- 設定ウィンドウで以下のオプションをチェック
コンストレインクリア(コンストレインを使った場合)
親子関係をクリア(親子関係を使った場合) - 「OK」をクリック
スクリューモディファイア
ジオメトリを螺旋状や円柱状に回転させ、形状を作り出すためのモディファイア
スクリューモディファイアは原点の位置を基準に回転する
余談
スクリューモディファイアなど、原点に依存するモディファイアは、オブジェクトの原点が正しい位置にあることが重要
- オブジェクトモードでの移動・回転・スケール → 原点を基準にオブジェクト全体が移動や変形
- 編集モードでの移動・回転・スケール → 原点は固定されたまま、ジオメトリのみ移動や変形
平面を追加して下の頂点2つを削除
スクリューモディファイアを追加して座標軸をXにする
設定を調整
- 角度
螺旋の回転角度(360度で1周) - スクリュー
螺旋1周あたりの高さ(進み具合)を設定 - 反復
螺旋を繰り返す回数 - ビューのステップ
螺旋の分割数(この値が高いほど滑らかになる) - 座標軸
螺旋を作る回転軸
カーブモディファイアを使用すると、オブジェクトを指定した曲線(カーブ)に沿って配置することができます
- Shift + A を押して、「カーブ」 > カーブタイプを追加
- 配置するオブジェクトを選択
モディファイアプロパティから「カーブモディファイア」を追加
「オブジェクト」のフィールドで、作成したカーブを指定
*変形軸:オブジェクトが期待通りに配置されない場合はこの設定を変更
パーティクルを使ってオブジェクトを配置
パーティクルシステムの概要
パーティクルシステムはオブジェクトやエフェクトを多数生成し、アニメーションや特殊効果を簡単に作成するための機能で、髪の毛、草、煙、炎、雨、雪、さらにはオブジェクトの複製など、さまざまな用途に活用できます
パーティクルシステムの種類
- エミッター:パーティクルを特定の地点から放出
煙、炎、雨、雪などのシミュレーションに使用 - ヘアー:パーティクルを静的に生成し、髪の毛や草、ファーのような効果を表現
ヘアーを使用して、コレクション内の複数のオブジェクトをランダムに配置
最終的にすべてのオブジェクトを1つのメッシュに統合
1:ランダムに配置するためのオブジェクトを作成
複数の場合は作成したオブジェクトを1つのコレクションにまとめる
ポイント:平面に接するようにオブジェクトを配置する場合
各オブジェクトの原点
をYを上に向け(rx90)、底辺に移動
2:オブジェクトのマテリアルについて
オブジェクトごとに異なるマテリアルを手動で設定する場合は問題ないのですが
シェーダーで「オブジェクト」ノードを使用し「ランダム」な色を付与した場合、ビューポート上ではランダムな色で表示されます
ただし、このままオブジェクトを「統合」すると、ランダムな色の分け方が失われ、1つのオブジェクトとして認識されるため、統合後は色分けができません
*いろいろ試したのですが最終的に統合した場合、ランダムな色分けを維持することはできませんでした
オブジェクトごとの色分けになります
「オブジェクト」ノードを使用し「ランダム」な色を付与する場合の設定を利用して
カラー属性(頂点カラー)にベイクする方法を試したので、メモとして残します
- オブジェクト情報ノードのランダム出力を
- カラーランプノードの係数につなぐ
*スライダー位置を均等にして一定で色を割り当てる - プリンシプルBSDFノードのベースカラーにつなぐ
それぞれのオブジェクトに「カラー属性」を追加する
「オブジェクトデータプロパティ」を開き
「カラー属性」セクションで「+」ボタンを押し、新しい頂点カラーを追加
*カラー属性を作成し、ベイク結果の保存先を用意する必要がある
3:配置したい場所となる「平面」を作成
*配置する場所と配置しない場所の設定する場合
ウェイトを設定します(その場合は平面の頂点を増やす必要があります)
4:パーティクルを設定
「平面」を選択し、プロパティエディタの「パーティクルプロパティ」タブを開き、新しいパーティクルシステムを追加
- ヘアーを選択
- 配置するオブジェクトの数を設定
- レンダーでコレクション(オブジェクトの場合はオブジェクト)を選択
- 作成したコレクションを選択
*最終的にオブジェクトが不要な場合はエミュターを表示のチェックを外す
ウェイトを設定した場合は「頂点グループ」の「密度」に作成された頂点グループを設定する
スケールや回転をランダムにする場合
*回転を表示するには詳細設定にチェックをつける
それぞれのオブジェクトはランダムな色で配置されている
5:「カラー属性」にカラー情報をベイクする
- オブジェクトを選択(カラー属性をアクティブにする)
*「カラー属性」ノードを追加して作成したカラー属性を選択する - 「レンダープロパティ」を開き、レンダーエンジンを「Cycles」に切り替える
- 「ベイク」セクションを展開して
ベイクタイプ:ディフューズを選択
影響:カラーのみ有効にする
ベイクを実行 - 全てのオブジェクトでベイクを実行したら
カラー属性ノードのカラーをプリンシプルBSDFノードのベースカラーにつなぐ
残念ながらオブジェクトごとの色分けになってしまいます😂
6:パーティクルシステムを適用して1つのメッシュに統合
- 「平面」を選択
Ctrl + Aで「インスタンスを実体化」を選択
*パーティクルで生成されたすべてのオブジェクトが独立したオブジェクトとして作成されます - すべての配置されたオブジェクトを選択
Ctrl + Jで1つのメッシュに統合