2009年09月20日

プロシージャル・テクスチャリングでアート作品を作る

 ppt_00.JPG
テクスチャをプロシージャルに作成するには、多くの手法があります。
ここでは

 Game Programming Gems Vol.1
 4.1 フラクタル地形形成 - 断層形成

で紹介されていたを手法の実装結果を紹介します。
ppt_01.JPG

このアルゴリズムは、ハイトマップを対象とします。
(高さマップ、ここでは各ピクセルに実数が割り当てられている程度の意味)

@ フィールドに直線を引く。
A 直線の一方に、dHeight を加算して行く。

 (dHeight:加算する高さの値)

  = (オフセット値:定数) +
   (i:イテレーション番号)*(適当に決めた値:定数)/ (全印手レーション回数:定数)

B @〜Aをくり返す。このくり返し回数の番号がイテレーション番号。
以上の単純なアルゴリズムです。
ppt_02.JPG

Aのが、だんだんとスケーリングされて小さくなって行くので、フラクタルと筆者は言っているのか、
或いは、断片=フラクタル、という原義なのか、定かではありません。

調整パラメーターは、上記に挙げた定数と、イテレーション回数、そして、
ハイトマップ値の色の分配で模様が決まります。

ppt_03.JPG
ppt_04.JPG
ppt_05.JPG

ハイトマップとして捉えると、色の濃い部分が高い部分、薄い部分が低い部分です。
或いは、その逆に解釈して、ポリゴンマップに落とすことも可能です。

イテレーションを重ねて行けば、だんだんと分解能が細かくなって行って、
それなりに使えそうな地形マップが出来て来ます。
それでも、最初の断層の跡が残っているのが特徴です。
加算する高さによっては、よりはっきりと初期断層跡を残すことが出来るでしょう。 
ppt_06.JPG

ppt_08.JPG
もちろん、様々な解釈で、自由なテクスチャを作ることができます。

今回は、スムージングは、最終的な過程で各ピクセルの周囲の8ピクセルを
加算平均しているだけなので、よりくっきりと残ってしまっているので、よりぼかし方を
工夫すれば、自然に見えるようになるはずかと思います。


一定以上の濃さの部分を白、以下を青とすると、雲テクスチャらしいものも、
出来て来ます。
ppt_07.JPG

 サンプルコードを置いておきます。ハイトマップのプロシージャル生成のクラスだけです。
CELL の各値を、ピクセルのカラーとして出力する、
或いはポリゴンの各座標(代表点だけでもよい)として出力するようなコードに組み込むと、
よいかと思います。

RandomMap.h
RandomMap.cpp
posted by miyayou at 16:27| Comment(2) | TrackBack(0) | 日記
この記事へのコメント
あなたの観点を、私は非常に気分になります
Posted by 奈美子 at 2013年07月22日 14:27
あなたのブログ私教育だ。
Posted by 吉成\ at 2013年07月24日 18:59
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/32273373
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック