助けが必要です。私は頭を悩ませてきましたが、これらに似た形状(ライトバースト、グリマー、太陽光線など)をプログラムで生成する方法の良いコード例を見つけることができないようです.
ここで本当に助けが必要です。似たようなものを作成するのに役立つコードを使用して、誰かがいくつかの例をオフにすることはできますか?
C++ に似た言語を使用しています。
助けが必要です。私は頭を悩ませてきましたが、これらに似た形状(ライトバースト、グリマー、太陽光線など)をプログラムで生成する方法の良いコード例を見つけることができないようです.
ここで本当に助けが必要です。似たようなものを作成するのに役立つコードを使用して、誰かがいくつかの例をオフにすることはできますか?
C++ に似た言語を使用しています。
これらはすべて、中心が明るい光の中心のように見え、移動すると、フェード (暗くなる) と拡散 (さらに広がる) の両方になります。
r
フェードするには、 (距離)の関数によって最大強度からライトをスケーリングする必要があります。1/r
物理的には、これはorのようなものです1/r^2
が、あなたの場合、指数関数的e^(-r)
または線形フェードを使用すると、より運が良くなる可能性があります1 - a*r
効果の主要な側面は拡散です。完全なレイトレーサーを構築する以外に拡散をエミュレートする最も簡単な方法は、回転軸に沿って線形ガウス ブラー(または単純な平均化ブラー) を適用することです。たとえば、r = 3、シータ = 0.5 の拡散点は、r = 3、シータ = 0.4 と r = 3、シータ = 0.6 の間の非拡散点の平均である可能性があります。ぼかし関数の「ウィンドウ」が でスケーリングされる場合、最良の効果が得られますr
。つまり、 が大きいr
ほど、平均化ウィンドウが大きくなるか、ガウス ブラーのシグマが大きくなります。
最後に、拡散の前に、シータ変化透過関数によってビームが回転的に「フィルター処理」されたように見えます。つまり、フィルターを「逃げる」ビームの量は角度の関数です。この関数はいくらかランダム化されているように見えますが、明らかな構造があります (つまり、単純なホワイト ノイズではなく、明暗の帯)。これは、構造を持つランダム データを生成するPerlin Noiseの最適な候補です。パーリン ノイズ アルゴリズムで、この構造の細かさをカスタマイズできます。これが、あなたが示した 3 つの写真の違いです。
要約すると:
まず、非分散分布を計算します。
f(r,theta) = 1/r (またはその他のフェージング) のフェード ボールを開始します。
退色する光の球にノイズの多いフィルター関数 p(theta) を掛けます -- ただし、特定の半径を超えたポイントに対してのみ可能です (その白い球が中央にあるようにするため)。
次に、放射状に成長するぼかしウィンドウですべてを分散させます
おそらく、すべてにホワイト ノイズ グレインを追加します。
これは、これらを生成する 1 つの方法にすぎないと思います。他にもあるかもしれませんが、良いスタートになるかもしれません。