« C4D ユーザスクリプトをR9とR10以降に対応させる… | トップページ | C4D C.O.F.F.E.E. Noiseクラスを使ってみる。 »

C4D C.O.F.F.E.E. ランダム値の取得の為のRandomクラスに似たNoiseクラスを使ってみる。

Randomクラスに似たNoiseクラス…とは言っても違う物なのだ。

Randomクラスが吐き出す数値は、次に吐き出す数値とは全く関係の無い数値なのだ。
Noiseクラスが吐き出す数値は、メンバ関数に渡す引数の値が近ければ、似たような数値が返ってきますが、全体的に揺らいでいます。

Noiseクラスメンバ関数

[float]Noise([float] a [, [float] b [, [float] c [, [float] d]]]) 0.0~1.0 標準的なノイズ
[float]SNoise([float] a [, [float] b [, [float] c [, [float] d]]]) -1.0~1.0 標準的なノイズ
[float]Turbulence([float] oct , [bool] abs , [float] a [, [float] b [, [float] c [, [float] d]]]) -2.0~2.0 タービュランス
[void]InitFbm([float] lacunarity , [float] h) --- FbmとRidgeMultifractalを使う前に必ず実行
[float]Fbm([float] oct , [float] a [, [float] b [, [float] c [, [float] d]]]) -2.0~2.0 フラクタルブラウン運動
[float]RidgedMultifractal([float] oct , [float] offset , [float] gain , [float] a [, [float] b [, [float] c [, [float] d]]]) -2.0~2.0 リッジマルチフラクタル

ノイズを取得できるメンバ関数の全ての引数b , c , dは、省略が可能で、省略時はコンマも必要ありません。
省略された引数は0.0が使用されます。
最大値は1024

Noise(a [, b [, c [, d]]])

戻り値は、0.0~1.0

例えば、Noise(a)は、下のグラフの様になります。

Noise_01

SNoise(a [, b [, c [, d]]])

戻り値は、-1.0~1.0

例えば、SNoise(a)は、下のグラフの様になります。

Noise_02

Noise/SNoise

Noise_11

Turbulence(oct , abs , a [, b [, c [, d]]])

oct 0.0~20.0 オクターブ
abs TURE / FALSE 返り値 TRUE:0.0~2.0/FALSE:-2.0~2.0

例えば、Turbulence(4.0 , FALSE , a)は、下のグラフの様になります。

Noise_03

Turbulence

Noise_10

Fbm(oct , a [, b [, c [, d]]])

oct 0.0~20.0 オクターブ

戻り値は、-2.0~2.0

例えば…
InitFbm(5.0 , 0.5)で初期化
Fbm(4.0 , a)は、下のグラフの様になりました。

Noise_04

Fbm

Noise_12

正直なところ、初期化InitFbm()の引数との関係が、把握できませんでした。
ただ闇雲に数値を渡せば良い、と言う訳にはいかないようで…
もう少し、学習します。

RidgedMultifractal(oct , offset , gain , a [, b [, c [, d]]])

oct 0.0~20.0 オクターブ
offset ??? オフセット
gain ??? ゲイン

戻り値は、-2.0~2.0

InitFbm(1.0 , 0.5)で初期化
RidgedMultifractal(5.0 , 1.0 , 0.0 , a)は、下のグラフの様になりました。

Noise_05

RidgedMultifractal

Noise_09_2

正直なところ、これも初期化InitFbm()の引数との関係が、把握できませんでした。
もう少し、こちらも学習します。
SDKによると、-2.0~2.0のハズなのですが、引数によっては、それ以上の数値が返ってくる場合があります。
渡した数値が想定外の数値だったのだろうか…

とりあえず、Noise/SNoise/Turbulenceは、そんなに頭を使わなくても使えそうです。
NoiseとSNoiseは、グラフを見る限り、同じ波形(SNoise = (Noise × 2.0) - 1.0)のようなのでNoiseとTurbulenceを覚えれば…。

XPressoのノイズノードの方が分かり易いのだろうか?
今回、Noiseクラスを使ってみるはずだったのですが、次回にします。

|

« C4D ユーザスクリプトをR9とR10以降に対応させる… | トップページ | C4D C.O.F.F.E.E. Noiseクラスを使ってみる。 »