7
2

More than 3 years have passed since last update.

[Blender+MATLAB] 有限要素法解析を行い, グラデーションのついた文字を作る!!

Posted at

今回使っている各ソフトのバージョン等は以下の通りです.

  • blender 2.90.1
  • MATLAB R2021a
  • MATLAB Partial Differential Equation Toolbox

はじめに

最近, ロゴマークを作らないといけないことがあった. しかし, 小学生のころから美術の成績の低さには自信があり, 自分で作れる気が全くしなかった. そこで, 数値計算できれいなコンター図を作ってもらおうと考え, 今回の問題に取り組んだ.

Blenderから文字の.stlファイルを作成する

まず, blenderで解析を行う文字の3D形状を出力する. 今回はアルファベットの"M"を題材として行う.
注意: 解析は閉じた形状について行うため, 1回に行えるのは1文字である.

参考にしたサイト

https://blender-cg.net/3d-text/

まず, Blenderを開く.
blender_initial.PNG

次に, Add>TextでTextを追加する.
blender_add_text.PNG

その後, tabキーを押して, 解析を行いたい文字を入力する. また, フォントなどもこの時に指定する.
blender_edt_text.PNG

そして, 文字の形状を.stlファイルとして出力する. (今回はこのファイルをletter-M.stlとして保存した)
blender_save_stl.PNG

MATLABにより静解析を行う

今回は以下のサイトを参考にして, 文字を構造物とした有限要素法解析を行った.

https://jp.mathworks.com/help/pde/ug/stress-concentration-in-plate-with-circular-hole.html

静解析モデルの作成と.stlファイルのインポート

まず, 以下で2D構造静解析のモデルを作成し, 文字形状のデータをインポートする.(createpde, importGeometry)

matlab
model = createpde('structural','static-planestress');
importGeometry(model,'letter-M.stl');

figure
pdegplot(model,'VertexLabel','on','EdgeLabel','on');

このコードを実行したときにエラーが出る場合は, 文字形状が閉じていない可能性がある. そのようなときは, Meshlabを用いて不具合部分のメッシュを取り除き再度.stlファイルを作成してからインポートする.

letter-M_model.png

材料定数と境界条件の付加

次に, 材料特性を付加する. 今回は, ヤング率 0.2[MPa], ポアソン比 0.25とした. (structuralProperties)

matlab
structuralProperties(model,'YoungsModulus',200E3,'PoissonsRatio',0.25);

また, インポート時に作成したfigureを参照しながら, y=0の部分に境界条件x=0,y=0を付加する. (structuralBC)

matlab
structuralBC(model,'Edge',5,'XDisplacement',0,'YDisplacement',0);
structuralBC(model,'Edge',15,'XDisplacement',0,'YDisplacement',0);

そして, 真ん中にy軸負の方向に荷重を付加した. (structuralBoundaryLoad)

matlab
structuralBoundaryLoad(model,'Edge',8,'SurfaceTraction',[0;-200]);

メッシュの作成

次に, モデルからメッシュを作成した. (generateMesh)

code
generateMesh(model,'Hmax',0.01);

figure
pdemesh(model)

letter-M_mesh.png

求解

これまでに作った解析モデルで有限要素法解析を実施する.

matlab
R = solve(model);

可視化

matlab
figure
pdeplot(model,'XYData',R.Stress.syy,'ColorMap','jet')
axis equal
title('Stress yy');

letter-M_stressy.png

MATLABのいいところは, この結果を様々なカラーマップで表示できるところである. 例えば...

matlab
figure
pdeplot(model,'XYData',R.Displacement.y,'ColorMap','winter')
axis equal
title('Displacement y');

letter-M_dispy.png

もちろん変形後形状の可視化することもできる.

おわりに

今回は, 文字を構造物とした有限要素法解析を実施して, 連続的なグラデーションを持った文字の作成を行った. もちろんこの方法は, 文字でなくても閉じた形状の.stlファイルを準備できれば応用が可能である.

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2