createHairMaxDensity
デフォルト値は 100 です。この値を大きくするには次を入力します。
optionVar -intValue createHairMaxDensity 150;
これにより、サーフェス上で作成またはペイントできるヘアの行/列の最大値が決まります。この解像度によるグリッド内での位置に基づいて毛根に名前が付きます。このような名付けが行われるのは、ヘア ペイント ツール(Paint Hair Tool)が名前を頼りに任意の UV におけるヘアを検索しているためです。
変数が大きくなると、サーフェス上ではより多くの数の毛根がペイント可能になります。ただし、毛根の密度が小さくてもペイントが遅くなります。この変数を変更すると、作成済みのヘア システムがペイントできなくなります(1 つの領域でのペイントがブラシの下にない毛根に影響する可能性があります)。
pfxstrokes コマンドの基本的な使用法は、ペイント エフェクト チューブの情報をファイルに落とすことです。これは、ペイント エフェクトからカーブを生成したり、別のレンダラに情報を送る場合に便利です。チューブ(Tubes)がオンになると、ヘアやブラシには異なるデータ フォーマットが使用されます。
ペイント エフェクトは runtime と create の MEL スクリプトを呼び出せます。これらはブラシ ノードの文字列アトリビュート paint create func および paint runtime func として定義されます。文字列は呼び出す関数の名前に設定します。MEL 関数は、渡して戻す必要のある特定の引数の集合を持ちます。ワークフローは、付属のテンプレート MEL ファイルのいずれかをコピーし、関数名とファイル名を変更し、次に関数の各要素を編集します。Runtime または Create 関数がブラシに定義されていると、ストロークを描画したときに関数が呼び出されます。pfxstrokes コマンドは、何も描画せずに、ストロークを再描画せよという呼び出しを擬似的に実行します。このため、pfxstrokes コマンドの実行時にはこれらのスクリプトも評価されます。
毛根ノードはポリゴン コンストレイン上の点として使用できます。1 つの方法は、ヘアをいくつか作成してから、毛根以外のすべてを削除することです。たとえば、ヘア システム、pfxHair、開始位置カーブなどを削除します。次いでオブジェクトを毛根の下にペアレント化します。あるいは、スクリプトの毛根ノードを使用します。
以下は、ポリゴンの球体のサーフェスに円錐をコンストレインするスクリプトの例です。円錐は法線およびポリゴンに定義された UV 点の接線を基準に動きます (ポリゴンの UV セットで未定義の値に UV が設定されていると、円錐は球体の中心に表示されます)。
// create a cone, poly sphere and a follicle node
string $sphere[] = `polySphere`;
string $cone[] = `cone`;
string $fol = `createNode follicle`;
// get the parent transforms of the follicle
string $folTform[] = `listTransforms $fol`;
// connect the sphere to the follicle
connectAttr ($sphere[0] + ".outMesh") ($fol + ".inputMesh");
connectAttr ($sphere[0] + ".worldMatrix[0]") ($fol + ".inputWorldMatrix");
// apply the follicle output positions to its own transform
connectAttr ($fol + ".outTranslate") ($folTform[0] + ".translate" );
connectAttr ($fol + ".outRotate") ($folTform[0] + ".rotate" );
// parent the cone under the follicle
parent -r $cone[0] $folTform[0];
// the default uv of 0 0 doesn't exist on the poly sphere, so we set it
setAttr ($fol + ".parameterV") 0.5;
// rotate the cone to point along the normal
setAttr ($cone[0] + ".rotateY") -90;
トランスフォーム(Transform) コンストレインとグループを使用したり、動くオブジェクトに hairConstraint ノードをコンストレインします。オブジェクトのツイストと回転に従って剛性のあるものがくっついたバネのような動作をするように、ダイナミック カーブをロックする必要があります。ダイナミック カーブがうまくアタッチされない場合は、コンストレインを持ったバグです。相対的なコンストレイン位置は開始フレームで定義されるため、開始フレームではなんのフォースも適用されません。開始(Start)カーブは、縄を握っている手によってモデリングする必要があります。
縄跳びの縄の場合も、根元の近くに来る手の毛根をグループ化し、もう一方の手にグループ化された縄の端にトランスフォーム コンストレインを使用することで処理できます。ただし、follicleShape ノードのポイントのロック(Point Lock)アトリビュートのアタッチなし(No Attach)オプションで開始点をコンストレインすることはできません。アタッチなしでは、開始点は重力の影響で移動し続け、カーブの張力やコンストレインによって引っ張られることはありません。
ヘア カーブは、動くオブジェクトに対してペアレント化してワイヤ デフォーマとして適用する場合に、小刻みなエフェクトを表現するような場合に便利です。ヘアをワイヤ デフォーマとして使用して、サーフェスのすべてまたは一部をダイナミックにすることができます。