【c累スクリプト】法線マップ【AviUtl】(執筆放棄)

※こちらの記事を未完成のまま投稿した理由について:スクリプト配布終了に伴って書く気が失せてしまったけど途中まで書いたので一応上げておこうと思ったためです。申し訳ございません…気が向いた時にまた書きます。
質問にはわかる範囲であればお答えしますので、御気軽にお尋ね下さい。

どうも、貴方です。今回は「c累」スクリプトの「法線マップ」関連について話をしようかなぁと思います。

c累スクリプトのDLはこちらから【https://www.nicovideo.jp/watch/sm33569861

Q.c累って何ぞ

A.とてつもなく高性能だけど情報が全くと言っていいほど無いスクリプト。
なのでこのスクリプトの情報を載せていけたらいいなぁと思ってるのですが、筆者のLuaの知識が0なので、やり方次第ではもっといろんなことができると思います。ゴメンネ.
あと、よくわからなかったり、別のところで出てきたパラメータは説明を省いている場合があります。よくわからなかったものは、わかり次第書き足します...

初めにすること

法線マップ

法線マップを用意します。
または、法線マップにしたい画像などを用意して、「c累-ピクセル」の中にある、「ハイトマップから法線マップ」を適用してください。

ハイトマップから

高さ:凹凸の高さを変えられます。
pattern:法線マップがちょっとだけ変化します。

patternって何が変わってるのかなぁ...って思って同梱の説明書きを見てみたのですが...

パターン

?????????????????????????
わかりませんでした。
使った感じ質感がちょっと変わります。(わかる人教えてください)

ハイトマップから2

[track0]:凹凸の高さを変えられます。先ほど(トラックバー)の「高さ」と同じですが、スクリプト制御を使った指定ができるのでそういう知識がある人用かなぁといった感じです。トラックバーの「高さ」とこれを両方使用した場合はこちらが優先されます。
A値をリセット:ハイトマップのA値を無効にします。...A値って何ですか。
io)法線→色:法線を色に変換するための数値を指定します。...あまりいじる必要はなさそうです。
入力Byte[1~4]:ハイトマップのbyte数を指定できます
1~3:1~3バイトの整数値として読み込みます。
4:4バイトの浮動小数点値として読み込みます。
...これもあまりいじる必要はなさそうです。

正規化

ここから「c累-法線マップ」のスクリプトの解説になります。

正規化1

1==三次元 0==二次元:チェックを入れると三次元法線マップ(RGB)を正規化、チェックを外すと二次元法線マップ(RG)を正規化します。
「設定」内↓
未満A値スキップ:A値が、指定した数値未満のピクセルを処理しません。

一応かけておいたほうがいいのかなぁ...とは思うのですが、絶対的な必要性は感じません。
二次元法線マップを使いたい場合はこれを使えばいいと思います。

法線マップを回転(角度)

法線マップ回転角度1

三次元法線マップ(RGB)の法線を回転します。
オブジェクト自体を回転させたりした時などに使うと光の向きを直したりできます。(光の話は後に出てきます。)

X,Y,Z回転:回転する角度を指定します。
設定内↓
rx ry rz考慮:X軸回転角度(rx),Y軸回転角度(ry),Z軸回転角度(rz)の値を含めます。(rx,ry,rzは360.0で一回転)
回転Aviutl基準:チェックを入れるとAviUtl基準で回転します。
AviUtl基準はZの正の値が奥側、法線マップの座標系基準はZの正の値が手前側という違いがあります。

法線マップを回転

X,Y,Zそれぞれのベクトルを直接指定できます

設定内↓
X,Y,Z軸:X軸・Y軸・Z軸それぞれのベクトルを指定します。

view_vector_rotate

三次元法線マップ(RGB)の法線を視線ベクトルで回転します。

設定内↓
視線ベクトル(View:視線の方向を指定します。
Up:上方向を指定します。
視野角、縦横比:{[1],[2]}として、
[1]:視野角を指定します。
[2]:無記入(nil)の場合、(画像の横幅÷画像の縦幅)で指定されます。

...私はちょっと理解ができなかったので、背景(図形)にこれと法線マップを回転(角度)をかけて、多色グラデーションとして使っています(衝撃の事実)。色調補正で明るさを上げたりしてスクリーン合成とかオーバーレイ合成とかすると綺麗ですね。(白目)

ディフューズドライト

ディフューズドライト

三次元法線マップ(RGB)を元にディフューズライト(拡散反射光)を掛けます。

ディフューズドライト1

X,Y,Z:光の方向を指定できます。
反転:処理後の色を反転します
設定内↓
[track0~2]:X,Y,Zと同じものを指定できます。
光向キャッシュ名:キャッシュ画像の名前を指定します。
光の方向をキャッシュ画像(三次元法線マップ)から読み取ります。
ObjMode:オブジェクトとカメラのデータを参照します。
光の方向の座標系が法線マップ基準ではなくAviUtl基準になるので注意してください。

ディフューズドライト(2Dポイント)

ディフューズドライト2d

光が全体ではなく、ある光源から照射されたようにかかります。

ディフューズドライト2d1

X,Y,Z:光源の座標を指定します。
反転:処理後の色を反転します
設定内↓
[track0~2]:X,Y,Zと同じものを指定できます。
光向キャッシュ名:キャッシュ画像の名前を指定します。
光の方向をキャッシュ画像(三次元法線マップ)から読み取ります。
ObjMode:オブジェクトとカメラのデータを参照します。
光の方向の座標系が法線マップ基準ではなくAviUtl基準になるので注意してください。

光源を別レイヤーのオブジェクトにする方法を知りたかったからちょっとスクリプト制御を勉強したので共有。

まず、[track0~2]に
{obj.getvalue("layer?.x"),obj.getvalue("layer?.y"),obj.getvalue("layer?.z")}
と書きます。(?は指定したいオブジェクトがあるレイヤー)
そしてObjModeをオンにしてください。

因みに、[track?~?]て感じの部分があるものに関して別レイヤーのオブジェクトの数値を参照したいという場合は,その部分に{obj.getvalue("layer?.[指定したい数値(x等)]"),~}と入力すれば良いみたいです。

この記事が気に入ったらサポートをしてみませんか?