2018年1月26日金曜日

[Houdini] カーブを延長

先日 Houdini でカーブを延長する方法が分からず調べた情報を共有します。
カーブに新たなポイントを追加する形で延長する方法になります。

Add SOP でカーブを延長

カーブを延長するには Add SOP ノードを使います。


追加したいポイント数を「Number of Points」欄に入力し、その下に座標を指定
「Polygons」タブで「By Group」タブを選択することでカーブが延長されます。

延長する向きのコントロール

ちなみにポイントIDの大きい側からカーブが延長されます。
逆の向きに延長したい場合は「Sort SOP」でID順を逆にしましょう。

ちなみに、自分的に引っ掛かりポイントだったのですが「Reverse」SOPでカーブの向きを逆にしてもポイントIDは逆にならないので注意です。
カーブの向きとIDは別物のようです><

※独学で仕入れている知識のため、より良いやり方があるかもしれません。
※Houdini のバージョンは 16.5 となります。

2018年1月8日月曜日

[UE4][TIPS] UV DIstortion の仕組み

前回紹介した UV Distortion の仕組みについて解説します。

Unreal Engine 4 の UV オフセット

UV Distortion の理解のために、まず UV のオフセットという基本的なところを確認したいと思います。
UV Distortion はこれから確認する基本の仕組みを使っているだけなので、イコール UV Distortion の解説でもあったりします。

ということで UV のオフセットですが、ご存知「TextureCoordinate」に対して足し算をすることで位置のオフセットが可能です。
「TextureCoordinate」は2チャンネルのベクター情報なので、ここでは 「Constant2Vector」を使って足し算しています。
これはモデルのUVがテクスチャのどのピクセルを見に行くかという「TextureCoordinate」の情報を書き換えることで実現する現象です。
例えばもともと1であったVの値に0.4を足すことで1.4になると、当初V値が1を見に行くはずだったモデルはV値1.4(つまり0.4)に相当するテクスチャを参照することになります。

これをテクスチャ画像で考えると下図のように位置が上にずれることになります。


また掛け算をすることでタイリング数をコントロールすることができますがこれも原理は一緒です。
例えばVに2をかけた場合、もともと1だったV値は2になり、また0.5だったV値は1 になります。

その変化に従って画像を当てはめると下のようになり、画像のタイリング数が変わることになります。

この数字によるUVの計算を画像でやろうというのが UV Distortion になります。

簡単な画像を使って歪ませてみる

ではこちらの「円をぼかした画像」を使って計算するとどうなるのか?
明度の数値を見ると、中央が1(白100%)で周囲が0(黒)になっています。
これを「TextureCoordinateの」V値(Gチャンネル)に足すグラフを作成します。
するとこのようになります。
どういうことかというと、白い部分のみV値に1を足したことになり、その箇所だけ1オフセットさせたことになります。黒いエリアは数値としては0なので足し算しても変化はありません。
さらに1以下の少数値を画像に対して掛け算してオフセット量を減らしてみると

歪みを視認できる程度におさえることができます。


これが UV Distorting と呼ばれるものの仕組みです。

UV への計算に数値ではなく画像を使うことで UV を部分的にオフセットさせて結果テクスチャが歪むというわけです。
Unreal Engine 4 のマテリアルエディタはマイナス値も扱えるので、画像にさらに0.5を引くことでグレーよりも暗い部分を反対方向にオフセットさせることもできます。


また、画像の明度を数値として計算に使っている関係上、その画像の階調が細かいほうがより細かなオフセット量を与えることができます。ということはオフセットに使う画像は1チャンネル32bitのHDR画像を使うとよりなめらかな結果になります。そのへんはメモリと相談しつつの使用となるかと思います。