12/9(月) 応用科学学会シンポジウムで自動運転に関する講演を担当します☆彡

19-8. 【Blender】ジオメトリノードを使ってブロッホ球を作る

やりたいこと

こちらの動画のようなブロッホ球をジオメトリノードで再現したい。

Bloch Sphere Visualization

ブロッホ球の構成要素

まずはブロッホ球の構成要素を確認します。

動かない部分

  • XYZ軸
  • 数字

動く部分

  • 矢印
  • XYZ軸周りの円

動かない部分の作成

軸や球、数字は動かないので通常の方法でモデルを作成し、適当な色を付けておきます。

動く部分の作成

矢印の作成

矢印の3Dモデル「arrow」オブジェクトと、その先端の1点のみを抽出した「arrow_tip」オブジェクトの2つを作成しておきます。

ジオメトリノードの作成

全体像がこちらです。

ブロック1:矢印の回転を制御

ブロック1(赤枠)では、矢印の回転を制御しています。

  • オブジェクト情報:arrowオブジェクトの読み込み
  • グループ入力:arrowオブジェクトの回転角の入力
  • トランスフォーム:入力された回転角をarrowオブジェクトの回転に反映

ブロック2:矢印先端の座標を取得

ブロック2(黄色枠)では、矢印先端の座標を取得しています。

  • オブジェクト情報:arrow_tipオブジェクトの読み込み
  • トランスフォーム:入力された回転角をarrow_tipオブジェクトの回転に反映
  • 属性統計:入力されたジオメトリ(arrow_tip)の位置の平均を計算する。arrow_tipには頂点が1つしかないため、その1つの頂点の位置が算出される。
  • 位置:上記の属性統計ノードで計算の対象となる属性を指定

ブロック3:XYZ軸周りの円の中心座標と半径の計算

ブロック3(青枠)では、XYZ軸周りの円の中心座標と半径の計算をしています。

  • XYZ分離:矢印の先端の座標をXYZそれぞれの成分に分離
  • XYZ合成:円の中心座標を指定するベクトルを作成する。
  • パワー、追加、平方根:円の半径を求める。

ブロック4:軸周りの円を表示させる

ブロック4(緑枠)では、XYZ軸周りの円を表示させています。

  • カーブ円(上):軸周りの円
  • トランスフォーム:軸周りの円の向きと中心座標の指定
  • カーブからメッシュへ:カーブ円(上)をメッシュに変換し、レンダリング可能な状態にする。
  • カーブ円(下):軸周りの円の太さを指定
  • マテリアル設定:軸周りの円のマテリアルを指定

まとめ

このようになりました。

【Blender】ジオメトリノードを使ってブロッホ球を作る

矢印先端の座標を取得する方法が分からず、苦肉の策でarrow_tipオブジェクトを導入しました。
ジオメトリノードをもっと使いこなせれば、より良い方法がありそうです。

タイトルとURLをコピーしました