From BlenderWiki

Jump to: navigation, search

Blender 2.74: パーティクル

Gooseberry ブランチのヘアーシステムへの多数の改良が Blender のメインコードに承認されました。これには次のような物があります:メッシュとの基本的なヘアーの衝突判定に対応、ヘアーシミュレーションがもっとリアルな表現なるよういくつか変更され、Strand(ストランド)形状をコントロールするウィジェット、新しい Kink(ねじれ)モード、パーティクル設定内の新しい表示切り替えなど…。

Hair(ヘアー)

ヘアーダイナミクス

更なる改良
後述のように、この機能は従来のコードの状態から大幅に進化しています。しかし、まだ改善の余地はあります。ヘアーのシミュレーションはまだコンピュータサイエンスと3Dグラフィックスの領域においても歴史が浅く、Blender へのこれらの機能の導入以降も、新しいアルゴリズムやアプローチが多数開発されています。お楽しみに!


  • カット後にヘアーのセグメントの長さに違いが生じることによって起こる、積年の安定性の問題を修正。カットツールの使用により、ほぼ確実に非常に短いヘアーができます。最長のヘアーに対する最短のヘアーの比率が大きすぎると、シミュレーションのソルバーは収束せず、シミュレーションが「爆発」してしまいます(これはすでにSintel オープンムービーの制作時に問題になっています。例えば [1] など)
  • ヘアーが衝突に対応しました! ヘアーがシーン内のオブジェクトとの基本的な衝突判定に対応しました。
セルフコリジョンについての注意:ヘアー用の衝突判定機能は、ヘアーとメッシュとの相互作用として動作しますが、ヘアー同士のセルフコリジョンには対応していません。理由はまず計算コストです。ヘアーの束に自分自身との大量の接触ポイントがある所為で、計算量はとんでもないほど多くなります。

ハイエンドの制作現場では、これらの問題は先進的なスレッディングスキームの使用により部分的に解決してきましたが、典型的な Blender ユーザの場合(小さなスタジオ、低予算)、真のセルフコリジョンの開発は優先度が低くなります。下記の「ボリューメトリック計算」も参照してください。

  • ボリューメトリック計算;現実のヘアーのいくつかの現象は、基本的なジオメトリック・ストランドモデルの代わりに、ボリューメトリックモデルを使用する方が効果的にシミュレートできます。要は流体シミュレーションで使用されるような一定のグリッドを作成し、グリッドセル間でヘアーのプロパティを補間するということです。現在、ヘアーシステムは二つのボリュームベース機能に対応しています。
    • Internal Friction(内部摩擦):ヘアー同士の衝突と摩擦を、近隣のヘアー速度の平滑化でシミュレートします。
    • Target Density(目標密度): 密度が境界より上のヘアーに外向きの力を生成し(膨張させ)、ヘアーが自分自身の中に折り畳まれるのを防ぎます。
  • Bending stiffness(曲げ剛性)の改善: クロスの剛性を表現するのに使用されているフォースモデルは、ストランド形状への適用時はあまりうまく働きません。これでは適度に堅いストランドを作成するのが不可能になり、ソルバーの剛性パラメーターを上げようとすると、不安的になる可能性があります。この新しいフォースモデルではヘアーを曲げるため、角度ばねの実際の一次近似式を生成しています。
古い曲げスプリング
新しい曲げスプリング
さらに真っ直ぐなヘアー形状に戻ったりしない、新しい曲げモデルによって、ヘアー形状の固定が可能になり、実際のグルーミングが非常に楽になりました。



Child Hair(子ヘアー)モディファイアー

  • 子の経路計算が再び正しくスレッド化され、Blender 共通のタスクスケジューラーに統合されました。

Child path calculation is now properly threaded again and integrated into the common Blender task scheduler.

  • 子ストランドの Clumping(集結)と Roughness(粗さ)の量に、"Shape(シェイプ)" 値の代わりにオプションでカーブウィジェットが利用可能になりました。これは抽象的なパラメーターを持つ固有の関数に比べ、非常に柔軟かつ感覚的です。
Clumping(集結)と Roughness(粗さ)用のカーブインターフェイス
子パーティクルでのカーブの効果
  • Curl(カール)半径が親との距離ではなく、ユーザー設定のパラメーターを使用するようになりました。自然のヘアーのカール半径は、成長パターンと材質にのみ左右されるため、大幅にリアルになります。親の周囲のヘアーのグルーピングは副次的な効果(Clump:集結)の一つで、カールの半径や頻度には影響しません。
  • 新しい Kink(ねじれ)モード:"Spiral"(らせん)。このモードは各ヘアーの終端にらせんを生成します。Radius(半径)と※Frequency(頻度)パラメーターは全体の大きさを決め、一方 Shape(シェイプ)パラメーターはらせんを内側または外側に伸ばします。(※訳注:原文では Resolution)
Kink(ねじれ)の Spiral(らせん)設定
Spiral(らせん)を設定した Simple(シンプル)子パーティクル
Spiral(らせん)を使用したキャラクタ、Victor
Blender3D FreeTip.gif
方向の制限
ヘアーが真っ直ぐ上(選択した Spiral(らせん)の座標軸、デフォルトは Z)を向いている時、らせんは表示されません! これは使用されている投影方法の制限の一つです。少し傾けるか、ヘアーの方向をランダムにすることでこれを解決できます。


ツールとオペレーター

  • モディファイアーのパーティクルシステム用切り替えボタンがパーティクルシステムリスト内にも表示されるように。これはパーティクルシステムのON/OFFを切り替える際、パーティクルプロパティとモディファイアープロパティを行き来するのに比べてはるかに便利です
Particle System Toggle Buttons
  • "Copy Particle Systems(パーティクルシステムをコピー)" は新しいオペレーターの一つで、パーティクル/ヘアーシステム全体をあるオブジェクトから他のオブジェクトにコピーできます。

これには後に発生する可能性のあるグルーミングデータ(「ヘアー編集」)も含まれます。これは潜在的にグルーミング開始後にメッシュが少し変更される可能性がある制作パイプラインでは重要です。

Connect/Disconnect(接続と切断)について:Particle Edit Mode(パーティクル編集モード)での Connect/Disconnect(接続と切断)機能はこのオペレーターに似ていますが、こちらはどういうわけか、メッシュデータとその他すべてを、パーティクルシステムのオブジェクトに転送する必要があります。上記のコピーオペレーターは逆で、むしろパーティクルシステムを他のオブジェクトにコピーするため、非常に便利でリスクも少なくなっています
その他のデータについて:パーティクルシステムは同じ設定を共有しますが、UVマップやテクスチャ、マテリアルなどのように、パーティクルシステムと共にコピーされない依存関係がある可能性があります。つまり、別のオブジェクトで同じ結果を得るには、これらの付随的な機能は手動でコピー、調整する必要があるかもしれないということです。
パーティクルシステムをコピーするボタン
アクティブなシステムのコピー後
  • "Shape Cut(シェイプカット)" グルーミングツールは、メッシュオブジェクト境界を使用し、ヘアーを整えます。これはカッティングツールを使用するのに比べ、ヘアーが突き抜けるのを手っ取り早く回避できる方法です。特に広範囲に毛が生えているキャラクタで、一つの平面内でカッティングツールで作業すると面倒になる場合に有効です。
Shape cut(シェイプカット)ツール使用前
シェイプオブジェクトの設定
ツール使用後
  • Particle Instance(パーティクルコピー)モディファイアーへの Twist-Minimum(ねじれ最小)カーブモードの使用。醜いアーティファクトとメッシュの面の劣化を除去します。
    Minimum-Twist particle curves

開発者用ツールと内部の改良

  • 新しいコードライブラリ `bf_physics`。`blenkernel` があちこちに散らばるのを回避し、C++ コードとの統合が簡単になります。
  • クロスとヘアーのマス・スプリングシステムソルバーが汎用化されました。現在のパーティクルはまだ仲介するためのダミーのクロスモディファイアーを使用していますが、最終的には API を直接使用するようになるでしょう。
  • Eigen3ライブラリを元にした、ラグランジュ・クロス/ヘアー力学方程式用の代替ソルバー(WIP)
  • すばやくポイントやベクトル、ラインなどを表示する、新しいビジュアルデバッグユーティリティシステム。これは、通常はビューポートに表示されない、抽象的な物理特性について作業する時に大いに役立ちます。