すあまの備忘録

誰得内容の自分のための非営利目的備忘録ブログ(筆者がわかっても内緒にしてください)

カメラからのアウトライン生成

youtu.be

探したら誰かやってるかもしれない。

かぶってたらごめんなさい。

100%うまく行く手法ではないです。

この手法できたラインの曲率などで太さの抑揚をつけ、前回のアニメ風〜と組み合わせるとなんかそれっぽいものが作れます。面白い。

hip

outline.hiplc - Google ドライブ

Houdini 19.0.498

使用は自由ですが責任は持ちません。

作り方

アウトラインの生成

f:id:godofsuama:20220206005002p:plain

UV Textureでカメラからの距離を取得 f:id:godofsuama:20220206005048p:plain

Point VOPでtoNDCを使用してカメラ空間へPを変換 f:id:godofsuama:20220206005126p:plain

カメラ空間に変換されると原点付近でものすごく歪んだ形のメッシュになる。 f:id:godofsuama:20220206005328p:plain

TransformノードでZを0にする。 f:id:godofsuama:20220206005210p:plain

メッシュを削減するためにNの向きで削除(軽くするためなのでなくても可) f:id:godofsuama:20220206005429p:plain

Triangulate 2Dをする。そうするとアウトラインと思わしきもののみが残る f:id:godofsuama:20220206005532p:plain

f:id:godofsuama:20220206005549p:plain

DivideのUnshared Edgeにして完全にアウトラインのみを残す。(画像のように変なポリゴンができても一旦無視) f:id:godofsuama:20220206005708p:plain

Endを画像の設定でつなぐ。 f:id:godofsuama:20220206005808p:plain

Point VOPでfromNDCを使用してワールド空間へ戻す。 f:id:godofsuama:20220206005851p:plain

f:id:godofsuama:20220206005913p:plain

Resampleして一応NURBSにしておく。 f:id:godofsuama:20220206005956p:plain

太さをもたせる

扱いづらいので最初に作ったVectorのカメラからの距離をzのみ残してfloatにする。 f:id:godofsuama:20220206010119p:plain

min/maxをPromoteして良い値のpscaleに変換する。 f:id:godofsuama:20220206010213p:plain

PolyFrameでNを作り f:id:godofsuama:20220206010236p:plain

SweepのRibbonでメッシュを貼る f:id:godofsuama:20220206010321p:plain

Nが裏返っている部分があるので、Groupノードでグループを作り、Reverseで該当グループのみ反転する。 f:id:godofsuama:20220206010442p:plain

f:id:godofsuama:20220206010515p:plain

色などをつけて実際のカメラから見たらいい感じになっているはず。 f:id:godofsuama:20220206010642p:plain

余談

Labs Extract Silhouetteでもいいじゃないか!と思うが、あれはOrthographic Cameraなのでパースのないカメラ扱いになってしまう。

そこまでやったならPerspective Cameraもつけてくれて良いんじゃないですか…