仮眠プログラマーのつぶやき

自分がプログラムやっていて、思いついたことをつぶやいていきます。 2025年からzennに移行

自作ゲームやツール、ソースなどを公開しております。
①ポンコツ自動車シュライシュラー
DOWNLOAD
②流体力学ソース付き
汚いほうDOWNLOAD
綺麗なほうDOWNLOAD
③ミニスタヲズ
DOWNLOAD
④地下鉄でGO
DOWNLOAD
⑤ババドン
DOWNLOAD
⑥圧縮拳(ツール)
DOWNLOAD
⑦複写拳
DOWNLOAD
⑧布シミュレーション
DOWNLOAD
⑨minecraft巨大電卓地形データ
DOWNLOAD
⑩フリュードランダー
デジゲー博頒布α版
DOWNLOAD
⑪パズドラルート解析GPGPU版
DOWNLOAD
⑫ゲーム「流体de月面着陸」
DOWNLOAD

2010年06月

パーリンノイズアルゴリズム 前編

Perlin noiseのことを最初適当に知ろうと思ってwikipediaをのぞいてみたが、なんかあんま参考にならん・・・ページの下に関連リンクがあったので覗いてみた。

生成方 

KEN 

(2019/12現在リンク切れ)

図やグラフから文章を推測するというなんとも奇妙な解読法で、なんとか理解したような気がした。



実際プログラムするときは上の生成方のHPが参考になった。

ではわかったことだけでもまとめていきたいと思う。


Perlin noise と普通のnoiseの違い (導入)

以下の話は全てパーリンノイズではなくバリューノイズというやつでした。すみませんでした。パーリンノイズは近日中にコード載せます。

定義の話とか面倒なので具体的な話から・・


ノイズ関数とパーリンノイズ関数があったとしよう。


ノイズ関数・・・noise(a)

パーリンノイズ関数・・・Pnoise(a)

 

2つの関数は-100~100までのどれかの整数値を返すとして

aに0,1,2,3,4・・・と代入していき、それぞれの関数からどんな値が返ってくるか。



noise(a)はというと・・・

61,-79,24,-10,-31,95,7,56,-88,-12,8,-47


Pnoise(a)はというと・・

36,22,-19,-14,-45,-50,-38,12,52,59,59,53,69,89



ノイズ完全にランダム。ばらついてる。規則性がない。


パーリンノイズ規則性が見えないけどちょっと連続しているような・・・。ランダムに見えて不自然にばらついてるようなランダムではない。


a(0,1,2,3…)に、関数の返り値に取ったグラフが下だ。
 



noise(a) の値

31b08ed0.png 

Pnoise(a)の値

e8644708.png

こうやって見ると一目瞭然である!
(もしや・・・Pnoise(a)は、グラフの微分係数をランダムな値にすればできるのでは?って思うかもしれないけどそうでもない!ま、具体的なPnoise(a)関数の生成方は後にして・・・)


パーリンノイズの特徴はなんといっても、山の起伏のような、自然なばらつきがある雰囲気を出せることなのだ。


このPnoise(a)関数を使えば年輪などの模様ゆらぐようなテクスチャを作れるって言う、ちょっと想像もつかないような話なのだが、本当だ。




Perlin noiseの原理

バリューノイズの原理!


まずいきなり完成系の画像をお見せしよう!

02c458d3.png



これは以下のように作る


一番左の画像=ぼかす前&拡大前


0d6d9c92.jpg

80db9bc1.jpg


画像×6枚は、単にランダムな濃さの点を打って作成したノイズ画像である。


ただし6枚それぞれが、ドットの数というかスケールが違うのだ。



上から256ドット四方、128、64、32、16とスケールが2分の1ずつ小さくなっている。



なので一番左の画像枚数のことをオクターブと呼ぶ。


今回は6枚なので6オクターブと言うことになる。普通5~6である。


あまり少なくしても、細部のスケールが表現できなかったりするし、大きすぎても処理時間がかかるだけなので・・・



ぼかす処理はガウスぼかし等で。そしてぼかし終わった後できた256ドット四方の6枚の画像を加算合成するのだが、普通加算するときにブレンド率にpersistence(振幅の変化)を掛けて加算する必要がある。


つまり左の自家製の汚いイメージ図で言うと、上のほうの画像を弱く、下のほうの画像を強くして加算合成することで完成系ができあがるのだ。


「最初一番小さくて一番拡大する画像ほどpersistenceは大きく、一番拡大しない画像ほどpersistenceを小さくして加算することが重要!」



具体的に言うと、拡大しない画像ほどブレンド率2分の1ずつに減っていくのが理想の形!


上の画像は1.8分の1なので約2分の1と言える。


次回:パーリンノイズアルゴリズム 後編

裏機能というほどでもないが

なんか複写拳が好評でよかった・・・実は内心ハラハラしてた・・・使えるソフトって期待させておいてVICTORのソフトのほうが使えるじゃん、ってなりそ-とか考えていたけれど、心配しすぎたかな



今日は複写拳の裏機能の公開をします!

俺のブログを見ている人限定ってことになります・・・いやそんな大した機能でもないんだけどね・・



圧縮拳でもあったように「system.txt」の中身を変更すれば、表では決して使えないような裏機能が使えます!



まずアドバンスモードon/offのところの下の行の数字を1にすれば、次回起動時にアドバンスモードで起動されます!


すると下のようにモザイクがかけられるようになります!


仮眠プログラマーのつぶやき


やりかたは、モザイクって書かれたチェックボックスにチェックを入れ、左ドラッグでその範囲がモザイクで処理されます!



まぁアドバンスモードはそれ以外にもいろいろ細部に変更があったりします!



そもそもなんで裏機能っていうこんなややこしいことするのかというと、

まず企画、開発の段階で 「プログラマーはこうしたいけどプランナーはこうしたい」 っていう衝突が起きるんです・・・絶対

で、だいたいそういう時って、どっちも譲らない!

すると、どちらも満足するような条件を満たすには、 裏機能って言う都合のいい逃げ道的な機能を用意して、そこに 「プログラマーはプランナーに支配されずにすき放題やれて、プランナーは表の機能に自分の思い描いた企画を通せる」 って言うことで、裏機能が搭載されるワケデス



あ、でも裏機能は俺が自分のブログで言わなければ誰にも気づかれないわけで、俺のブログはあんまり見られることがない・・・つまり裏機能はほぼ自己満足で終わってしまっている・・・っていう悲しい現実に今気づきましたorz




やべ騙された!

またあのプランナーにそそのかされた(怒


ああ忌々しい!


もうこうなったら次作るとしたら、裏機能を馬鹿みたいに高機能なものにして、俺のブログを見て裏機能に気づいた人に思い知らせてやる!!!!あまりの高機能さに、プランナーが企画した表機能が糞だと思えるほどに。よし、裏機能だけ有償ソフトなみのクォリティを目指すぞ!!表は巻きグソみたいな超ちょー低機能にしてやるぜwwククク

・・・・・・・いやゴメンなさい半分冗談です・・・・・・ちょっとプランナーにイチャモンつけすぎました・・



さぁ次回の拳シリーズは何をつくろうかな


プロフィール

toropippi

記事検索
アクセスカウンター

    QRコード
    QRコード
    • ライブドアブログ