種を蒔いて育てるプロシージャル・テクスチャ「Cellular Texture」
プロシージャル・テクスチャ生成手法としては、この他、「Cellular Texture Generation」というメソッドもある。これは和訳するならば「細胞テクスチャ生成」となるだろうか。
この手法も考え方としては反応拡散系とよく似ている。
まず、対象の3Dモデルの表面に"種"となるパーティクルを配置して、そのパーティクルの振る舞い(ルール)を定義しておく。
種パーティクルの振る舞いとは、具体的には、成長したり、死んだり、あるいは増殖したり、食い合ったり、合体したり……といったものになる。実行時は、それぞれの種パーティクルについてその周辺の種パーティクトの関係性に配慮した形で、そのルールを反復的に適用していく。
下図は、その概念をフロー図として解説した物だ。
論文はカリフォルニア工科大学のKurt W. Fleischer氏とDavid H. Laidlaw氏らによって発表されており、カリフォルニア工科大学のサイトには論文がアップロードされている |
ちなみに、ここでいっているCellular Textureの「テクスチャ」は、いわゆる3Dグラフィックスでいうところの「テクスチャ」マップではなく、一般用語の「質感」という意味になっている。なので、この論文を発表したKurt W. Fleischerd氏やDavid H. Laidlaw氏の実装でも、生成した"質感"をジオメトリ化して、これをレイトレーシングでレンダリングしている。リアルタイム3Dグラフィックスで用いるためには、ハイトマップ化してディスプレースメントマッピングを行ったり、ボリュームテクスチャ化して局所的なレイトレーシングを行ったりして実装する必要がある。
この細胞テクスチャ生成法の事例として以下に、「鱗の生成」「棘の生成」「毛の生成」の例を紹介しておこう。
鱗の生成では、まず対象3Dモデルの表皮に対し、種パーティクルを覆うように配置し、若干斜めになるようにこの種細胞を成長させる。3Dモデルの表皮から離れすぎたところで細胞の成長は止まるようにする。
棘の生成自体は種細胞を棘になるような成長モデルで成長させる点は、前出の鱗と同じだ。
なお、この例では、この種細胞の表面上での他者の種細胞との関係性に反応拡散を導入することで棘の生え方にバリエーションを与えられることを示している。左端は、成長した棘の回りには棘が育たないというような反応拡散の結果。中央は、育たなかった棘がみっしゅしている例。右端は棘の成長をカールするように仕込んだ例となる。
毛の生成は、棘の生成の別バージョン的な位置づけのもので細胞の成長をより細く実行したものだ。図の左は隣接する毛と成長する方向を同じにする調整で生やした毛で、右の図は毛の方向をあえて隣接する毛とは違う方向へ成長させた例になっている。毛の元となる種細胞はこの例では2000個ほど敷き詰めているという。
繰り返しになるが、細胞テクスチャ生成法は、考え方と実行工程そのものが反応拡散系のプロシージャルと似ている。しかし、種パーティクルを3Dオブジェクト状に配置して3Dで考えている点で、結果がある程度予測できる形となる。反応拡散をある程度、手懐けたのが細胞テクスチャ生成法……といったところか。
また、テクスチャと3Dモデルを1対1に対応づけて考えられた技法なので、適用したテクスチャが引き伸ばされたりすぼめられたりといった歪みがなく映像としての品質が高い点も特長とされる。DCCツールのプラグインとして実装すれば、かなり便利に使えるかもしれない。
生物成長モデルで貝モデルをプロシージャル生成する
細胞テクスチャ生成法は、いわば生物的な成長をシミュレーションしたプロシージャル技術といえた。
これに関連した例として、こうした成長モデルを応用して3D形状モデルをプロシージャル生成しようという研究例も出てきている。
連載第82回で紹介したL-SYSTEMで植物をプロシージャル表現したカルガリー大学のPrzemyslaw Prusinkiewicz教授の研究を取りあげたが、同じ研究グループのDeborah R. Fowler氏らが「貝」の3Dモデルのプロシージャル生成についての論文を発表しているのだ。
この方法では、初期の種(細胞)モデルを用意し、これを徐々に大きくしつつ、回転軸(図中のZ軸)に対して回転させながら成長させていくことを行う。すると、その軌跡が貝の3D形状モデルとなるのだ。
さらに、この表皮の模様を、前出のギーラー・マインハルト反応拡散などの反応拡散系の処理で生成している。
貝が登場する3Dゲームはなかなか少数派だが、このアプローチで、クリーチャーや宇宙船などをプロシージャル・デザインするのは面白そうだ。(続く)
(トライゼット西川善司)