次のセクションには、XGen ワークフローで使用できるヒントが含まれています。
アトリビュートの補正を使用するときに、場合によってモデル内のフェースが適切に位置揃えが行われません。たとえば、V のティルト=1(Tilt V=1)(エクスプレッションで使用する場合は OffU)を設定してすべてのプリミティブが同じ方向に向かないようにすることができます。このように位置が揃わないのは、XGen がそのモデルの固有の、CV の巻上げ順序から派生したパラメータを使用しているためです。
位置が揃っていないフェースを補正するには:
float upOrDown: (abs(dot(norm($dPdv),[0,1,0]))>0.6 || abs(dot(norm($dPdu),[0,1,0]))>0.6)? 1 : 0 float flipY: (abs(dot(norm($dPdu),[0,1,0]))>0.6)?90 : 0 float flipZ: (abs(dot(norm($dPdu),[0,0,1]))>0.6)?90 : 0
twist: upOrDown() ? flipY() :flipZ()
法線を軸にプリミティブのみカメラに正対させるには、次の操作を行います。
プリミティブを回転させてカメラに向くようにするには:
length: 0.3 width: 1.0 offV: 1.0 aboutN: $eye=norm($cam-$P);$ang=acosd(dot( $eye,[0,0,1])); $axis=cross([0,0,1],$eye); dot($axis,$N)>0 ?$ang : -$ang
length: 0.3 width: 1.0 bendV[0]: 1.0 aboutN: $eye=norm($cam-$P);$ang=acosd(dot( $eye,[0,0,1])); $axis=cross([0,0,1],$eye); dot($axis,$N)>0 ?$ang : -$ang
草の生えた大きな領域をグルーミングする場合、次を使用してコントロール(Control using)をアトリビュート(Attribute)に設定してプリミティブの各セグメントでノイズをコントロールします。ガイドを作成しなくてもアトリビュート駆動でディスクリプションを作成します。これにより、既定のエクスプレッションもガイドを必要としないように設定されます。
ガイドを使用せずに草原をグルーミングしていて、その地面が平らではなく起伏がある場合、既定での草は地面のサーフェスの法線の向きに沿って生えます。そのような草の葉が既定で真上を向くようにするには、葉の 1 枚 1 枚の向きを変えて上を向かせる必要があります(あるいは少なくとも上寄りになるように)。 XGen エクスプレッションエディタ(XGen Expression Editor) で次のエクスプレッションを試してください。
offU: (90 - acosd(dot(norm($dPdu),[0,1,0]))) / 90 offV: (90 - acosd(dot(norm($dPdv),[0,1,0]))) / 90
垂れ下がった木の葉をシミュレートするには:
float bendMagU -acosd(dot(abs(norm($N)),[0,1,0]))/180*(dot(norm($dPdu),[0,1,0])) float bendMagV -acosd(dot(abs(norm($N)),[0,1,0]))/180*(dot(norm($dPdv),[0,1,0]))
bendMagU() に設定します。
bendMagV() に設定します。
正確な方向を指定するには:
vector dir norm([1.0, 1.0, 0.0]) float dotU dot( norm($dPdu), dir() ) float dotV dot( norm($dPdv), dir() ) float len 100.0 * (abs(dotU()) + abs(dotV()))
offU dotU() / len() offV dotV() / len() offN acosd( dot($N, dir()) )
これにより方向が定まり、dir グローバル エクスプレッションで正規化されます。これは、この例のように定数でもかまいませんが、ペイントされた法線マップでもよく、変換して適切な正規化されたベクトルに戻すこともできます。
このプロシージャがうまく機能するのは、グローバル エクスプレッションがプリミティブの正しい回転方向を決めているためです。それを小さい値に変更し offU と offV エクスプレッションで埋める場合は、本来の回転に offN を使用することがあります。これにより、接線平面に打ち勝ち、プリミティブの位置を方向ベクトルに揃えるために必要なマグニチュードが作成されます。グローバル エクスプレッションがなければ、方向は保証されず、回転のマグニチュードのみです。