POPとpbr MATの併用2:texture

particles

はじめに

先回、POPを使って粒子に映像を映し立体化する手法と、pbr MATを使って立体化する手法を併用して、オブジェクトと背景を立体化しました。今回はこの続きです。私はPOPは粒子を扱うので、pbr等を使ってテクスチャーを貼ると、ブツブツになってしまうと思いこんでおりました。先回のblogでPOPに対してpbt MATを使って粒子に絵を描いています。この時粒子の粒が見えています。これは想定どうりでした。POPの入力はpoint generator POPを使っています。その後、point generator POPを使わずgrid POPを入力に使いました。POPは粒子を扱うためgridは、pointの集合として認識され、メッシュ情報は消えるはずです。そのため映像はブツブツになると思っておりました。結果はそうならず、SOPにテクスチャーをはったのと同様に描けたのです。このことからmeshで作った形状をPOPで扱っても、SOPでテクスチャーを貼ったと同様に描けるはずです。そしてこの場合もPOPで立体化する利点は保持できるでしょう。今回は、何故ブツブツにならないのか、そしてそれならば、リアリティの高いテクスチャーを貼ってみようと思いました。

タコクラゲのgrid POP版

それでは、POPの入力がpoint generator POPからgrid POPに変更した場合の映像を示します。法線情報を入れる必要があるので、normal POPを足しています。

このように粒子のブツブツさがなく、描くことができました。タコクラゲのオブジェクトはPOPで立体化し、背景はpbrで作製しています。POPは粒子であるのに何故ブツブツにならないのか、これをAI Copilotに聞いてみました。POPのgridはポイントだけ残り、meshの情報は無くなります。しかしgeo COMPでmeshの情報を再構築するようです。このため、MATで使うmapも情報は面に貼ることができるとのことです。これはありがたい自動機能です。ですから粒子のニュアンスを残す場合は、point generator POPを使い、テクスチャーを面に貼りたい場合はmeshの図形を使えばよいことになります。
今回はPOPが粒子だからブツブツが残るというのは、私の思い込みでした。このためmeshの図形が使えると思わなかったのです。こうした思い込みは、どんな場合もしばしばあります。内部処理があるかもしれないことがなかなか想像できません。気お付けたいところです。

pbr MATに画像テクスチャーを使った場合

blenderで作製した山の形状のobjファイルに岩のテクスチャーを貼り、POP側で揺らぎを与えることにしました。File in POPで読み込んだ画像が次です。

この時点で粒子化されているはずですが、AIによると内部のviewerによって元の形状が描画されるとのことです。それでは作製した映像を見て下さい。海底の岩が地震で揺れる様子をイメージして作製しました。

透明な揺らぎがあります。それがPOPの部分で作った立体です。
プログラムの主要部分は次になります。

左上のfile in POPが山の画像です。texture map POP -> lookup texture POP -> transform POPが立体化するための組み合わせです。look up texture POPには、「ボロノイ+炎」の映像がアサインされています。ボロノイが細かいガタガタする効果で炎は比較的ゆっくりと上下に動く効果を作っています。geo COMPの前にnormal POPを入れているのは、法線方向を設定するためです。
pbr MATに対しては、テクスチャーを提供するサイトであるpoly havenサイトから得た岩のテクスチャーを使っています。color map, roughness map, normal mapです。normal map をlevel TOPを入れてcolor mapに使い、color mapをnormal map TOPを入れてnormal mapに使っています。映像を見ながら自分のイメージに合うようにleve TOPを適当に調整しています。height mapには、これまで作製した白黒の画像を使いました。

岩のテクスチャーを使ったのでリアリティの高い映像ができています。POPが粒子を扱うのでブツブツになるのではと言う心配は、POPの入力にmeshで作製した図形を使うことで解消されました。meshの図形とpbr MATは、SOPと同様にPOPでも扱えることがわかりました。

まとめ

POPが粒子を扱うためにtextureを貼ってもブツブツになるのでは、という思い込みがありました。入力をpoint generatorで作ると粒子状になりますが、入力をmeshで作ると、SOPで行う場合と同様にtextureを貼れることが分かりました。lookup texutre POPを使って立体化する手法と、pbr MATにheight mapを使って立体化する手法は、併用して使えることがわかりました。

今回で150回目を迎えることができました。見てくださる方々が、少ないながらいらっしゃるからこそ続けれています。感謝申し上げます。プログラムを体験として捉えることが大分できてきたように思います。慢性的なネタ切れ状態ですが、なんとか続けたいものです。

コメント