void  vnoise(float position, float jitter, int &seed, float &f1, float &f2, float &pos1, float &pos2)
                    
                    
                
            
1Dノイズを生成します。
                
                    
                    
                    
                        void  vnoise(float position, float jitter, int &seed, float &f1, float &f2, float &pos1, float &pos2, int period)
                    
                    
                
            
周期1Dノイズを生成します。
                
                    
                    
                    
                        void  vnoise(float posx, float posy, float jittx, float jitty, int &seed, float &f1, float &f2, float &pos1x, float &pos1y, float &pos2x, float &pos2y)
                    
                    
                
            
2Dノイズを生成します。これは、他の形式と同様ですが、vectorではなくfloatのペアを使用します。
                
                    
                    
                    
                        void  vnoise(float posx, float posy, float jittx, float jitty, int &seed, float &f1, float &f2, float &pos1x, float &pos1y, float &pos2x, float &pos2, int periodx, int periody)
                    
                    
                
            
周期2Dノイズを生成します。
                
                    
                    
                    
                        void  vnoise(vector position, vector jitter, int &seed, float &f1, float &f2, vector &pos1, vector &pos2)
                    
                    
                
            
3Dノイズを生成します。
                
                    
                    
                    
                        void  vnoise(vector position, vector jitter, int &seed, float &f1, float &f2, vector &pos1, vector &pos2, int periodx, int periody, int periodz)
                    
                    
                
            
                
                    
                    
                    
                        void  vnoise(vector position, vector jitter, int &seed, float &f1, float &f2, vector &pos1, vector &pos2, vector period)
                    
                    
                
            
周期3Dノイズを生成します。
                
                    
                    
                    
                        void  vnoise(vector4 position, vector4 jitter, int &seed, float &f1, float &f2, vector4 &pos1, vector4 &pos2)
                    
                    
                
            
4Dノイズを生成します。
                
                    
                    
                    
                        void  vnoise(vector4 position, vector4 jitter, int &seed, float &f1, float &f2, vector4 &pos1, vector4 &pos2, int periodx, int periody, int periodz, int periodw)
                    
                    
                
            
                
                    
                    
                    
                        void  vnoise(vector4 position, vector4 jitter, int &seed, float &f1, float &f2, vector4 &pos1, vector4 &pos2, vector4 period)
                    
                    
                
            
周期4Dノイズを生成します。
            
                position
ノイズをサンプリングする位置。
            
                jitter
            
            
        
各軸のノイズに追加するランダム量。
            
                seed
最も近いシードポイントに関連付けられた整数値を出力します。このシードは、すべての点に対して固有であることがほぼ保証されています(つまり、近い2点に同じシード値が関連付けられることがほぼありません)。
            
                pos1, pos2
            
            
        
これらの変数には、近い順に、2つの一番近いシードポイントの位置が上書きされます。
            
                f1, f2
            
            
        
これらの変数には、近い順に、最も近いシードポイントまでの距離が上書きされます。
これらの距離を組み合わせてノイズパターンを生成することができます。生成されるノイズは、性質上、非常に“細胞っぽく”なる傾向があります。
    実際に、良い事の1つは、if (f2 - f1)のエクスプレッションを使用することで“細胞”の境界を決めることができます。if (f2 - f1)は、空間内のポイントが2つの細胞間の境界を超えるとtrueになります。
            
                period, periodx, periody, periodz, periodw
            
            
        
periodの引数を含めた場合、その関数は、反復(周期)ノイズを生成します。
ボロノイノイズは、Worleyノイズ関数(wnoise)とほぼ同じ結果を生成します。 しかし、ボロノイノイズ関数は振動させることができ(つまり、ポイントを空間内にランダムにばら撒くことができます)、 さらに、2つの一番近いシードポイントの実際の場所を返します。それに対しwnoiseは、2つの一番近いシードポイントまでの距離だけを返します。
この関数はwnoiseよりも若干処理が重いですが、実際のポイント位置を返すので、Worleyノイズのいくつかの欠点を克服することができます。 例えば、以下のコードは、セル境界に沿って均等な境界を取得します:
if (f2 - f1 < tolerance * (distance(p1, p2) / (f1 + f2)) ...
このコードは、2つのランダムな空間内のポイント間の距離に基づいて境界幅を“正規化”します。
vnoise()には、周期的な形式の関数もあります。
Examples ¶
// 1Dノイズ float fp0, fp1, p1x, p1y, p2x, p2y; vector vp0, vp1; vnoise(s*10, 0.8, seed, f1, f2, fp0, fp1); vnoise(s*10, t*10, 0.8, 0.8, seed, f1, f2, p1x, p1y, p2x, p2y); vnoise(P*10, {.8, .8, .8}, seed, f1, f2, vp0, vp1);
| See also | |
| noise |