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 件のコメント:
コメントを投稿