Dev:JA/Ref/Release Notes/2.72/UI/Pie Menus
目次
パイメニュー
パイメニューとは、マウスの周囲に放射状にアイテムが広がるメニューのことです。
使用方法
パイメニューはデフォルトの Blender には含まれていません。アドオンによって利用可能になります。 初回では、Blender に以下のパイメニューを提供する最小のアドオンが含まれています。
- ⇆ Tab : インタラクションモード
- Z : 描画モード+ソリッド・スムーズシェーディング
- Q : ビュー方向+透視/平行投影+カメラ
- ⇆ Tab⇧ ShiftCtrl : スナップ
- . : ピボット
- CtrlSpace : マニピュレータ
これらのメニューを有効にするには、User Preferences(ユーザー設定)の Add-Ons(アドオン)タブに行き、"User Interface" カテゴリの "Pie Menus Official" アドオンをチェックしてください。
パイメニューは上記のキーに割り当てられていたオペレータを完全に上書きします。ただし、一つのキーに固定されている開発中のオペレータでは、オペレータとパイを同じキーで併用できるでしょう。
インタラクション
パイメニューを表示するには、単にメニューを表示するキーを押すだけです。
- マウスを移動せずにキーを離すとメニューが開いたままになり、その後、ユーザはマウスポインタをパイメニューアイテムのある方向に移動してクリックすることで選択が可能になります(クリックスタイルインタラクションと呼びます)。
- マウスをパイメニューアイテムの方向に移動後、キーを離すとメニューが閉じ、メニューアイテムがアクティブとして選択されます(ドラッグスタイルインタラクションと呼びます)。
パイメニューの中心のオープンディスクウィジェットにより、ユーザはパイメニューの現在の方向を知ることができます。選択されたアイテムもハイライト表示されます。
パイメニューのアイテム選択の方向は、はメニュー中心にあるディスクウィジェットにマウスカーソルがタッチ、または越えることで有効になります。このウィジェットの半径は、User Preferences(ユーザー設定)の Threshold(しきい値)オプションによりコントロール可能です。
すべてのパイメニューではないですが、現在アクティブなオプションも明るい縁によってハイライト表示されます(上の画像参照)。
リセンタリング
ウィンドウシステムはパイメニューをウィンドウ境界内に収めようとします。これにより、ユーザがウィンドウ境界の近くでパイメニューを表示しようとする時に、その初期位置も必然的に変更されることになります。 その結果、初期方向はニュートラルではなくなり、境界近くのアイテムの方向となります。その対策として、Recenter Timeout(リセンタータイムアウト)オプションがあります。このタイムアウトを増やすと、パイメニューはこの期間、パイの方向を計算するのに初期マウス位置を使用するようになります。これにより、高速にドラッグ選択できるようになります。
アイテムの位置
体に覚えさせるため、パイメニューのアイテム位置は同じになるようにしてあります。つまり、もしコンテクストによっていくつかのオプションが欠けても、他のアイテムは空きを埋めるように移動したりしないということです。
例:メッシュには PoseMode(ポーズモード)がありません。そのため、⇆ Tabのパイメニューはこのオプションを表示しません。しかし、Object Mode(オブジェクトモード)と Edit Mode(編集モード)オプションは同じ方向のままです。これは新しいアイテムを現存のメニューに追加した時にも重要で、この時も従来の位置を変更してはいけません。
キーインタラクション
パイメニューアイテムはキーアクセラレータに対応しています。キーアクセラレータは各メニューアイテムの、下線が引かれた文字になります(訳注:英語UIのみ)。 また、数字によるアイテムの選択も可能です。位置同様、この番号もコンテクストの所為でアイテムが追加されたり欠けても変更されないよう、各数字は特定の方向に固定されています。ナンバリング方法は5を中心とした、テンキーの数字の方向に合致するようになっています。
オプション
User Preferences(ユーザー設定)にはパイメニューの操作を調整するオプションがいくつかあります。
- Animation Timeout(アニメーションタイムアウト)
- この数値はその時間で、パイメニューが開くアニメーションが終了するまでを1/100秒単位で指定します。
- Recenter Timeout(リセンタータイムアウト)
- もしパイメニューがスクリーン境界に近い場合、常に表示されるようにシステムがパイメニューをセンタリングします。つまりユーザがドラッグした方向が、最初に意図していたのとは違う可能性があるということです。
しかし、この Recenter Timeout が過ぎる前に計算された方向は、つねにメニューが表示された初期位置を使用するため、メニューがリセンターされた後でも、すばやくジェスチャして使用することができます。
- Radius(半径)
- パイメニューの中心からメニューアイテムへの距離(ピクセル単位)。
- Threshold(しきい値)
- パイメニューの中心から、最低この距離だけマウスカーソルが離れた時のみ、選択が有効になります。これにより、不用意にアイテムを選択してしまうことが少なくなります。
Blender へのパイメニューの追加
パイメニューを追加する方法は色々あります。ユーザ用にとって恐らく最も簡単なのは、あるオペレータまたはコンテクスト列挙用のキーマップを変更し、パイメニューアイテムを表示する方法で、それぞれ専用のオペレーターがあります。
wm.operator_pie_enum はオペレーターのEnum(列挙)プロパティを元にしたパイを表示し、wm.context_pie_enum はコンテクストプロパティの値の列挙から選択するパイを表示します。下はこれら二つのサンプルです。
パイメニューは Python でコーディングすることもできます。詳細はこちらのページ(英文)をチェックしてください。