CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blener 3.5】FAQ:パーティクルで困ったときの対処法
こんにちは!
コチラの記事では、フリーの3DCGソフト「Blender」での作品作りのヒントとなる情報をまとめています。
今回は、「パーティクル」に関するFAQ(よくある質問・困りごと)とその対処法をまとめてみました。
「パーティクル」には、粒子を表現するエミッターパーティクルと、髪の毛などを表現するヘアーパーティクルがありますが、こちらの記事ではその両方の悩み事を取り上げます。
水しぶきなどの粒子を表現できるエミッターパーティクルの基本的な使い方を知りたい方は、こちらの記事を参照してください。
髪の毛や草原などを表現できるヘアーパーティクルの基本的な使い方を知りたい方は、こちらの記事を参照してください。
パーティクルにまつわるいろんな悩み事と対処法をまとめたので、以下の目次から気になる項目に飛んでみてください。
表示されない・レンダリング結果に反映されない
パーティクルで最も多い悩みの一つは、「パーティクルが表示されない」「レンダリング結果に反映されない」ことではないでしょうか。
原因と解決方法をいくつか紹介します。
インスタンスオブジェクトを設定しよう
「パーティクルプロパティ」からパーティクルを追加し「エミッター」に設定すると、こちらのように粒子が放出されます。
ですが、このままではパーティクルはレンダリング結果に反映されません。
「パーティクルプロパティ→レンダー→レンダリング方法」を、「ハロー」から「オブジェクト」または「コレクション」に変更する必要があります。
「オブジェクト」を選択した場合、別のメッシュオブジェクトをインスタンスオブジェクトに設定することで、レンダリング結果に反映されます。
パーティクルスロットを確認しよう
パーティクルスロットで、パーティクルのビューポート・レンダリング結果に反映するかどうかを設定できます。
レンダー無効になっているとレンダリング結果に反映されないので、注意してください。
ヘアーパーティクルの詳細設定を確認しよう
ヘアーパーティクルの場合、「速度→ノーマル」が0になっているとパーティクルが表示されません。
「詳細設定」にチェックを入れると「速度」の項目が表示されるので、確認してみてください。
サイズがおかしい
「パーティクルのサイズがおかしい」場合の対処方法を紹介します。
元オブジェクトのサイズを変更する
パーティクルのインスタンスオブジェクトを使用している場合、元オブジェクトを選択してSキーでサイズを変更すると、パーティクルにも反映されます。
これがサイズを調整するいちばん手っ取り早いやり方になります。
スケールを変更しよう
パーティクルプロパティの「レンダー→スケール」でサイズを調節できます。
「スケールのランダム化」の数値を上げると、パーティクルのサイズをランダムにすることもできます。
ヘアー長を調整しよう
ヘアーパーティクルの場合は、パーティクルプロパティの「発生→ヘアー長」で長さを調節できます。
ヘアーパーティクル編集モードを使う
ヘアーパーティクルには、ヘアーの密度や長さを調節できる「パーティクル編集モード」があります。
「Ctrl+Tab」で表示されるパイメニューから「パーティクル編集」を選択します。
「カット」(ハサミのマーク)を選択し、切りたいところでマウス左クリックドラッグすると、ヘアーを短くすることができます。
また、「長さ」を選択し、ヘッダーの「伸長」を選んでヘアーパーティクルの上で左クリックするとヘアーが伸び、「収縮」を選ぶと短くなります。
ウェイトペイントで調整する
ヘアーパーティクルの長さは、ウェイトペイントで調節することができます。
こちらのように、ウェイトペイントを行った後、「頂点グループ」→「長さ」で、ウェイトペイントで作った頂点グループを選択すると、赤い箇所は長く、青い箇所は短くなります。
ちなみに、長さだけでなく密度なども同じようにウェイトペイントで調節できます。
アーマチュアとメッシュオブジェクトの関連付けなどでよく使う「ウェイトペイント」の基本的な使い方は、こちらの記事を参考にしてみてください。
向きがおかしい
パーティクルの向きがおかしいときの調節方法を紹介します。
親オブジェクトの向きを調節しよう
パーティクルにインスタンスオブジェクトを使用する場合、インスタンスオブジェクトの+Y方向が法線方向になるようにパーティクルが生成されます。
そのため、たとえばモンキーオブジェクトをパーティクルとして生成した場合、こちらのように後頭部から生えてきます。
インスタンスオブジェクトの上下方向とパーティクルの法線方向を一致させたい場合は、編集モードで頂点を全選択し、「R→X→-90」でX軸回りに-90度回転させてください。
「回転」の向きを調節しよう
木や草を生やす場合など、オブジェクトの向きがそろってしまって違和感を感じる場合は、「回転」にチェックを入れて、以下のように設定してみてください。
- 回転する軸:ノーマル
- 位相のランダム化:2.0
ヘアーパーティクルの場合は、「詳細設定」にチェックを入れると「回転」の項目が表示されます。
パーティクルヘアーが太すぎる/細すぎる
「パーティクルヘアーが太すぎる/細すぎる」場合の対処法を紹介します。
パーティクルプロパティの「ヘアー形状」を設定しよう
パーティクルヘアーの「ヘアー形状」→「直径のスケール」を変更することで、ヘアーパーティクルの太さを調節できます。
(Eeveeの場合)レンダープロパティを設定しよう
レンダリングエンジンにEeveeを使用している場合は、ヘアーの太さをレンダリング結果に反映するのに「レンダープロパティ」で表示設定の変更が必要です。
「カーブ→シェイプ」を「ストランド」から「ストリップ」に変更すると、ヘアーの太さがレンダリング結果に反映されます。
高速な描画ができる、Blender標準搭載レンダリングエンジン「Eevee」の使い方は、こちらの記事を参考にしてみてください。
パーティクルが重い
パーティクルが「重い」「フリーズする」「Blenderが落ちる」場合の対処法について紹介します。
パソコンのスペックを確認しよう
パーティクルはかなりCPUやメモリーを消費するため、快適に作業を行うには十分なスペックを持つパソコンが必要です。
パソコンの性能が不足していると、パーティクルを追加するとフリーズしたり、Blenderが落ちる可能性があります。
Blenderを使うのに必要・推奨なPCスペックは、Blender公式サイトの「Hardware Requirements(機材の要求)」に記載されています。
お使いのパソコンのスペックが「Recommended」のスペックを満足すれば、(一般的な使用用途であれば)Blenderが重くならず、快適に使えますので、ご検討してみてください。
Blenderを扱う上で重要なパソコンの部品「CPU」「GPU」については、こちらの記事で解説しているのであわせて参考にしてみてください。
パーティクルの個数(密度)を見直そう
パーティクルが必要以上に多いと、パソコンの動作が重くなってしまいます。
パーティクルを増やしたい場合は、自動で補間してくれる「子パーティクル」を使うのが、比較的軽いのでおすすめです。
子パーティクルの詳しい設定方法は、こちらの記事を参考にしてみてください。
インスタンスオブジェクトのポリゴン数を減らす
メッシュが細かすぎても、パーティクルを追加したときのBlenderの動作が重くなってしまいます。
サブディビジョンなどは必要以上に追加しないことをおすすめします。
パーティクルが消えてしまう
パーティクルが消えてしまう場合の対処法について紹介します。
寿命を設定しよう
エミッターパーティクルは、デフォルトでパーティクルプロパティの「発生→寿命」が50フレームに設定されているので、アニメーションの途中で消えてしまいます。
アニメーションの最後まで残したい場合は、寿命の数値を上げましょう。
終了フレームを設定しよう
エミッターパーティクルは、デフォルトで「終了フレーム」が200フレームに設定されているので、アニメーションのフレーム数がそれ以上に多い場合は途中でパーティクルの発生が止まってしまいます。
アニメーションの最後までパーティクルを発生し続けたい場合は、終了フレームの数値を上げましょう。
キャッシュをベイクしよう
Blenderを終了すると、生成したパーティクルは消えてしまいます。
タイムラインを再生すると再度演算が行われてパーティクルが生成されますが、パーティクルの生成結果を残しておきたいときは「キャッシュ」をベイクしましょう。
パーティクルプロパティの「キャッシュ」→「ベイク」または「全物理演算をベイク」すると、blendファイル内にキャッシュが保存されます。
ちなみに、パーティクルのベイクは「レンダリングがうまくいかない」時にも有効ですので、試してみてください。
パーティクルが貫通してしまう・めり込む
パーティクルが貫通する・めり込む場合の対処法を紹介します。
コリジョン(当たり判定)を設定しよう
基本的にパーティクルは他のオブジェクトの影響を受けません。
そのため、パーティクルが他のオブジェクトと衝突したり、ヘアーが他のオブジェクトと干渉して曲がったりするためには、対象オブジェクトに「コリジョン」を設定する必要があります。
対象オブジェクトを選択し、「物理演算プロパティ」→「コリジョン」を追加すると、パーティクルが跳ね返るようになります。
ヘアーパーティクルの場合は、「ヘアーダイナミクス」を有効にすることで、こちらのようにコリジョンに追従します。
「キャッシュをベイク」せずにレンダリングすると貫通してしまう場合があるので、必ずレンダリングする前に、パーティクルのキャッシュをベイクしておいてください。
オブジェクト同士の衝突判定を追加できる「コリジョン」の設定方法や使い方については、こちらの記事を参考にしてみてください。
パーティクル同士が貫通・重ならないようにする方法
パーティクルアニメーションを行うと、通常はパーティクル同士の衝突は判定されないため、パーティクル同士はすり抜けます。
実際の粒子の運動のように粒子同士の衝突を表現する方法は以下の2通りの方法があります。
- 「物理演算」の「物理タイプ」を「流体」にする
- 無料アドオン「Molucular+」を使う
「物理演算」の「物理タイプ」を「流体」にする
パーティクルプロパティの「物理演算」で、物理タイプを「流体」に設定します。
パーティクルプロパティで以下を設定してみてください。
- 衝突
- 「衝突にサイズを反映」を有効にする
- ばね
- 「力」を10に
- 詳細設定
- 「反発係数」を10に
- 「相互作用半径」を1に
こんな風に、少しパーティクル同士が重なってしまいますが、パーティクル同士の相互作用を表現できます。
無料アドオン「Molecular+」を使う
粒子のアニメーションを表現できる無料アドオン「Molecular+(モレキュラープラス)」を使うことで、標準機能ではできない、粒子の「衝突」「積み重ね」「粘着」といった相互作用を表現することができます。
Moldcular+は、こちらのリンク先から最新版をダウンロードできます。
Blender 3.0以降の場合は、ファイル名に「310」を含むバージョンのZIPファイルをダウンロードしてください。
Blenderを開き、「編集」→「プリファレンス」→「アドオン」から、ダウンロードしたZIPファイルを選択して「アドオンをインストール」を選択します。
「プリファレンス→アドオン」から、「物理演算:Molecular+」にチェックを入れてください。
使う際は、サイドメニューの「Molecular+」メニューから、「Emitter(エミッター)」と「Collider(コリジョン)」を設定した後、パーティクルプロパティ上で設定を行います。
「Start Simulation」をクリックすると、こんな風にパーティクルが積み重なるアニメーションを作ることができます。
パーティクルの表現の幅が広がるので、ぜひ試してみてください!
Blenderの機能を拡張できる「アドオン」のインストール・有効化については、こちらの記事を参考にしてみてください。
パーティクルをFBXにエクスポートしたい
パーティクルはBlender内でしか使えないため、たとえばUnityなどの外部ソフト用に「FBX」形式などでモデルをエクスポートする時には、変換する必要があります。
パーティクルをFBXファイルにエクスポートするために、メッシュオブジェクトに変換する方法を紹介します。
ちなみに、Blenderで作成したモデルやアニメーションをFBXファイルにエクスポートする方法については、こちらの記事を参考にしてみてください。
パーティクルの実体化
エミッターパーティクルの場合、モディファイアープロパティから「インスタンスを実体化」を選択することで、あるタイムフレームでのパーティクルをまとめてメッシュオブジェクトに変換することができます。
変換できるのはあるタイムフレームの状態だけで、アニメーションは作れないので注意してください。
ヘアーパーティクルも、こちらのようにモディファイアープロパティから「メッシュに変換」でメッシュオブジェクトに変換することができます。
ただし、このままでは太さがなくレンダリング結果に反映されません。
カーブオブジェクトに変換し、「オブジェクトデータプロパティ」から「ジオメトリ」→「ベベル」の深度を設定することでヘアーを太くできます。
最後にカーブからメッシュに変換することで、ヘアーをFBXにエクスポートできるようになります。
エミッターパーティクルをアニメーションとして書き出す
Blenderの標準機能ではパーティクルアニメーションをアニメーションに変換することはできません。
ただし、Blenderの情報交換サイト「StackExchange」で公開されているPythonスクリプトを使うことで、パーティクルをメッシュオブジェクトのアニメーションに変換することができます。
こちらのリンク先にアクセスし、「Works for 3.4」のオレンジ色の枠で囲った部分をコピーしてください。
以下のように、スクリプトを貼り付けて実行してください。
このとき、エミッターオブジェクトがアクティブ(オレンジ色)になるように、エミッターオブジェクト→インスタンスオブジェクトの順にクリックしてください。
スクリプトを実行すると、パーティクル一つ一つがメッシュオブジェクトに変換され、キーフレームアニメーションが追加されます。
生成したオブジェクトをアニメーションと一緒にFBXファイルにエクスポートすることで、Unityなどの外部ソフトでもパーティクルアニメーションが見れるようになります。
Blender上でPythonスクリプトを使用する基本的なやり方については、こちらの記事を参考にしてみてください。
まとめ
「パーティクル」に関するFAQとその対処法について紹介しましたが、いかがだったでしょうか?
パーティクルは非常に設定項目が多いため、つまづく箇所は人それぞれだと思います。
もし記事を読んで対処法を試してみてもうまくいかない場合は、一緒に考えたいのでお悩みをコメントで教えてください!
また、上に挙げた以外の悩みをお持ちの方もいらっしゃると思いますので、その場合もコメントで教えていただければと思います。
Blenderで「?」となったとき
Blenderは多機能すぎて、色々と詰まるポイントがあります。
「解決策が分からずに数時間潰した…」という経験はほとんどの人が通ってきた道だと思います。
当メディアではそんな人たちのために、各機能ごとでよくある詰まりポイントをまとめた「FAQ記事」を多くそろえております。
以下のリンク先にFAQ記事がまとまっているので、Blenderで何か困ったときにはぜひこちらを参考にしてみてください。