本日はBlenderPython枠です。
昨日はBlenderPythonを使用して、頂点3つから構成されるメッシュの面の方程式を求めました。
本日はここで求める面の面積を算出します。
2次元でのおさらいですが、3つの座標で構成される図形の面積を求めるには
三次元空間上の頂点(x1,y1,z1)(x2,y2,z2)(x3,y3,z3)で構成されるメッシュの面積は次のステップで計算します。
1 まず1つ目の頂点から二つ目の頂点の辺ベクトルαと、1つ目の頂点から3つ目の頂点のベクトルβを求めます。
これは次のようになります。
2 αとβのベクトルの外積を取ります。
ここで求められたベクトルの大きさ(長さ)はもとの三角形の2倍となるため2で割ることで凍メッシュの面積を求めることができます。
この方法は頂点座標が判明している場合の方法になりますが、Blenderで頂点を扱う場合は存在している頂点に関してはすべて座標等のデータを取得できるため問題はありません。
〇Blender Pythonで実装する
import bpy from mathutils import Vector # 3つの頂点を定義 v1 = Vector() v2 = Vector() v3 = Vector() # ベクトルを計算 vec1 = v2 - v1 vec2 = v3 - v1 # 外積を計算 cross_product = vec1.cross(vec2) # 面積を計算 area = cross_product.length / 2.0 print("The area of the triangle is", area)
次の面積を求めていきます。
この頂点内容を入れて実行することで次のような出力を得ることができます。
ではビューポートオーバーレイで面積を表示して結果を確かめます。
一致していることが確認できました。よって正しく面積の計算ができているようです。
このあたりの知識は高校数学レベルの内容だと思いますが、改めてさらっていくと忘れていることも多く勉強になります。
本日は以上です。