【Houdini】Font ノードで穴の開いたアルファベット対策
概要
Houdini で Font ノードを使っていると、囲われたところに面が出来てしまい
Z-fighting が起きてしまうことがあります
Hole Faces にチェックを入れていればいくらか回避できますが、
いつも上手くいくわけではないようです
今回はその対策をしてみます
環境
Windows 10
Houdini 19.0.455
手順
全体はこんな感じです
分かりやすくするため、Hole Faces のチェックは外しておきます
detect_inverse_face
forward ベクトルを指定できるようにしていますが、
特に何もなければ (0, 0, 1) でよいです
(Z+ 方向に文字が向いているため)
float nDotF = dot(v@N, chv("forward")); // -0.99 は適当です // 内積が -1 == 反対を向いた面 なので、少し誤差を許容しています int isInverse = nDotF <= -0.99 ? 1 : 0; setprimgroup(geoself(), "inversed_face", @primnum, isInverse);
Split と Reverse
inversed_face で分けます
右側(Non-Selected Geometry)は反対を向いているので、
ひっくり返してあげるとこうなります
boolean
最後に Surface 同士で boolean してあげればおしまいです
余談
この方法はアルファベットだと上手くいく...と思います
問題になるのは漢字です
eg) 回 の場合
Before
After (今回のノードで処理後)
これをなんとかしようと foreach で回しながら... とかやったんですが、
結局は Hole Faces にチェックを入れると解決しました
さいごに
アルファベットの B だけ怪しい...ので、狙い撃ちで対策してもいいかもしれません
この記事のアイディアは 杉村さんのworkshop に影響を受けています
よければそちらもご確認ください~!
何かあれば Twitter までどうぞ~
漢字難しいな🤔
— てんちょー / 筑野(ちくの)えり💕🍱 (@shop_0761) 2022年6月4日