2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ジオメトリノードで画像のアルファからメッシュを作成する

Posted at

昨日のカメラ深度の画像でメッシュを作成する方法のテストをしている時に
画像のアルファでメッシュ化する新しいものを思いついたのでメモとして残しておきます

Blender3.3での業務で利用したいので3.3で出来る内容で進めます

画像のアルファでグリッドを切り抜く

まずはグリッド上のアルファ値を利用してオブジェクトを切り抜いてみます
image.png

キャプチャ中のノードの大半は 実用のためにグリッドの縦横比を調整して正方形で分割されるようにする計算です
ジオメトリ削除で 画像のアルファが一定値以下(透明)な部分を削除しています

ここは デフォルトの画像を繰り返す設定では画面端で想定外の値が出るので
画像テクスチャの 2つ目のプルダウンの設定を延長にしています
(UVが0-1を超える場合にどういう値を出すかの設定で 縁から外は同じ値が引き延ばされて出る)

階段状のエッジの軽減

グリッドを基準にした面の切り抜きでは どうしても境界部分が階段状になってしまいます
見た目にも目立ちますし 無駄に頂点数が増えることになってしまうので対処したいです

そこで グリッドの頂点を階段状に選択して 移動させたものを三角化する計算をしてみました
image.png
面の構成する頂点のうち1つだけ移動した面がある場合に三角化すると
残った頂点だけで三角になるように辺ができて 辺が滑らかになっています

ノードで同様の処理をしたものの比較でも 境界が滑らかになりました
image.png

アウトラインのカーブ化とフィル

グリッドベースのメッシュ化では 内部のポリゴンは過剰になりがちなので
以前書いた シェイプを立体化する時に使った方法を利用してメッシュ化します

まずは今ある平面の境界をカーブに変換します
ジオメトリノードでは 「辺の共有面数」で辺に接続している面の数を取得できます
image.png
境界部分の辺は接続している面が1つなので 境界部分をフィルタして取得できます

この条件で「メッシュのカーブ化」をすると 境界のカーブが作れます
image.png
面のあった部分にポイントを配置して カーブのポイントを配置することで
カーブフィルで ポイント位置を頂点にしたメッシュが作られます

面の中のポイントの配置自体は現状ランダムなので 実用にはもう少し検討が必要です

後は属性転送で元のメッシュからUVを取得したり
カメラ基準の座標に変換したりそれぞれの用途に合わせて調整することになるかと思います
image.png

4.2の例

ここまでの例では境界ギリギリの部分でメッシュを作る形になっていましたが
用途によっては確実に全ての不透明ピクセルがメッシュの中にしたいこともあります
Bleder 3.6以降「属性ブラー」のノードがあるので値を隣接部分にぼかすことで 範囲を拡張できます
image.png
このほかの調整も加えて4.2ではこのようにしてみました
image.png

どこまで需要があるか分かりませんが 何かの参考になれば幸いです

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?