Biped および Crowd の相互作用処理

 

   

Character Studio - クイック ナビゲーション

Crowd 解決時に、お気に入りのクリップを使用して Biped のクリップ選択に影響を及ぼすことができます。次の Biped MAXScript 関数を使用すれば、crowd 解決時に、Biped に対してお気に入りのクリップを設定できます。

   

biped.numPrefClips <biped_ctrl> 	 

お気に入りのクリップの数を返します。

   

biped.getPrefClip <biped_ctrl> <index_integer>   

n 番目のお気に入りのクリップの名前を返します。インデックスの基数は 0 です。

   

biped.clearPrefClips <biped_ctrl> 

お気に入りのクリップ リストを消去します。

   

biped.addPrefClip <biped_ctrl> <name_string> <prob_integer> 

所定の probability と共にクリップをお気に入りのクリップ リストに追加します。追加されたら true を返し、リスト内に既に存在しているために追加されなかった場合は false を返します。クリップがお気に入りのクリップ リスト内に既に存在している場合、probability が指定の probability に変更されます。意味のある probability の範囲は -100 から 100 までで、負の値の場合はクリップを取得する可能性が低くなります。値が -100 の場合、事実上クリップは取得されません。値が -100 より大きい場合は比較が行われ、値が大きい方でトランジションが選択されます(負の値よりも正の値が優先されます。ゼロは正負どちらにも含まれません)。特定のクリップを避けたい場合は、負の値に基本設定しておくとよいでしょう。たとえば、30 のクリップがある場合、残りの 29 のクリップを正に基本設定しなくても、1 つのクリップを負の値に設定しておけば簡単にそのクリップを避けることができます。

   

biped.getPrefClipProb <biped_ctrl> <index_integer> 

n 番目のお気に入りのクリップの probability を返します。インデックスの基数は 0 です。

   

biped.deletePrefClip <biped_ctrl> <name_string> 

お気に入りのクリップ リストから、指定された名前のクリップを削除します。成功した場合は true を、クリップがリストに存在しなかった場合は false を返します。

   

biped.isPrefClip <biped_ctrl> <name_string>  

クリップがリストに存在する場合は true を、存在しない場合は false を返します。

   

biped.getCurrentClip <biped_ctrl> 

この Biped で現在アクティブなクリップの名前を返します。

   

biped.getClipAtTime <biped_ctrl> <time> 

ただし、返すのは解決中の crowd に関連するクリップだけです。指定された時刻にクリップ間でトランジションが発生した場合は、トランジション元のクリップを返します。

注:

お気に入りのクリップ名では、大文字と小文字が区別されます。

次の例では、crowd システム「PerFrameFn」を使用して、Biped のお気に入りのクリップをダイナミックに変更する方法を示します。

-- changes the preferred clip as a function of frame number.
fn PerFrameFn crwd t = (
a = $bip100.controller
if (t == 200f) then
biped.addprefclip a"jog_L45"100
else
biped.deletePrefClipa"jog_L45"
)

-- changes the preferred clip as a function of the current clip.
fn PerFrameFn crwd t = (
a = $bip100.controller
if (biped.getcurrentclip a =="jog_L135") then
biped.addprefclip a"jog_L45"100
else
biped.clearPrefClipsa
)

関連事項