feature image

2020年11月20日 | ブログ記事

プロシージャルの世界へ~NovemberはNodevember~

この記事はtraPアドベントカレンダー2020 7日目(11/20)の記事です。


19のでっていう(@d_etteiu8383)です。普段は3DCGで遊んだりしてます。本記事ではBlenderにおけるプロシージャルマテリアルNodevemberというイベントについてご紹介したいと思います。

なお、この記事ではBlenderのノードエディタの細かい操作の解説はしていません。あくまでもプロシージャルの概念の紹介に留めた記事となっているので、具体的な操作方法や制作過程を知りたい方は別の記事をご覧ください。

11月ですね

突然ですが本日11月20日が何の日だかご存じでしょうか?そうです、真中らぁらさんの誕生日ですね。

真中らぁらって誰?

真中らぁらとはプリティーシリーズ第2弾にあたるトレーディングカードアーケードゲーム『プリパラ』の登場人物、およびこのゲームを原作としたタツノコプロ・DONGWOO A&E制作による同名のアニメ作品の主人公です。愛媛なおさんも誕生日おめでとうございます。

プリティーシリーズって何?

プリティーシリーズとはタカラトミーアーツおよびシンソフィアが共同開発しているアーケードゲーム『プリティーリズム』『プリパラ』『キラッとプリ☆チャン』や、これらのスピンオフ作品・メディアミックス作品をまとめた名称です。

100円玉を握りしめ、ムシキングカードを収めたファイルを抱え、オシャレまほうカードを収めたファイルを抱え、ゲームセンターを駆けた記憶があなたにもあるのではないでしょうか。大型甲虫が欲しかった、ラブ派だった、ベリー派だった、友達とカードを交換した、学校にムシカードを持ち込み没収された――そんな思い出があなたにもあるのではないでしょうか。
セガが生んだ子供向けトレーディングカードアーケードゲームの大ブームはとどまる所を知らず、競合他社でも続々と同様のゲームが開発されました。その中で2010年に『プリティーリズム』、2014年に『プリパラ』、2018年に『キラッとプリ☆チャン』が誕生しました。いずれのゲームもコーデアイテムを集めてかわいく・かっこよくキャラクターをコーディネートして遊ぶゲームです。メディアミックス作品として各シリーズのアニメも放映されており、現在はキラッとプリ☆チャンのアニメが放映されています。この機会にぜひプリティーシリーズに触れてみてはいかがでしょうか。

それはそれとして(本来真中らぁら生誕祭に絡めた内容にする予定でしたが内容変更)11月も終盤に差し掛かりましたが、皆さんはNodevemberというイベントをご存じでしょうか?

Nodevemberとは?

Nodevemberとは、毎年11月(November)に行われるいいかんじのプロシージャル作品を作りまくるお祭り期間のことです。

Nodevember is all about procedural awesomeness!
Challenge yourself to improve and show off your procedural skills.
Anything procedural is welcome. If you can call it nodes, you can call it Nodevember!(公式サイトより引用)

Nodevember
The yearly event for everything procedural

毎日提示されるお題に沿った作品をSNSに上げよう!という自身の技術向上を目的としたイベントで、作品の優劣をつける大会のようなものではありません。

...プロシージャルってなんだ......?

プロシージャル(Procedural)とは?

聞き慣れない単語が出てきましたね...「Procedural」は日本語で「手続き」という意味を持つ単語です。3DCG分野においては、"ある特定の手続きの組み合わせ"を行うことで半自動的に3Dモデルやテクスチャを作成することをプロシージャルと呼んでいます(少なくともこの記事ではこれをプロシージャルの定義とします)。もう少し具体的にプロシージャルの概要(特にプロシージャルテクスチャ)とその利点を見てみましょう。

例えばよくある例として、一枚の黒いパネルに白い円を描いた3Dモデルが欲しいとします。よくありますね。この程度ならペイントソフト等を用いて作れば解決するかもしれません。実際にFigmaというソフトを使い、256px四方の黒背景に半径100pxの白い円を描いてみると以下のようになりました。

256 x 256 px の黒背景に 200 x 200 px の白い円を描いたpng形式の画像

しかしこれを実際にテクスチャとして使用してみると...

上の画像をテクスチャに設定したパネル

遠くから見れば気にならないかもしれませんが、解像度の低さが少し気になりますね。
さらによくある例として、ドット柄のテクスチャが欲しい時にラスター画像を使用すると...

256px四方の背景に白い円を並べた

一つ一つの円の半径が小さくなると解像度の低さがより際立ってしまいます。もちろんテクスチャとして使用する画像の解像度を上げればいいのですが、もう少しクレバーな方法を考えたいですね...

ここでプロシージャルテクスチャを利用してみましょう。blenderにおけるプロシージャルテクスチャは、ノードを使用したマテリアルにより利用できます。今回の例では、以下のようなノード(手続き)をつなげることでパネルの中央に円を描くことができます。

円を描くノード

左から順に各手続きを説明すると、

  1. UV座標を取得
  2. UV座標上の各点について、点(0.5, 0.5, 0)との距離を計算
  3. 計算した距離が 0.4 より小さいなら 1 を、大きいなら 0 を返す
  4. 入力された値が 1 なら白色を、0 なら黒色を返す
  5. 渡された色を表示する

このような手続きの組み合わせ(ここがプロシージャル)を行うことで、以下のようなテクスチャが得られます。

プロシージャルテクスチャで作成した円

プロシージャルテクスチャはレンダリング時に計算が行われることで生成されるため、実質無限の解像度を持ちます。そのため画像テクスチャでは実現できなかった解像度に縛られない表現が可能です。例えばカメラすぐ近くで表示させたいオブジェクトに対して有効です。

さらに、各種手続きのパラメーターを調整するだけで出力を変えることができるのもプロシージャルの強みです。上の円を描く例では、3番目の手続きの閾値を変えるだけで円の半径を変えることができます。欲しい出力の数だけ画像テクスチャを用意していてはきりがありませんがプロシージャルなら大丈夫。

プロシージャルテクスチャが持つもう一つの利点は、規則性を持った表現に強い点です。手続きによって生成されるという仕組み上、繰り返しや法則を持った模様を作るのが非常に簡単です。例えば下図のような手続きの組み合わせにより...

正六角形による平面充填の利用

正六角形による平面充填も計算により可能です。これを手描きしろと言われたら大変ですし計算させるに限ります。
これを利用すれば...

このようにホログラムでいい感じのシールドみたいなものを作れたり。

あるいは「不規則な値を与える」という手続き(ノイズ)を利用すれば

五秒で地面っぽくなったパネル

手軽に地面のような表現ができたりします。もっといろいろ組み合わせれば...

赤い惑星・人工大地っていいよね

完全プロシージャルで世界を作ってみたりできちゃいます。幾何学的な模様に強いのは当然ですが、そもそもこの世に存在する物の大体は物理法則という規則の下で生まれたものなので、自然の物も結構表現しやすかったりします。手続きの組み合わせで世界を表現するプロシージャル、少し面白いと思いませんか?

プロシージャル(テクスチャ)まとめ

プロシージャルな制作が可能なソフトとして、以下のソフトが挙げられます。

このほかにも様々なソフトで制作が可能です。

改めて...Nodevemberとは

さて、ここまで読んでいただいた方には何となくプロシージャルについて理解していただけたかと思います。改めてNodevemberについて紹介しましょう。

...と言っても公式サイトに書いてあることがすべてなので一度公式サイトもご覧ください。要約すると、

Twitterで"#nodevember"と検索すると数々の変態的作品を見ることができます。プロシージャルな制作未経験の方も、まずはいろいろな作品を眺めることから始めてみてはいかがでしょうか?

↓私のDay2のお題"Candy"の作品ではディスプレイスメントという魔術を使って形状自体もプロシージャルにつくっています。

↓Day24のお題"Game"の作品では「規則的」かつ「ランダム」要素も持つゲームとして真っ先に思い浮かんだThe Witnessというゲームのパズルを再現してみました。

最後まで読んでくださりありがとうございます。

明日の担当者は@Hmcmchさんです。たのしみ~

d_etteiu8383 icon
この記事を書いた人
d_etteiu8383

グラフィック班とゲーム班とSysAd班所属 いろいろ活動しています

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2023年4月17日
ポケモンを飼いたい夢を叶える
tqk icon tqk
2020年12月4日
【一緒に始めよう】VSTプラグインをつくる【AdC2020 21日目】
liquid1224 icon liquid1224
2021年9月6日
【Blender】1ポリゴンで(大嘘)ポリゴン2を作る【Vector Displacement】
d_etteiu8383 icon d_etteiu8383
2020年12月17日
一人でゲームを作ったハッカソン【AdC2020 34日目】
Komichi icon Komichi
2020年11月19日
ICPC国内予選2020参加記【AdC6日目】
tatyam icon tatyam
2023年7月11日
BlenderのGeometryNodesでBrainf*ckを実行しよう
d_etteiu8383 icon d_etteiu8383
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記