2025年5月14日水曜日

技術資料 Blender閉じた辺ループのブリッジが合理的に行われる原理

 Technical information: The principle behind Blender's closed edge loops bridging


I use closed edge loops bridging as the main tool for creating 3D shell models in Blender. I've come to understand why bridging is performed so rationally, so I've made a note of it. Blender is performing complex calculations behind the scenes.


Blenderで貝層3Dモデルを作成するメインツールとして、閉じた辺ループのブリッジを活用しています。なぜ合理的にブリッジが行われるか理解できましたので、メモしました。Blenderは裏で複雑な計算をしています。

1 閉じた辺ループのブリッジの例


Blender3Dビューポートに配置された2つの閉じた辺ループ


辺ループのブリッジで中空3Dモデルが描画された様子


2 閉じた辺ループのブリッジが合理的に行われる原理


閉じた辺ループのブリッジが合理的に行われる原理

A0とB0の距離、A1とB1の距離・・・の組合わせの総延長距離r1

A0とB1の距離、A1とB2の距離・・・の組合わせの総延長距離r2

・・・

可能な全ての組合わせ(反転も含める)の総延長距離rを比較して「対応頂点間距離の合計が最小になる組合わせ(シフト)」を自動選択して、その組合わせで立体面を描画しています。

この例ではA0とB0の距離、A1とB1の距離・・・の組合わせの総延長距離が最小となり、その組合わせで立体面が描画されています。

3 出典

ChatGPTの次の回答によりました。

……………………………………………………………………

Blender の Bridge Edge Loops は、内部的には以下のような手順で「閉じた辺ループ同士」の頂点対応を決めています。

1. ループの検出

   選択した辺をたどって、同じ辺を一周するまで連続する辺を辿り、閉じたループとして頂点リストを列挙します(どこから始めてもループは円環状に扱われる) ([docs.blender.org][1])

2. デフォルト対応づけ (Twist=0 の場合)

   頂点数が同じ2つのループ A と B があるとき、A[i]→B[i] の順で対応づけを行います。ループは環状リストなので、たとえば A[0] を B のどの頂点と対応させるかは「シフト量」によって決まりますが、Twist=0 ではループをずらさずにそのまま 1:1 マッピングします ([docs.blender.org][1])

3. Twist パラメータによるオフセット

   UI の「Twist」スライダーを動かすと、B ループ全体を環状に何ステップずらすかを指定できます。これによって、A[0]→B[k] のように対応関係を回転させられます ([Superhive (formerly Blender Market)][2])

   実際には、Blender は可能なすべてのシフト(およびループの反転)を評価し、「対応頂点間距離の合計が最小になるシフト」を自動選択していると考えられます。

4. ブリッジの生成

   対応づけが確定したら、A[i] と B[i+シフト] をエッジでつなぎ、必要に応じて中間ループを挿入(Number of Cuts)、Interpolation や Smoothness の設定を反映して面を張ります ([docs.blender.org][1])

このように、橋渡しされる2つの閉じたループは「環状リストとして順序付け」→「同じインデックス同士で結ぶ(必要ならシフト)」→「面を生成」という原理で、常に“ずれなく”合理的な対応づけが行われます。

[1]: https://docs.blender.org/manual/en/latest/modeling/meshes/editing/edge/bridge_edge_loops.html?utm_source=chatgpt.com "Bridge Edge Loops - Blender 4.4 Manual"

[2]: https://blendermarket.com/products/curves-to-mesh/docs?utm_source=chatgpt.com "Curves To Mesh - Blender Market"

……………………………………………………………………

4 メモ

貝層3Dモデルを作成するツールとして、当初はBsurfaces機能を使っていたのですが、Bsurfaces機能は場面により使えないことに気が付き、汎用的に使えるのは辺ループのブリッジ機能であることに気が付き、着目しています。

辺ループのブリッジをgeometry nodesで表現しようと大格闘しているのですが、超膨大で超複雑なノードを組まないとできないことを知りました。(物事を簡単に処理するためにgeometry nodesがあると考えていたのですが、素手の操作で簡単な事柄を、超膨大・超複雑なgeometry nodesで表現しても、その意義はありません。[それを1つのノードにまとめたものが有料アドオンの中に含まれているので、それは意義があります。])

このような検討の中で、そもそも閉じた辺ループのブリッジの原理はなんなのかという素朴な疑問が生まれ、ChatGPTに質問して、回答を得た次第です。

0 件のコメント:

コメントを投稿