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 以降で使用可能です。