既存オブジェクトに メッシュを投影することで
オブジェクトを作り替えることなく新しく効果を足すことができます
特にカメラ方向から投影することで必要なカットだけ3D上でレタッチを施すといったことも可能です。
今までもシュリンクラップ等を使って似たようなことはできましたが
ジオメトリノードでより柔軟に作成する方法を試してみました
この記事はblender3.3を想定しています
またジオメトリノードの基本的な使い方は把握している人を対象にしています
レイキャスト
図はレイキャストのノードでグリッド状のメッシュを上から-Z方向(0,0,-1)に向かって投影する例です
(投影したものが見やすくなるように設定を調整してあります)
レイキャストは 「ソースの位置」から「レイの方向」で指定した方向を探って
ターゲットジオメトリに当たった場合には「ヒット位置」に当たった座標が出力されます
(当たらなかった場合には(0,0,0))
ヒットフラグにはターゲットに当たったかどうかのbool値が出力されます
ここで レイキャストの入力の「レイの方向」を見ると◇の入力になっているので
計算したいポイント個々で投影するベクトルを設定できる ということになります。
カメラ投影
「レイの方向」を指定することでのカメラ投影です。
「投影するメッシュ」の頂点座標を カメラオブジェクトと同じ回転を加えることでレイの方向のベクトルとして利用しています
Blenderのカメラのデフォルト値は-Z方向となるため
投影するメッシュのトランスフォームもマイナス方向への移動になっています
なお、この段階ではカメラのfovは考慮していません
ここではジオメトリ分離を利用して レイがヒットしなかった頂点を取り除いています
これで基本的な動作は実現できたものの
- レイとメッシュ頂点が重なった部分しか使えない(ターゲットから外れた部分のメッシュも欲しい)
- 投影座標がターゲット表面上にピッタリすぎる
といった問題があります
とりあえずはヒットした中で一番遠い距離にヒットしなかったメッシュを揃えるものを作ってみました
新しいバージョンでは扱いやすい機能も載っているようですがもう少し色々試したいと思います