2025年8月11日月曜日

YT-Tools for Blender (Selection)

エレメント(頂点、エッジ、面)を選択する機能は、ModoもBlenderも多くの機能を標準装備しており、機能リストだけ比較すると主だった選択機能はすでに用意されているように思えます。その中でエレメントの選択ワークフローを改善するオペレータを幾つかYT-Toolsに組み込んでみました。

ダブルクリックによる連結ポリゴン、エッジループの選択(Contextual Selection)

ダブルクリックによるエレメントの選択はModo基本操作でしたので、各選択モードでエレメントをダブルクリックした時に連結するポリゴン、頂点もしくはエッジループを選択するオペレータを実装し、ダブルクリックのマウスイベントに登録しています。SHIFTキーを押しながらダブルクリックすると選択が追加されます。


ModoとBlenderの選択に関する考え方の違い

エレメントの選択状態の保存方法はModoとBlenderで若干異なります。Modoはセレクションスタックというシステムがあり、メッシュのエレメントをはじめオブジェクトや頂点マップなどあらゆる選択はセレクションパケットというID+選択情報を収めたパケットデータをスタックとして一元管理しています。これに対してBlenderは各データ構造体の中に'select'という状態変数があり、そこで管理されているようです。また、Modoはポリゴン、エッジ、頂点の各モードでの選択状態は個別に保存されていますが、BlenderはFaceからEdge、EdgeからVertなど選択モードを変更した時にそれぞれの選択されている構成要素の選択状態がモード変更時に変換されるようです。例えばFaceモードからVertモードに変更すると選択されているFaceを構成する全てのVertが選択状態になります。また、Modoはセレクションスタックというスタックにパケットとして選択情報を保存しているため、全ての選択には選択の順番が同時に保存されています。これに対してBlenderは基本的に'select'という状態変数で選択の状態を管理しているため、選択順序は保存していません。BMesh構造体には'select_history'というリストを別に用意していて、明示的にこの'select_history'に対応している操作にのみ選択順序に関する操作を行うことができます。

また、Modoでは何かエレメントが選択されている場合、そのエレメントが編集対称になり、何も選択されていない場合は、メッシュの全てのエレメントが編集対称になります。Blenderの場合は、明示的に選択されているエレメントが編集対称になります。

選択の変換

明示的にあるモードの選択を別のモードの選択する。オペレータを用意しています。Select Boundaryは選択されているFaceと非選択Faceとの境界を選択します。選択されているFaceがない場合、境界エッジが選択されます。Convert Edge to Faceは、選択されているEdgeが一つ場合は、そのEdgeを共有する全てのFaceが選択されます。選択されているEdgeが2つの場合、それらのEdgeを全て持つFaceが選択されます。同様にConvert Vert to Faceは、選択されているVertが一つの場合はそのVertを持つ全てのFaceが選択されます。選択されているVertが3つの場合は、それらを全て持つFaceだけが選択されます。

ループ選択

Blenderのループ選択はAltキーを押しながらEdgeやFaceをクリックして行います。Blenderのオペレータは実行時の位置情報が参照できるため、Faceをクリックした場合、クリックした位置に最も近いEdgeの方向にFaceのループが選択されます。Modoは選択コマンドとして実装されているため連続する2つのポリゴンからループの方法が決定されます。おそらくBlenderの操作に慣れている方は、標準の方法の方が馴染みやすいかと思います。ただし、標準のループ選択は前述した'selection_history'に対応していないため、Previous Activeで最後に選択したエレメントを非選択にするような操作ができません。これはModoで言うところのSelect Lessコマンドです。そこで'selection_history'に対応したループ選択オペレータをYT-Toolsには実装しています。2つの連続しているFaceを選択してLキーを押すとFaceがループ選択され、ループの並び順にFaceが選択されます。下矢印キーを押すとループの選択が一つづつ非選択状態になります。Altクリックで実行される標準のループ選択も'selection_history'に対応したオペレータに置き換えています。


選択関係のオペレータは、Modoライクなワークフローを再現するために、割とメジャーなショートカットキーやマウスイベントに割り当てられています。Blender標準のキーマッピングに戻したり、YT-Toolsの選択オペレーションを無効にしたい場合は、プリファレンスパネルのYT-ToolsのKeymap Listをカスタマイズしてください。



0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。