ヒットによるシーン ノードの選択

シーン ノードの選択

pickObject [	message:<string> ] [	prompt:<string> ] \ 
[	count:n|#multiple ] [	filter:fn ] \ 
[	select:<boolean> ] [	pickFrozen:<boolean> ] \ 
[	rubberBand:<point3>] [	rubberBandColor:<color> ] \ 
[	forceListenerFocus:<boolean> ] 	 

pickObject() 関数を使用すると、ユーザは 3ds Max ビューポート内で 1 つまたは複数のシーン オブジェクトを選択できます。この関数は、オプションのキーワード引数をいくつかとります。 message: 引数は、ステータス バーのプロンプト ラインに表示される文字列値を受け入れます。 prompt: 引数は、リスナー ウィンドウに表示される文字列値をとります。 count: 引数は、選択できるオブジェクトの個数(既定値は 1)を指定する正の整数、またはシンボル #multiple をとります。指定したカウントが 1 より大きかったり、値が #multiple の場合には、選択オブジェクトを含む配列が返されます。シンボル #multiple は、オブジェクトをいくつでも選択できることを意味し、ユーザは右マウス ボタンをクリックするか、またはリスナー ウィンドウにフォーカスがある場合はキーボードの 任意の文字キーを押して選択を終了します。リスナー ウィンドウにフォーカスがある場合に[Esc]キーを押すと、 #escape 値が返されます。ビューポートにフォーカスがある場合に[Esc]を押すと、選択が解除されて選択の結果が返されます。

#multiple が指定されている場合、選択が解除されるときに選択されているオブジェクトがないと、空の配列が返されます。 #multiple が指定されていない場合、選択が解除されるときに選択されているオブジェクトがないと、 undefined が返されます。

filter: 関数は、引数が 1 つの MAXScript 関数をとります。この場合の MAXScript 関数は、シーン内のオブジェクトにカーソルが置かれている場合にはいつでも呼び出され、そのオブジェクトに渡されます。オブジェクトを選択できる場合は true を返し、そうでない場合は false を返します。通常、この関数はオブジェクト クラスのテストを含んでいます。

例:

fn shapeFilt o = (superClassOf o == Shape)
-- which you could use like this:
pickObject prompt:"enter a shape" filter:shapeFilt

オプションのキーワード引数 select: は、選択オブジェクトが 3ds Max シーン内で新しく現在の選択になるかどうかをコントロールします。 true を指定すると、現在の選択はユーザが選択したオブジェクトに置換されます。既定値は false で、この場合ピッカーは選択セットに影響しません。

pickFrozen: キーワード引数が false (既定値)に設定されている場合は、フリーズされているノードは選択できません。 true に設定されている場合は、フリーズされているノードだけを選択できます。

2 つのオプションのキーワード引数 rubberBand: および rubberBandColor: は、選択操作中に、ビューポート内のラバーバンド線の表示をコントロールします。

rubberBand: pickObject() の呼び出し時に指定すると、ラバー バンドが有効になります。このとき、指定した <point3>(ワールド空間座標)がラバー バンドの始点となります。 rubberBandColor: 引数を使えば、既定のライン カラーであるグレー(color 128 128 128)を上書きできます。

例:

obj2 = pickObject rubberBand:obj1.pos rubberBandColor:yellow 

オプションのキーワード引数 forceListenerFocus: は、リスナー フォーカスの実行をコントロールします。既定値の true が設定されている場合、既存のセマンティクスと以前のバージョンとの互換性が維持されます。

[H]キーを使用して複数のノードを選択したり、名前による選択を行ったりする場合は、[H]キーが一貫した動作をするように forceListenerFocus:false を指定する必要があります。これを指定しないと、各選択の後にフォーカスが強制的にリスナーに戻されてしまうからです。

例:

pickObject count:#multiple forceListenerFocus:false

返される配列には同じノードが何度も含まれる可能性があることに注意してください。

コマンド モードをビューポート以外のコマンド モードに切り替えると、 pickObject() は終了します。たとえば、 pickObject() を実行してから[選択して移動](Select and Move)をクリックすると、 pickObject は現在の結果のまま終了します。代わりにパンまたはズームを実行すると、 pickObject() は終了せずにそのコマンド モードに戻るまで待機します。ビューポートのコマンド モードを別のコマンド モードに切り替えると、 pickObject() は終了します。

アニメーションの選択

<animatable>pickAnimatable [message:<string>] [prompt:<string>] \
[count:n|#multiple] [filter:fn] [pickFrozen:<boolean>] \
[rubberBand:<point3>] [forceListenerFocus:<boolean>] 

3ds Max ユーザ インタフェースの任意の領域からアニメーションを選択できます。

このページの冒頭で説明した pickObject() 関数との唯一の違いは、 select: パラメータのサポートがないことです。選択は非ノードに適用されません。

その他のオプションのキーワード引数の詳細については、このページの冒頭を参照してください。

3D ビューポート内でクリックすると、シーン ノードを返します。

Explorer をクリックしても、シーン ノードを返します。

スケマティク ビュー内をクリックすると、シーン ノード、基本オブジェクト、モディファイヤ、コントローラなどのクリックされたアニメーションを返します。

トラック ビュー内をクリックすると、シーン ノード、モディファイヤ、マテリアル、マップ、コントローラ、ルート ノードなどのクリックされたアニメーションを返します。

3ds Max 2015 以降で使用可能です。

   

関連事項