2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

平面の輪郭を描いたものを 3Dの立体にする処理は多くの人が望む手法です
Blenderのジオメトリノードでの方法を検証したので書き留めておきます

BlenderConference 2023の公演内の内容と Teddyアルゴリズムの考えを元にしています

今回のものはBlender 3.3で作成しました
4.1でも同じ挙動なのを確認しましたが。もっと楽な方法があるかもしれません

メッシュの三角分割

まずはBlenderConferenceで見かけた メッシュを細かい三角で分割する手法です
キャプチャの選択表示されている多角形ポリゴンのジオメトリを用意した状態からスタートします

image.png
カーブフィル」のノードではカーブのシェイプ同士を最短で結んだ上で平面として塗りつぶす機能があるようです。
入力メッシュのアウトラインをカーブ化して
それとは別に「面にポイント配置」で適度な距離を保った座標を生成してカーブのスプラインを配置しています
ポイントにインスタンスで配置した状態だと実体をスプラインとしての実体を持たないので実体化を忘れずに。

今回の入力ジオメトリはNゴン状態でしたが 
外周にあたる部分をカーブに変換して スプラインを平面上に配置さえできれば他にも色々手段はあります

カーブラインをインスタンス配置すると同位置2頂点になるのですが
フィル実行時に1頂点の扱いになるようです

平面の立体化1

三角で充填した後に 元のメッシュの外周からの距離に応じて応じて移動させれば膨らませることが可能です。
image-1.png
キャプチャでは 多角ポリゴン状態だったので
ジオメトリ削除で面だけを削除すると外周の辺が残り
ジオメトリ近接で 各頂点の辺からの距離が取得できます
単純に距離でを元に移動すると斜面は真直ぐになるので
Floatカーブ等で曲面にしてもいいかもしれません
image-2.png

平面の立体化2

もう少しだけ高度な処理を試したいと思います
冒頭で少し触れたTeddyアルゴルズムでは

  • 手描きストロークで囲まれた領域を三角分割
  • 内部の辺を2分割した中点を立体の軸と仮定する
  • 直交する平面上に中点と外周との距離を元に新しい頂点を作成して円筒状の立体を作る

image-3.png

といった挙動のようですが、
膨らませる移動量の計算に 内部の辺の長さを利用する点を参考にしたいと思います

今回追加した主要な処理部分です
image-4.png
元のジオメトリを三角面化した後に
辺に接する面の数が1つしかない辺(=アウトライン)を削除することで内部に新しく作られた辺だけを抽出しています

属性転送」を使って内部を三角分割する個々のポイントのから最も近い内部辺の長さを取得して
その長さを直径とします(利用したいのは半径なので0.5倍)
これを立体化するとこんな感じです

24062301.gif

Teddyよりも簡易な部分での不具合がありますが 使える形になっているのではないでしょうか

Blender3.6以降で同じ動作をさせる場合には
属性転送のノードの部分は 最近接サンプルとインデックスサンプルの組み合わせになるようです
image.png

ノード全体

今回のノードの全体はこんな感じです

image-5.png

カーブフィルのおかげでシンプルな構成ですね
英語表示のキャプチャも置いておきます

image-6.png

まだまだ改良点はあるかと思います
何かの参考になれば幸いです

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?