| Blender機能別: Blender2.35 リライトされたMesh編集 | |||
|
|||
元記事:Mesh editing rewriteリライトされたMesh編集Ton Roosendaal氏新しい選択モード選択モードとオプションの描画モード(半透明Face、Normal、Solid Draw)は一緒に動作します。すべてのBlenderのMesh編集ツールも、修正された選択モードに反応します。 すばやいEdge/Face loop選択また、Edge loop(Edge選択モード中)やFace loop(Face選択モード中)を(Edgeモード)ループの一部を成すEdgeもしくは、(Faceモード)ループの一部をなす二つのFaceにつながるEdge上で[Alt]+右クリックすることにより、すばやい選択が行えるようになりました。この説明用のデモムービーをご覧下さい。 ![]() ExtrudeEdgeやFace選択モード中のExtrudeにより、extrudeするものとすべきでないものをより正しくコントロールできます。例えば格子模様に選択を行い、extrudeしてみて下さい。 もしFaceをExtrudeする場合、Extrudeは旧FaceのNormalにそって行われ、3DViewでのワークフローがかなり楽になっています。[G](Grab/Move)、[R](Rotate)、[S](Scale)を一度押せば、通常のようにtransformモードが変更できます。 新しい方法のExtrudeも追加されています。最初の二つはFace選択モードでのRegionとIndividual Faceで、新しいFaceを集めたまま維持、もしくは個別のFaceのNormalにそって別々に分割します。また、Edge選択もしくはVertex選択モードでも、Edgeのみ、もしくはVertexのみのExtrudeが可能です。
![]() Zバッファクリッピング(隠面排除)選択この新しいオプションは背面で見えないVertex、Edge、Faceの描画を隠し、選択できないようにします。これはVertex、Edgeの終端、Faceの中心点のZバッファ(デプス:深度)値を元にしています。表示と同じアルゴリズムを使用しているため、選択は高精度です。この選択モードは3DViewのHeaderのアイコンでON/OFFできます→ ![]() ![]() Subdivision SurfaceSubSurfにOptimalモードを使用中、Blenderが再分割された形状自身の(選択可能な)EdgeとFaceをオリジナルの元となるMeshを完全に隠して表示するようになりました。また、これは表示オプションの'Draw Faces'と'Draw Edges'にも動作します。開発中に作成されたデモムービーをご覧ください。 その他注意点
EditMesh開発ノート一般的なフラグの使用方法 "->f" フラグはeditmesh.cとeditmesh_lib.cのコア関数のための予約となっています。実際には現在は選択状態にしか使用されていません。 "->f1" と "->f2" フラグは自由に使えます。これらはVertex/Edge/face構造体で利用できます。自由であるがため、これらのフラグを使用している他の関数を呼び出すとき、チェックは慎重に行ってください…例えばextrude()やsubdivide()がこれらを使用しています。 選択フラグ EditVert: eve->f & SELECT EditEdge: eed->f & SELECT EditFace: efa->f & SELECT - 選択はhideでない場合のみ使用可能です! - 選択フラグは常に更新されますが、しかし、 if 選択モード >= SELECT_EDGE Vertexの選択フラグは不正になる場合があります。 if 選択モード == SELECT_FACE Vertex/Edgeの選択フラグは不正になる場合があります。 これはVertexもしくはEdgeが共有されている所為です。 - Vertexを選択する場合 eve->f &= SELECT - 常にEdgeを選択する場合 void EM_select_edge(eed, 1) // 1 = select, 0 = deselect - 常にFaceを選択する場合 void EM_select_face(efa, 1) // 1 = select, 0 = deselect - すべてのデータの'f'フラグをセット void EM_set_flag_all(int flag); void EM_clear_flag_all(int flag); - 旧faceselectedOR()とfaceselectedAND()もまだありますが、そのVertexの評価にのみ使用されます。 選択を扱うコードのヒント もし選択モードが 'face'の場合、VertexもしくはEdgeの選択は上位(下記参照)にフラッシュする必要があります。'Edge'選択モードにも同じことがいえます。これはすべての選択をコーディング中、注意を向けておく必要があるということです…ある一つのFaceの4つのVertexを選択しても、もう自動的にそのFaceが選択されることはありません。 しかしながら、上記のコールを使用することで、少なくとも選択は下位(Vertexレベル)にフラッシュされます。この時使用できるコールは以下のとおりです。 void EM_selectmode_flush(void); これは選択モードを元に、選択を上位にフラッシュします。この関数は下記のような動作をします。 - もし選択モードが'vertex':Edge/Faceが選択されたVertexを元に選択されます。 - もし選択モードが'Edge':Faceが選択されたEdgeを元に選択されます。 上手くコントロールされた状況ではちゃんと動作します。 しかし、Faceモードで単にVertexの選択を変更しただけは、まだFaceは選択されません! もしどうしてもVertexの選択だけでの動作が避けられない場合、このコールを使用して下さい。 void EM_select_flush(void); 現在の選択モードを参照せず、今の選択を上流にフラッシュします。しかし、チェッカーボード状のFace選択のような特殊なケースでは破綻する恐れがあります。よってこれはあなたが他のすべてが非選択になっているのを知っている(もしくはそれを非選択にする)場合にのみ使用して下さい。例:プリミティブの追加。 Hideフラグ EditVert: eve->h EditEdge: eed->h EditFace: efa->h - すべてのhideフラグは常に新しく更新されます。 - hideしているVertex/Edge/Faceは常に非選択状態になります。よって選択されているものだけを操作する場合、hideフラグのチェックは必要ありません。 EditModeとのUndoの統一 新ファイル: editmode_undo.h ポインタハンドルスタイルのUndoの、非常に素晴らしい関数です。たった三つのコア関数で、あなたのUndoは空へ舞い上がります! このCファイルは素晴らしいリファレンスになります。 また、古いUndoシステムは置き換えられたことに注意して下さい。現在Mesh自身への依存は最小限に(EditModeへの出入りを悪用しなければ)留めており、EditMode関数に上手く制限されています。 EditModeへの出入り すべてのVertex/Face/Edgeが3つの大きなチャンクに割り当てられたためスピードアップしました。Vertex/Face/Edgeにはこのようなデータが解放できないことを示すためのタグがセットされています。 また、Edgeのハッシュテーブル(参照テーブル)がEditEdge自身の一部を除き、すべてにおいてもうmallocを使用しないようになりました。 |
|
評価された記事: 0.00 (0 件の投票) このファイルの評価 |
| カテゴリに戻る | カテゴリの一覧に戻る |


サイト内検索















)機能は特にSubdivideやCutツール、SubSurfが作用するとき、現在は大きい面積のポリゴンのEdgeのHideの使用に制限がありますが、将来的には「本当の」n-gonスタイルのポリゴンに拡張される可能性があります。