夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

BlenderPythonで選択した辺の数式を計算する

本日はBlenderPython枠です。

Blenderでは3次元空間で作業しますが、多くの数式が用いられています。

一番わかりやすい例では前回行った回転行列が挙げられます。

redhologerbera.hatenablog.com

今回はシンプルな例として辺の数式を求めていきます。

〇辺の数式

頂点からベクトル計算を行うことで辺の数式を求めることができます。

頂点(x1,x2,x3)と頂点(y1,y2,y3)を結ぶ辺のベクトルは次のように表すことができます。

 \displaystyle
\vec{v}\ = \begin{pmatrix} x_2 - x_1 \\ y_2 - y_1 \\ z_2 - z_1 \end{pmatrix}\

このベクトルを使用してtというパラメータを用いて表す辺の式は以下になります。

ここでP_1は1つ目の頂点を意味し、tが1の場合P_2、0の場合はP_1になります。

 \displaystyle
P(x, y, z) = P_1 + t \cdot \vec{v}\

これを使用することで例えばtを0.5にすることでBlenderの細分化などで用いられる2点の中点座標を取得することができます。

BlenderPythonに組み込む

前述の説明をPythonに組み込むと次のようになります。

import bpy
import mathutils

# 二つの点の座標
point1 = mathutils.Vector()#一つ目の頂点
point2 = mathutils.Vector()#二つ目の頂点

# 辺の方向ベクトルを計算
edge_vector = point2 - point1

print("Edge vector:", edge_vector)

例えば冒頭の状況では(-1,-1,2)と(-1,1,0)の頂点で辺が構成されています。

これを数式に埋め込むことで次のような出力が得られます。

これはそれぞれの成分で傾きを意味しています。

x成分の傾きは0

y成分の傾きは2

よってこの辺の式は次のようになります。

 \displaystyle
P(x, y, z) = P_1(-1,-1,2) + t \cdot \begin{pmatrix}  0 \\ 2  \\ -2 \end{pmatrix} \

〇辺の中点座標計算

辺の中点を計算するためには先ほどの式のtに0.5を代入します。

結果は(-1,0,1)となります。

実際に先ほどの辺を細分化を使用して分割すると結果が一致することを確認できます。

BlenderではGキーを二回入力することで辺上を頂点の移動ができますが、これは先ほどの式のtの0~1を移動していることと同じ処理が動いているといえます。

今回は基礎的な内容でしたが、応用することで例えば延伸した座標を求めることやベクトル計算によってシュミレーションなどアドオン開発に大きく役立つ内容になっています。

本日は以上です。