| 使用ソフトウェア | バージョン | 備考 | 
|---|---|---|
| Blender | 3.4 | 
2023/06/02:「出し方」の項目が間違っていたので訂正。合わせてカテゴリが変更されているので修正。
このノードは上級者向け。
日本語:最近接サンプル
別メッシュと比較して、最も近い頂点/辺/面いずれかのIndexを取ってくるノード
このノードはv3.3までのTransfer Attributeが廃止され、その代わりに3つのノードのうちの1つ。
追加されたのは次の通り。
Sample Nearest Surface(最近接表面サンプル)Sample Nearest(最近接サンプル)Sample Index(インデックスサンプル)Geometry(ジオメトリ) > Sample(サンプル) > Sample Nearest(最近接表面サンプル)
このノードはGeometryカテゴリに分類されているが、似ているノードのSample Nearest Surface(最近接表面サンプル)はMeshに入っているので注意。
使い方自体はシンプル。
Sample Nearest(最近接サンプル)は設定した頂点/辺/面のいずれかの最近接のIndexを取得するので
このように繋ぐだけでIco球の各頂点に、そこから最も近いCubeの頂点のIndexを取得できる。
イメージがわかない人向けの参考。
上の例はIco球の中にCubeが作られている。分かりやすい見た目にすると次のような状態。
このIco球の各頂点から見て、Cube上のどの頂点が最も近いかが記録される。
スプレッドシートは次のようになる。
上の例ではStore named Attribute(名前付き属性格納)を使用したが、公式DocのサンプルにあるようにSample Index(インデックスサンプル)と合わせて使うと自由なアトリビュートを取得できる。
例えば次のような例
このように組むとIco球の各頂点データそれぞれに、「そこから最も近いCubeの頂点のPosition」を記録できる。
上の2つのノードを使って作例を作った。
ノードを掲載するが少し複雑になってしまったので、組み方はお好きな方だけ見てもらえればと思う。
画像クリックで拡大
このケースだと単に最近接のPositionを取得しているだけなのでGeometry Proximity(ジオメトリ近接)ノードでも置き換えられるかと思う。
この組み合わせは自分で追加したアトリビュートやタンジェントなど特殊なデータを取得するケースでもっと輝くのではないだろうか。
日本語:最近接表面サンプル
このノードはSample Nearest Surface(最近接表面サンプル)と似ている。
次のページで解説しているので参考にしてもらえたらと思う。
Sample Nearest Surface(最近接表面サンプル)を解説【Blender - Geometry Nodes】 | 謎の技術研究部
この2つの具体的な違いはなんだろうか。
そもそもアウトプットのソケットが違うが、それ以上に大きな違いがある。
Sample Nearest Surface(最近接表面サンプル)を使用して「最も近いIndex」を取ってみる。
Ico球の各頂点から見て、最も近いCubeのIndexを取得し、Ico球の頂点内にデータとして保存している。
気づいたと思うがIndexに小数点以下の値が含まれている。
なぜなら上のノードはメッシュの表面上ならあらゆる箇所を最近接として認識するからだと思われる。
そのため、その地点には実際には存在しない値を、近くのValueから補完して出力するという動作になる。
つまり上の例だと存在しないIndex値が補完され小数点で帰ってきてしまう。
どうやらVertexではなくFace CornerのIndexから算出される模様。
これらは私の実験結果からの予測なので間違っている可能性に注意。
わからん人向けに比較動画を作った。
Sample Nearest(最近接サンプル)を使って最近接のポイント(赤玉)に線を結ぶノードを組む。
かならずCubeの頂点が近接として処理されている(設定で面や辺にも変えられる)
同じノードの組み方でSample Nearest Surface(最近接表面サンプル)を使うと
頂点が存在しないCubeの面上も最近接と認識され、そこに赤玉が落ちている。
というわけで、面や頂点に明示的に保存されている値を取りたい場合はSample Nearest(最近接サンプル)を使う。
自由度が一気に広がるので、大きな可能性を感じるノードだ。
ただ、このノードの組み合わせを使って壮大な作例を作れるアイデアを私は持ち合わせていない。
何かもっと実用的なものがあれば別途記事にしたいところ。
