GetColor-V2r

* anm
* lua

種類
--

種類
--

GetColor-V2rとは、anm拡張子のAviutlスクリプトの１つである。

説明
--

画像をドット化して表示するスクリプトです。画像の色や透明度等を使用して変形などを行えます。

個別オブジェクトにも使用できますがオブジェクト分割を使用する場合はすべてのオプションよりも上にオブジェクト分割をセットして下さい。

## ※注意

以前間違って公開状態になっていたR93\_addons.zipに含まれていたものはgetcolortools.luaを含めこれとは互換がありません。一応名前は変えてありますがご注意下さい。

## 使用方法～インストール

GetColor-V2rフォルダをそのままscriptフォルダに入れるだけです。必須ではありませんが、一部機能にrikkyさんによるモジュールrikky\_module.dllが必要です。

* rikky\_module.dll
	+ これはexedit.aufと同じ階層へ。

## 大雑把な機能説明

* [Draw(Mein)] 描画をする本体です。主に点を描画します。以下のオプションを追加することで機能を追加できます。ただし「本体は全てのオプションより下」に設置しないとオプションが動作しません。またオプションは同じ元を複数付けたり、オプションの順番を入れ替えても意味がありません。
* [Position] 移動
* [Scale] スケール
* [Twist] 捻り
* [ColorShift] 変形用の色情報のオフセット等。
* [Field] アンカーや他のレイヤーの位置情報を使った押し出し移動/色変更/透明度/拡大率等
* [Noise] 他のオプションで使用するノイズの設定、ランダムとノイズを交換する
* [CmaeraDepth] 被写界深度もどき。
* [DrawLine] 線を生成
* [Polygon] 面を生成とライトを受ける場合のマテリアル設定
* [Light] ライトオブジェクトを作成、数は無制限。
	+ これは本体とは別のレイヤーのオブジェクトに使用するとライトとして認識します。
* マテリアル おまけ
	+ ライトオブジェクトがある場合に通常の画像などがライトの効果を受けることができるエフェクトです。個別オブジェクトなどに。

## いくつかのオプションの設定ダイアログで共通した部分があるので纏めて説明します

### ◆HSLAUVWR[xyz]

各種オプションの効き具合を色情報(等)を用いて変化させるオプションです。設定した情報から得られる値を0～1の数値として倍率をかけます。主にトラックバーの値に倍率をかける形になります。

* 数値か文字で指定し、テーブルで入力を使えばxyz個別に設定可能です。文字は大文字小文字問いません。マイナスをつけると値が反転します。
* 0 or "0" : 何もしない トラックバーの値をそのまま利用します。
* 1 or "H" : Hue 色相 (赤や青などの色合い)
* 2 or "S" : Saturation 彩度 (色の鮮やかさ、モノクロに近いほど小さい値です、白と黒は0です)
* 3 or "L" : Luminance 輝度 (視覚的な明るさ)
* 4 or "A" : Alpha 透明度 (画像のアルファ値)
* 5 or "U" : 画像横方向の処理順(左端=0 ～ 右端=1)
* 6 or "V" : 画像縦方向の処理順(上端=0 ～ 下端=1)
* 7 or "W" : 奥行方向(複製)の処理順(本体の分割設定で奥行の複製をしていない場合は何も起きません)
* 8 or "R" : ランダム、Noiseオプションを使用中だとノイズに変更されます。

テーブルで入力するとx,y,z方向それぞれ個別に変更できます。

{8, 1, 4} = {x座標要素をランダム, y座標要素を色相で, z座標要素を透明度に基づき動作します。}
[xyzr]表記の場合は4番目がトラックバーのランダムに対する影響を変更します。
### ◆└mode[xyz]

HSLAUVWR[xyz]で設定した値の範囲は 0 ～ 1 ですがこれを変更します。設定は0から3までの4種。

* 0: 0 ～ 1
* 1: -1 ～ 1
* 2: 0 ～ 1 ～ 0 ～ -1 ※sin(0～π)
* 3: 1 ～ 0 ～ -1 ～ 0 ※cos(0～π)

またテーブルで入力するとx,y,zを個別に変更できます。

### その他共通部

これ以外でも[xyz]表記のあるダイアログはテーブルで入力するとx,y,z個別の指定ができます。

更に入れ子でテーブル入力にすると個別オブジェクト毎に別の設定になります。
{{1,3,0}, 0, 0} = この場合はx座標要素において、一番目の個別オブジェクトの設定が0、二番目は3、三番目は0になります。
詳細
--

### ■ [Draw(Mein)]

[トラックバー]

* ◆Size
	+ ドットのサイズ、0だと描画をカットします。
* ◆ScaleX
	+ フォームによって意味が変化します
	+ 0～横倍率 / 100～半径 / 200～扁平 / 300～大半径 / 400:大半径
* ◆ScaleY
	+ フォームによって意味が変化します
	+ 0～縦倍率 / 100～高さ / 200～伸長 / 300～小半径 / 400:小半径
	+ -1にするとScaleXと連動します。
* ◆フォーム
	+ (0: 平面) ～ (100: 円柱) ～ (200: 球) ～ (300: トーラスA) ～ (400: トーラスB)
	+ 値が100,200,300,400とぴったりの場合は両端の頂点を閉じます。(ランダムに散らしても位置が同期します)
	+ form300、400は同じトーラスですが複製の仕方が変化します。
* ◆alpha二値
	+ 透明度0以外を全て不透明として扱い、半透明なものがなくなります。
	+ map用の透明度も二値化されますが設定ダイアログのalpha二値ﾀｲﾌﾟで残すこともできます。

[ダイアログ]

* ◆分割数
	+ {横分割数, 縦分割数, 奥行複製数, 奥行距離}と指定します。
	+ 縦分割数をnilまたは0だと正方形に分割します。
	+ また分割数はマイナスにすると描画間隔指定になります。
		- -10だと10ピクセルごとにドットを作ります。個別テキストのようなオブジェクト毎にピクセルサイズが違う場合に有効です。
		- -1だと画素数と同じだけ描画しますので事故に注意。
	+ 奥行複製数は最大20に制限してあります。
		- 奥行距離はFormが0以外の場合は半径に影響します。
* ◆交互
	+ 縦方向一段ずつ交互にずらします。
* ◆図形
	+ 表示する図形。背景は選択できません。
* └ﾗｲﾝ
	+ 図形線幅を指定。
* └解像度
	+ 100より大きいと内部で大きな図形を呼びます。くっきりさせたい場合や細い線の図形がほしい時に。
* ◆回転ﾓｰﾄﾞ
	+ 個別オブジェクトを使用した場合に軸の回転の挙動を変更
	+ 0:通常 1:グループ回転 2:位置関係のみ回転(相対座標が発生していないと何も起きません)
* ◆ｶﾒﾗ向き
	+ フィルタのカメラ制御オプションと同じです。基本3で。
	+ 0:無効 3:カメラの方を向く(縦横方向のみ) 3:カメラの方を向く(横方向のみ) 3:カメラの方を向く
* ◆HSLAUVWR[xyz]
	+ 色情報に応じてドットのサイズを変更します
	+ 1:色相 2:彩度 3:輝度 4:透明度 5:横位置 6:縦位置 7:奥複製数 8:ランダム
	+ ※form影響度と共有します。
* └mode[xyz]
	+ 色情報の変化範囲を変更 0:[0～1] 1:[-1～1] 2:[0～1～0～-1(sin)] 3:[1～0～-1～0(cos)]
* └影響(form)
	+ フォームで指定した形状がmap設定の影響を受けるかどうか。トラックバーのフォームが0の場合は無関係です。
	+ テーブル入力だとform変化時のﾃﾞｨﾚｲと進捗順のオーダーができます。
	+ { amount(-∞～∞), dealy(0.0～100), order(0～5),easeingtype(0～42) }
* └影響(size/alp)
	+ 図形サイズがHSLAUVWRの設定の影響を受ける割合を設定します。
	+ 二番目の値は透明度の影響度をしていします。
* ◆ﾗｲﾄ削除
	+ ライトオブジェクトを全てクリアします。余計なライトが残っている場合などにも。
* ◆透明塗り
	+ 元画像の透明部分を色で塗ります
* ◆alpha二値ﾀｲﾌﾟ
	+ alpha二値にチェックしている場合、描画のみを二値化するようにします。(map用の透明度は二値化されない)

## オプション

### ■ [Position]

[トラックバー]

* ◆PosX
* ◆PosY
* ◆PosZ
	+ 各方向に平行移動します。
	+ Twistオプションを併用している場合は[回転前に実行]のチェックで挙動が変わります。
	+ 設定ダイアログのHSLAUVWR[xyz]の設定で移動傾向が変化します。
* ◆random
	+ ランダムに散らします。設定ダイアログで方向を制限できます。
* ◆回転前に実行
	+ Twistオプションで回転する前に実行します。

[ダイアログ]

* ◆HSLAUVWR[xyz]
* └mode[xyz]
	+ 共通項を見てください。
* ◆RandomAmount
	+ ランダムの影響度を指定します。
	+ {0, 0, 1} などにするとz方向のみになります。
* ◆Random(add)
	+ トラックバーの値に加算します。
	+ (1-obj.alpha) \* 100 のようにするとTAアニメーションなどの透明度と連動します。
* ◆Pos(add)
	+ トラックバーの値に加算します。スクリプトや変数代入用。
* ◆AffectNoise
	+ 100でランダムとノイズを入れ替えます。
	+ [Noise]オプションがせっとされている場合は無視されます。
	+ noise.luaがロード済みである必要があります。

### ■ [Scale]

[トラックバー]

* ◆ScaleX
* ◆ScaleY
* ◆ScaleZ
	+ 各方向に拡大します。ランダムなどで散らかった状態を其の儘スケールします。
	+ 設定ダイアログのHSLAUVWR[xyz]の設定で移動傾向が変化します
* ◆random
	+ ランダムに散らします。

[ダイアログ]

* ◆HSLAUVWR[xyz]
* └mode[xyz]
	+ 共通項を見てください。
* ◆randamdirection
	+ ランダムの値を正負双方向から正方向にします。
* ◆Scale(add)
	+ トラックバーの値に加算します。

### ■ [Twist]

[トラックバー]

* ◆TwistX
* ◆TwistY
* ◆TwistZ
	+ 各方向に捻りを加えます。
	+ 設定ダイアログのHSLAUVWR[xyz]の設定で捻り具合を変えられます。
* ◆random
	+ ランダムにひねります。設定ダイアログで方向を制限できます
* ◆Scatter
	+ チェックを入れると捻りに加え、ランダムに散らします。

[ダイアログ]

* ◆HSLAUVWR[xyz]
* └mode[xyz]
	+ 共通項を見てください。
* ◆回転ﾓｰﾄﾞ[0/4]
	+ 捻り方を変更します。
* ◆scale
	+ 捻りのスケールを変更します。
	+ 値がを大きくすると波が細かくなっていきます。
	+ 0だとただの回転となります。
* ◆evolution
	+ 時間経過で自動的にねじれます。
* ◆軸⇔範囲
	+ 捻りの軸の中心をアンカーで変更できますがチェックを入れると
	+ 捻りの効果範囲の中心を指定するモードになります。
* ◆範囲
	+ 上記のチェックを入れた場合の効果半径を指定します。
* ◆ｱﾝｶｰ(ﾚｲﾔ)
	+ テーブルではなく、数値を入れるとアンカー位置をレイヤーを使って指定できます。
* ◆random[xyx]
	+ ランダムの効き具合の倍率を変更します。
	+ 例えば {0,0,1} だとz座標のみランダムに移動するようになります。

### ■ [Noise]

他のオプションのランダムの項目をタービュレントノイズに変更します。
[トラックバー]

* ◆Scale
	+ 基本のノイズの周期を変更します。値が大きいとノイズは細かくなります。
* ◆Lacunary
	+ Octaveノイズの細かさを指定します。値が大きいと細かくなります。
* ◆Gain
	+ Octaveノイズの影響度を指定します。
* ◆Affect
	+ ランダムとノイズを交換します。

[ダイアログ]

* ◆NoiseScale[xyz]
	+ ノイズ周期をxyzそれぞれ変更します。
* ◆Octaves
	+ 基本ノイズに周期の小さいノイズを追加して細かなニュアンスを加えます。
	+ 何度も繰り返し実行されるので重くなります。
* └ Lacunary
	+ トラックバー Lacunaryの最大値
* └ GainMax
	+ トラックバー Gainの最大値。1以下が妥当。
* ◆Wind X,Y,Z
	+ ノイズをスクロールさせる速度です。
* ◆Offset[xyz]
	+ ノイズの位置を移動します。スクリプトや変数用。
* ◆UV⇔Global
	+ ノイズのスケールと位置を画像サイズ基準のUVからワールド座標にします。

### ■ [Delay]

オブジェクト自体の移動や回転のアニメーションをした場合にｽﾞﾚを発生させます。

※座標の移動や各軸の回転をアニメーションさせていないと何も起きません。
[トラックバー]

* ◆time
	+ 100で一秒のずれになります。実際はパターンや画像情報によりけりです。
	+ 個別オブジェクトであった場合もインデックス順にずれます。(これはパターンを無視します)
* ◆HSLA
	+ ずれパターンその1
	+ 1: 色相
	+ 2: 彩度
	+ 3: 輝度
	+ 4: 透明度
* ◆XYCDR
	+ ずれパターンその2
	+ 1: 横方向処理順 →に行くほど遅れます
	+ 2: 縦方向処理順 ↓に行くほど遅れます
	+ 3: 処理順 右上から左下へ行くほど遅れます
	+ 4: 放射状 外側ほど遅れます
* ◆random
* ずれパターンその3
* ランダム具合です。
* ◆invert
* パターン順を反転します。

### ■ [ColorShift]

画像の色情報などのmap用の数値をずらします。画像そのものの色は変更しません。各種オプションにあるmapを設定している場合に効果を発揮します。

各種オプションの[└mode[xyz]]の設定で0か1を指定している場合は値をずらしていくと値がジャンプするようにループします。2,3の場合はサインとコサインなのでジャンプせず往復します。
[トラックバー & ダイアログ]

* ◆H 色相
* ◆S 彩度
* ◆L 輝度
* ◆A 透明度
* ◆U 横方向処理順
* ◆V 縦方向処理順
* ◆W 奥複製数
	+ 100で値が一周します。
* ◆sin周期
	+ └mode[xyz]の2,3で使用するサイン、コサインの周期を変更します。
* ◆sin位相
	+ └mode[xyz]の2,3で使用するサイン、コサインの位相をずらします。

### ■ [Field]

アンカーやレイヤーの位置から一定の範囲を押し出すように移動させたり、拡大したり、透明にしたり、ランダムにしたり、色を変更したりします。
[トラックバー]

* ◆Radius
	+ フィールドの影響半径です。
* ◆Strength
	+ 押し出し移動の強度です。100だと完全な球形になります。マイナスだと吸い込みます。
* ◆Mode
	+ 0だと半径外に押し出すように移動、1だと半径内に押し込めるように移動。
* ◆アンカー数
	+ フィールド位置用のアンカーを増やします。

[ダイアログ]

* ◆FieldLayer
	+ レイヤーにあるオブジェクトをフィールドの位置として利用します。テーブルで複数指定できます。
* ◆原点基準に固定
	+ アンカーの位置を原点からの座標に残るように固定します。
	+ なので本体を原点から移動、回転させた場合は見た目のアンカーポイントとフィールドが一致しなくなります。
	+ これはアンカーポイントにのみ影響します。
* ◆Radius(add)
	+ 影響半径を加算します。テーブル入力でアンカー毎に別の値を設定できます。
	+ 指定する順番ですがアンカーが先でFieldLayerで指定した分は後ろに追加される形になります。
* ◆ｱﾝｶｰ
	+ とくになし。小数点以下の値が発生すると容量オーバーでアンカーがバグる場合があります。
* ◆zoom影響度
	+ フィールド内の点の拡大率に影響を与えます。100だと半径の中心で二倍に拡大。マイナスだと小さくなります。
* ◆alpha影響度
	+ 透明度に影響します。100だと半径の中心で完全に透明になります。
	+ マイナスだと範囲が反転します。
	+ 大きい値だと急激に変化します。
* ◆色強度
	+ 色の変化に影響します。100だと半径の中心で着色強度が100％です。
	+ マイナスで範囲が反転します。
	+ 大きい値だと急激に変化します。
* ◆色
	+ 色強度用のカラーです。
* ◆random[xyz]
	+ 半径内をランダムに移動させます。テーブルだとx,y,z個別に指定できます。
	+ Noiseオプションをつけてあるとノイズを使用します。

### ■ [CameraDepth]

カメラ位置を使ってぼかしをかけたりする被写界深度もどきです。大変に重いです。
[トラックバー]

* ◆Focal
	+ 焦点位置をを前後させます。
* ◆DOF
	+ 焦点の合う範囲(=値が変化しない範囲)を広げます。
* ◆Fade
	+ DOF範囲外で値が変化していく距離です。
* ◆Blur
	+ ぼかしの最大強度です。
* ◆焦点を目標に固定
	+ カメラを移動させても目標にピントが合い続けます。(Focalで前後します。)

[ダイアログ]

* ◆レンズブラー
	+ チェックするとレンズブラーを使います。色々と覚悟が必要です。
* ◆透明化
	+ 透明度を変化させます。完全に透明になると処理がカットされるので場合によっては軽量化。
* ◆色変化強度
	+ 色を変化させます。
* ◆farColor
	+ 焦点より奥の色を設定します。空欄で無効化。
* ◆nearColor
	+ 焦点より手前の色を設定します。空欄で無効化。
* ◆平面レイヤ
	+ 指定したレイヤーオブジェクトの位置をカメラ平面の代わりにしたエフェクターになります。平面を任意に回転させたりできます。
	+ ※通常はカメラから目標方向に1024pixel離れた位置に平面を作成し、その平面と点距離を使ってエフェクトをかけています。

### ■ [DrawLine]

点を結ぶ線を生成します。

LineMode2は近い点同士を結ぶはずですがおばかなアルゴリズムなのでかなり残念な感じです。
[トラックバー]

* ◆Width
	+ 線幅を指定します。大きな値だとただの板なのがばれます。
* ◆Maxdist
	+ 線で結ぶ距離を指定。mode2の場合は小さい値から攻めないと綺麗にならないと思います。
* ◆Opacity
	+ 透明度を指定します。
* ◆Progress
	+ 線の延ばし具合です。LineModeにより挙動が少し変化します。

[ダイアログ]

* ◆LineMode[0/2]
	+ 0: ポリゴンの分割線に生成、固定数です。
	+ 1: 点の描画順に結びます。
	+ 2: 近い距離を無造作に結びます。頂点当たりの数はmaxnumで指定。
* ◆VanishFade
	+ 線の長さがMaxdistを超えてから消えるまでの距離です。小さい値のほうがコントロールしやすいです。
* ◆Maxnum(mode2)
	+ LineModeが2の場合頂点当たりに引く線の最大数です。"max" と入れると全ての組み合わせを実行します(大事故)。
* ◆Colfade(mode0)
	+ LineMode0の場合頂点カラーをフェードします。透明度もフェードするのでアルファ値のある画像で使うと残念な感じに。
* ◆Shuffle(mode>0)
	+ LineModeが1以上の場合、頂点を結ぶ順を変更します。
	+ 0: 何もしない
	+ 1: 逆順
	+ 2: シャッフル
	+ 3: ランダム　(重複やスルーされる点が発生します)

### ■ [DrawPolygon]

面を生成します。ライトオブジェクトがあると簡易的なシェーディングを試みます。

それなりの重さをお覚悟ください。
またここで作成された色は点や欄描画にも使用されます。
[トラックバー]

* ◆Opacity
	+ 透明度です。
* ◆Diffuse
	+ ライトの光を受ける強度です。(ライトがある場合)
	+ ドットの色も影響を受けます。
* ◆Ambient
	+ Ambientカラーの影響度です。(ライトがある場合)
	+ AmbientColが白の場合、100にすると元の色になります。
* ◆Specular
	+ スペキュラ、というかライトの全反射の強度です。(反射有効 + ライトがある場合のみ)
* ◆反射有効
	+ 反射を有効にします。(ライトがある場合)。本体のライト削除を使用中は黒くなります。

[ダイアログ]

* ◆OpacityRnd
	+ 透明度をランダム化します。 0 ~ 100 の範囲で指定。
	+ ランダムシードを変更したい場合はテーブルで入れると二つ目の要素がシード値になります。 {100, 23246}
* ◆AmbientCol
	+ 環境光です。(白を指定し、Ambient=100,Diffuse=0 だと元の色になります。)
* ◆Blend
	+ ポリゴンの合成モードを変更します。
		- 0 ~ 13 : (ノーマル、加算、減算、乗算、スクリーン、オーバーレイ、比較(明)、比較(暗)、輝度、色差、陰影、明暗、差分)
		- -1: 法線カラーもどき。(特に意味はありませんが。AmbientColを白にするとわかりやすいです。)
		- -2: rikkyさんのrikky\_module.materialdrawを用いた描画を行います。正確かと思われます。ライト数が最大4に制限されます。
		- ※現在の仕様だとライトの減衰を実現しようとした場合極端に重くなるため見送りました。
* ◆Texture
	+ 0か1で指定します。XY平面のみ使用できます。
	+ 1だと画像をそのまま使用しますが大変重たいです。色の処理方法も違います。
* ◆Triangles
	+ 三角形に分割します。重くなりますがランダムなどの変形で破綻しなくなります。
* ◆XY
	+ 正面に面を表示
* ◆YZ
	+ 側面に面を表示(本体で奥行複製している場合)
* ◆ZX
	+ 上面に面を表示(本体で奥行複製している場合)
* ◆VanishStart
	+ ポリゴンの頂点の距離が指定した値より離れると消えます。
* └Fade
	+ VanishStartから完全に消えるまでの距離です。
* ◆Shininess
	+ ライトの光スペキュラーが反射する角度を制限します。値が大きいと角度判定が狭くなりキラキラ度が増します。100が基準。
* └Blend
	+ スペキュラの合成モードです。通常は1の加算です。むしろそれ以外はおかしいですが。
* └Falloff
	+ スペキュラに距離減衰を適用します。 0か1で指定。0だと距離無制限。

### ■ [Light(別ﾚｲﾔーで使用)]

任意のレイヤーオブジェクトをライト化します。グローバル変数でやり取りするので本体より上のレイヤーで使用するほうが良いです。

* ◆Intensity
	+ ライトの強度です。
* ◆Radius
	+ ライトの強度が最大になる範囲です。
* ◆Falloff
	+ Radiusより外側の強度減衰距離です。
* ◆Lange
	+ Visibleで表示するライト(のような何か)の長さです。いい加減です。
* ◆Visible
	+ チェックをすると使用中のオブジェクトをライト風に描画します。小さい図形に使わないと大事件。
* ◆color
	+ ライトの色です。空欄だとオブジェクトの色を使用します。(図形以外だと正しい色が出ない場合があります)
* ◆ParallelLight
	+ 軸回転による指向性を持つ平行ライトもどきです。無限に長い蛍光灯ようなイメージです。
	+ TargetLayerを指定するとそちらへ向きます。軸回転はできなくなるので注意。
* ◆Radius
	+ トラックバーの値に追加で半径を広げます。
	+ obj.w/2 など入れると図形のサイズと半径がリンクしたりします。

### ■ マテリアル[Lighting]

おまけ

* これはGetColorと直接関係がありませんが[Light(別ﾚｲﾔーで使用)] で作ったライトを通常のオブジェクトで受けることができるエフェクトです。
* 個別オブジェクトで使用するとわかりやすいと思います。
* カメラ制御下でないとうまく動作しません。