SwiftBlock

表題のツールを使うと、blender上で図形を見ながらGUIでblockMeshDictを作成できるという嬉しさがあって、速報ではごく簡単な直方体だけの場合の作成例を紹介した。

しかし、wikiのページに掲載された例では、円柱用のblockMeshDictも作成できるとあり、更にはそこからダウンロードできるexampleケースを使うと、下図のような、そこそこに複雑な六面体のブロック集合モデル(この種のモデルであれば、blenderで結構簡単に作成できる)から、

作成したblockMeshDictを使ってメッシュ作成すると・・・

何と、見事な六面体メッシュが出来てくれたので、新鮮な驚きでありました。

2つのオブジェクトを使用してblockMeshDictを作成

そこで、どうやったらこれが出来るかのかを調べたところ、まず、このblenderのモデルには、2つのオブジェクトが存在しているという点。

モデルを開いた時の状態は、blockモデルしか表示されていないが、画面右上のオブジェクトツリーを見ると、もう一つpartモデルがあることがわかり、このeyeマークをクリックするとモデル画面上に表示される。

要するに、blockモデルを使ってblockMeshDictを作成するんですが、その際に曲線部などはpartモデルにフィッティングするよう、blockMeshDict中のedge定義をpoyLineで自動作成してくれているんだということです。

2つのオブジェクトで節点共有させておくのがミソ

そこまでのところは、すぐに判ったのですが、問題は、それでどうやってモデルを作ったら良いのか? という点です。マニュアルによれば、Set edgesにチェックマークが入っており、

If an edge in your block structure has both vertices co-located with vertices from the typed object, SwiftBlock will find out the closest path in the mesh of the object

blockモデルと、partモデルでco-located(節点共有?)させなさい・・・ということらしい。で、co-locateさせるにはどうしたら良いのかというと、

To co-locate a block vertex with a vertex of a Geometry object (to allow for non-straight block edges), use Blender’s snapping magnet in vertex mode.

という説明でおしまい。これも、blender使いには、こういう説明で判るかもしれないが、凡人には無理。あれこれ調べて、ようやく判明しました。

 節点共有させる方法

円柱用のblockMeshを作成する場合を例として説明する。

まず、円柱と直方体を別々のオブジェクトとして作成する。上下端面の高さは一致させてあり、直方体は、円柱の内部に収まる形で配置。

円柱用のblockMeshは、中央直方体の4つの側面に台形ブロックを継ぎ足す方法が普通のやり方。最終的に下図のような、5つのブロックがあれば、円柱用のblockMeshDictを作成できることになる。

これを実現するやり方として、普通に考えつくのは、側面を伸長させる方法だろう。Edit Modeの面編集モード(Face select mode)にて、

ひとつの側面を選択状態にして、Eキーを押す(又は、Meshメニューから、Extrude Region を選択する)と、マウスの動きと共に面の法線方向へブロックが伸長する。

適当な長さまで引き伸ばす。マウス左ボタンをクリックすれば確定する。ついで、頂点編集モードにて、

適当な長さにまで拡張したブロックの端点を選択した状態の上図にて、問題はこの点を円柱モデル上の点、たとえば下図

の選択点と、どうやって一致させるかという事。ここでポイントになるのが、中央の選択点の右にある赤白の破線の丸印で示されるカーソルです。これを使って選択点を所望の点と一致させます。

Meshメニューから、Snapを選択すると・・・

selectionをどうしたい、cursorをどうしたい、という選択肢が出てきます。ここまでくればおわかりでしょう・・・

まずは、カーソルを選択点(円柱のメッシュ点)に持っていきます(下図)。

この時点で、円柱を対象のEdit Mode になっていますが、Tabキーを押して、Object Mode にして、対象Objectを円柱からブロックに変更し、もう一度Tabキーを押して、再度Edit Modeに戻す。

そうすると、ブロックのEdit状態であるので、選択点はカーソルから離れて、ブロック上のどこかへ移動する。ここで、共有したい節点を選択し、再度、MeshメニューからSnapを選択

今度は、Selection to Cursor を選択してやれば、


上図のようになって、ブロックの角端点が、円柱のメッシュ点と一致してくれるようになる訳です。残りの3点も同様のやり方で円柱のメッシュ点と一致させる。さらに中央直方体の残り3つの側面も同じように拡張して、最終的に上のほうで見た5つのブロックが出来れば完成ということです。

 

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください