Slide 1

Slide 1 text

Blenderの softwrapアドオンによる ボリュームメッシュの作成 Inaba (Twitter:@public_inabower) 2021.5.15 第84回オープンCAE勉強会@関西(オンライン)

Slide 2

Slide 2 text

モチベーション: 複雑な形状の 綺麗なメッシュを 簡単に作りたい

Slide 3

Slide 3 text

Softwrapアドオン  https://blendermarket.com/pro ducts/softwrap  Blenderの有償アドイン($40)  サーフェスメッシュの『リトポ (メッシュの張り直し)』に用 いられる  ストッキングを履くような操作 でメッシュを形状にフィットさ せる  2019 年10月頃に初リリース  操作に関するQiita記事:  ZwrapとSoftWrapを比較し てみた (https://qiita.com/chiron amo/items/1f96cef818dd9 6626c66)

Slide 4

Slide 4 text

softwrapの操作感をデモ

Slide 5

Slide 5 text

サーフェスメッシュとボリュームメッ シュ  CGは基本的にサーフェスメッシュ(面)  四角形のサーフェスメッシュは自動生成技術などがかなり完成されている  CAEではボリュームメッシュを用いることが今は主流  六面体メッシュが良いとされることが多いが、六面体の自動生成はとても困難  六面体の自動生成は広く研究されていて、そのうち実現されると期待している  六面体に拘らずに精度を出す技術も研究されている  あとメッシュフリーの手法(MPS,SPH,LBMなど)も進歩しまくっている

Slide 6

Slide 6 text

簡易形状のヘキサメッシュを作って 表面を複雑形状にフィットさせれば 複雑なヘキサメッシュが作れるのでは・・・?

Slide 7

Slide 7 text

全体のロードマップ

Slide 8

Slide 8 text

具体的な手順  SALOME  手切りヘキサメッシュを作成  OpenFOAM  OpenFOAMの”writeMeshObj”で変 形予定面をobjファイルで出力  Blender  Softwrapで張り合わせ  再びobjファイルを出力  OpenFOAM  ”moveDynamicMesh”でメッシュ変 形  境界条件として、先ほどのobjファ イルから各点の移動量を使用

Slide 9

Slide 9 text

メッシュの作成と読み込み  SALOMEでちまちまヘキサメッシュを手切り  なるべく簡単に作って後から張り合わせたい  unvファイルで出力  OpenFOAM形式に変換  ideasUnvToFoamで変換  SALOME  簡易CAD+メッシャ  応力解析ソルバーCodeAsterと連携できる  https://www.salome-platform.org/  OpenFOAM  流体解析ライブラリ  基本的に本発表みたいな使い方はしない  https://www.openfoam.com/

Slide 10

Slide 10 text

OpenFOAM : objファイルの出力  writeMeshToObj  形状をobjファイルで出力できる  -patchFacesをつけると各patchご とのobjが生成される  foamMeshExportでもobjファイル を生成できるが、これだと全て のpatchが一つのファイルとして 出力されてしまう  Blender側で点の増減を行うと、 変形後に読み直すのが困難にな るので注意

Slide 11

Slide 11 text

moveDynamicMesh / OpenFOAM  OpenFOAMのメッシュ移動機能dynamicMeshだけを動かすソルバー  内部では弾性変形が解かれている  境界条件として変位を与えることで、メッシュの全点の変位が得られる  ただし有限体積法なのでちょっとなまる  今回はBlenderから持ってきたobjファイルを読み込んで、その各点の座標から 変位量を与えてあげる  ※「使い慣れているから」という理由でOpenFOAMを使っただけなので、これが最 適解ではないと思われる(というか多分違う)  「Blenderでobjを変形してもノードの順番が変わらない」という性質を使えばもっ と効率的な方法はあるはず

Slide 12

Slide 12 text

境界条件  境界条件は自作  OpenFOAMでは”coded”という 機能で、C++で任意に境界条件 を記述できる  図のように、単にobjファイル を読み込んで、点座標を示す 行を読み込んでいる感じ  Blenderの中で点の順番が変 わってなかったのでこれがで きた

Slide 13

Slide 13 text

Softwrapの基本操作  ビューポートの右上の小さな矢印でアドオン 画面が出てくる (※1)  ピンでノードを固定する(※2)  Shift + 左クリックでノードを選択  Gで移動  Snap to Faces で目的形状にピンを移動できる ので便利(※3)  ピン周辺の剛性を変更  Sでピンの大きさ≒高速範囲を調整できる  Individual Origins で全部のピンを一度に変化で きるので便利(※4) ※1 ※2 ※3 ※4 ①Shift+click ②G

Slide 14

Slide 14 text

softwrapの設定(触ってみた感じの解釈) ※間違ってるかもしれないです  おそらく、内部では有限要素法で布の応力が計算されてる  おそらく、メッシュの重複などのペナルティが内部応力として作用し、それを緩和す るような動作をしている  面の表裏に注意  設定項目  Stiffness : 元の形状に対する変化にペナルティ?  Structural :形状変化、Shear : 歪み、Bending : 曲げ に厳しくなる  Damping : 減衰量  下げるとガシガシ 上げるとちょっとずつ変形する  Smoothing:変化後の形状に対してペナルティ?  Smooth:ガタガタ表面、Quad:歪み四角形、Topologic:対象形状との差異 に厳しくなる  Snapping:対象形状に張り付く力  0だと何もしない、いろいろ調整しながら1を目指す  Plasticity, Performance:今回触らなかったので不明 今のモード 一度に掴むノード数 Softwrap演算の ステータス 元メッシュと 目的形状 ? 対称拘束 形状剛性 せん断剛性 曲げ剛性 減衰幅 平滑性 四角形 トポロジー 張り付き強さ 塑性? デフォルトだとビヨンビヨン動く もしかしたら変形を固定できるかも 多分演算の設定 どう結果に影響するかは分からなかったが 計算量は大きく変わるっぽい(PCファンの音で判断)

Slide 15

Slide 15 text

これを踏まえてなんかデモ

Slide 16

Slide 16 text

実行環境  OS:Windows10 Home 20H2  Blender 2.90  Softwrap-2.0.0-for-blender2.83-2.92-windows  SALOME platform 9.6.0  WSL : Ubuntu20.04 LTS  OpenFOAM v2012  ParaView 5.9.0

Slide 17

Slide 17 text

ヘキサバニーチャレンジ  Stanford bunnyのヘキサメッシュを作ってみたい  目的は特にない

Slide 18

Slide 18 text

検討の変遷  ①元メッシュは超単純形状  これでうまくいくならいいけ ど・・・  →ダメでした  どんなに頑張っても張り付か ない

Slide 19

Slide 19 text

検討の変遷  もうちょっと複雑な元 メッシュで  →これもダメでした

Slide 20

Slide 20 text

検討の変遷  更に複雑な元メッシュ  ここまでくると元メッ シュ作るのも一苦労  → 一応張り付いた  内部のメッシュの品質 は悪い  Softwrapで加工する前 提の内部メッシュ構造 を作る必要がありそう

Slide 21

Slide 21 text

曲面には境界層を張る方がよさそう