ウソの新居ができるまで(Blender)
2021/03/27sititou70です.大学を無事卒業し,4月から東京で社会人をします.
修士論文の提出から入社式までの数週間,普通なら友達と卒業旅行にでも出かけるところですが,あいにくとコロナウイルスの影響で旅行は自粛ムードですし,そういえば一緒に出かける友達もいなかったということで,暇過ぎてBlenderで新居を作りました.
製作期間は17日間くらいでした.Cycles on Blender 2.91 on Windows 10 on i5-10210Uで制作しました.
Step 1:モデリング
3D空間に形状を描いていきます.リビングルームのシーンでは部屋中を家具で埋め尽くす必要があるので,有料のストックオブジェクトを買うなどして楽をするのが一般的です.しかし,今回は暇つぶしが目的なので,すべて1からモデリングしました.
1. 壁,床,窓
不動産屋さんからもらった新居の間取り図をBlenderの下絵機能に読み込んでモデリングしました.Blenderの単位系をメートルに設定し(2.90からはデフォルト),オンライン内見の際に測ってもらった寸法も参考にして作りました.
2. 直線的な小物
ThinkPad(PC)
大好きなので無駄に凝ってしまいました.
椅子
Amazonで「ゲーミングチェア」と検索します.適当な製品を1つ選んで商品ページに行くと,たいてい寸法情報の画像があるので,それをもとにモデリングしました.
机,ゴミ箱,時計,コンセント,ピンチハンガー,エアコン,何らかの台,何らかの壁の装飾
もりもりと作っていきます.
3. 曲線的なもの
盆栽
最近,盆栽を眺めていると落ち着くということに気づきました.私は新卒ですが,本質的にはおじいちゃんなのかもしれません.
葉っぱのモデリングは適当です.細かな輪郭はテクスチャで補うので問題ないです.
茎には植物特有のゴツゴツをスカルプトで描いておきました.
盆栽を入れる鉢は球体をスカルプトでコネコネして作りました.これが陶芸です.
茎と鉢をスカルプトしたあとは,どちらもデシメートモディファイアで頂点数を削減しておきます.私のPCはあまり性能が良くないので.エコですね.
カーテン,掛け布団,ラグカーペット
布関連の制作には,Blenderのクロスシミュレーションを使いました.これによって,実際にカーテンを閉めたり,掛け布団をベッドに落としたりしてリアルな布の形状を作りました.物理演算ってすごい.
仕上げに,細かなシワをスカルプトで描きました.
以上,過去最多のオブジェクト数となりました.
全部で95,758頂点でした.
Step 2:マテリアルの設定
ここまででモデルの「形」は完成しました.ここからは鉄,プラスチック,布といったモデルの「材質」を決めていきます.
近年の3DCG制作では,基本的にはPBRのワークフローにしたがっておけば勝手にフォトリアルな結果が得られます.PBR(physically based rendering)とは,実際の物理法則をもとに作られたシェーダー(ポリゴンにあたった光の反射などを計算するモデル)であり,12個のパラメタの組み合わせによって現実にあるほとんどの素材を表現できてしまいます.
出典: Principled (プリンシプル) BSDF—Blender Manual
PBRの基礎となる理論は,SIGGRAPH 2013という学会で,あのピクサーから発表されました(論文:Physically Based Lighting at Pixar).元気な電気スタンドでおなじみの会社ですね.なんでもシュガー・ラッシュを制作するために必要だったとか.ありがとうシュガー・ラッシュ.おかげで私の新居がフォトリアルになります.
というわけで,このPBRシェーダーにPOLIIGONやTEXTURE HAVENが無料配布しているテクスチャをぶっ挿せば,それだけでフォトリアルなマテリアルが作れます.ここでは,特にこだわった盆栽のマテリアルについて詳しく紹介します.
盆栽の木
ベースとなるPBRマテリアルには,TEXTURE HAVENの bark_brown_02を使わせていただきました.
いろいろな植物を観察したところ,根っこのほうがゴツゴツしていて,枝先のほうはつるつるしています.多分植物の成長過程に関係するのだと思いますが,詳しくはわかりません.ともかく,z位置が大きくなるほどディスプレイスメントが弱くなるように制御しました.これによって,(擬似的にですが)枝の先に行くほどつるつるするようになります.これは以前「Blenderで20世紀F○X風のOPを作る」で光の筋を作成するために使った方法と同じです.
また,観察の結果「根っこの部分はなんか黒い」ということもわかりました.以下は実際の根っこです.
なんか黒いですね.そこで,根っこの近くを表すマップも作って,ベースカラーを黒っぽく制御しました.
盆栽の葉
葉っぱマテリアルのベースとなったのは以下の画像でした.
出典: Leaves - Leaf Texture Free, Transparent Png
これはPBRマテリアルではないので,シェーダーの諸々の値をよしなに設定してやる必要があります.
ラフネス(粗さ)に関しては,勘で いい感じの値にしておきます.
植物は小さな細胞が集まって出来ているので,光の内部散乱を再現するためにSSS(Subsurface Scattering)をやんわりと設定しておきました.
ディスプレイスメント(表面の凹凸)について,実際の葉っぱを観察していると,葉脈の部分が盛り下がっている感じがしました.そこで,ベースカラーのコントラストをいじって葉脈を取り出し,それをディスプレイスメントマップとしました.
葉っぱの先端の色が少し赤っぽくなっているのにも気づきました.葉っぱの先端マップを画像編集ソフトウェアで作成し,ベースカラーを制御することにしました.
最後に,オブジェクトのランダム情報を使ってベースカラーの色相を微妙にバラけさせました.実際の植物も,それぞれの葉っぱは微妙に色が違います.これによってリアル感が一気に増します.
Step 3:環境の設定
Blender 2.90から,「西田の大気モデル」が使えるようになりました.
これは,太陽の高度や角度,大気中のチリの量などからリアルな環境マップを作り出せるモデルです.このもととなる理論はSIGGRAPH 1993で東京大学の西田友是教授らによって発表されました.西田さんはCG分野のノーベル賞とも呼ばれる クーンズ賞 や 紫綬褒章 を受賞している人です.やっば.1993年に発表された理論が2020年に実装され,そうして今,めでたく私の自宅を照らしていると思うと感慨深いものがありますね(?)
レンダリング結果をTwitterに投稿する当日の,東京での太陽高度の変化を調べて,グラフエディタのカーブをおおまかに一致させました.
出典: 右のグラフは太陽高度(一日の変化) - 高精度計算サイトで計算したもの.
Step 4:ポストプロセスの設定
こちらが今回のポストプロセスの全体像です.
今回は,AIを用いたデノイズ処理という新しい取り組みを行ってみました.
AIによるデノイズ処理
Blender 2.81から搭載され,一部でGame Changerだと話題のIntel Open Image Denoiseは,AIによるデノイザー(ノイズ除去機能)です.3DCGの世界にもAI技術が浸透してきているなんて,世の中は進んでいるなぁという気持ちです.
フォトリアリスティックCGの世界では,ノイズの量とレンダリング(光の挙動を計算して画像を得る処理)にかかる時間はトレードオフの関係にあり,レンダリングの時間をケチると得られる画像のノイズが増えてしまいます.しかし,たとえレンダリングをサボってノイズが多い画像でも,デノイズ技術によってノイズを除去できれば,レンダリング時間の大幅な短縮になります.
以下がIntel Open Image Denoiseの威力です.
は?意味不明です.見事にノイズが消えています.特に1 sampleのrawなんてボロボロです.古典的画像処理ではどう頑張ってもノイズを除去できるとは思えません.今回の技術は AIがそれっぽい画像を生成している という印象です.低サンプルにもかかわらずここまでの画像が生成できるのはヤバいです.デノイザーは元画像,法線情報(法線ベクトル を に格納したやつ),アルベド(マテリアルのベースカラー?)の3つの画像を使ってノイズがない画像を生成しているみたいです.仕組みは謎です.
一見無敵に思えるIntel Open Image Denoiseですが, アニメーションに弱い という欠点もあります.このデノイザーは単一フレームでのデノイズしかしないので,連番画像を生成したときに細部が わちゃわちゃしてしまう という欠点があります(伝わりますか?).先ほどの完成動画でも,よく見ると暗部などがわちゃわちゃしています.この問題を解決する有償のソフトウェアもあるらしいのですが,今回は使いませんでした.
完成!
静止画像のレンダリングは128サンプルで行い,少しデノイズを抑えてあります.1枚あたり7分〜13分でレンダリングしました.動画は1フレームあたり64サンプルでレンダリングしており,デノイズ処理をフルにかけています.レンダリングには約26時間かかりました.
フォロワーを騙せるか?
レンダリングした画像のうち1枚をTwitterやFacebookに投稿してみて,実際の写真であるとフォロワーを騙せるか試してみました.
新居~ pic.twitter.com/3p5c8RoRvS
— 七十 (@sititou70) March 19, 2021
反応をみると,おおよそ5割くらいの人には写真であると感じていただいたようで嬉しいです.しかし,残りの半分の人にはCGであるとバレてしまいました.
まず, 「sititou70(筆者)の部屋にしてはおしゃれすぎる」 とか 「こんなかっこいい部屋にsititou70が住むわけない.もっとジメジメした場所に住みそう」 といったニュアンスの意見をいただきました.失礼な.とはいえ,あとから思い返してみるとプロジェクトの方向性がブレていたなぁと感じます.最初は「フォトリアルな画像を作ろう」と思っていましたが,作っているうちに愛着が湧いてきて「どうせだったらかっこよくしよう」となってしまいました.行きあたりばったりで作るからこういうことになります.
次に 「なんか生活感がない」 という意見ももらいました.うーん,確かにそうかも.もっと日用品で部屋を埋めたほうが良かったのかもしれません.しかし,実際の私の部屋もこんなもんですよ.オシャレではないですが物が少ないです.私は趣味も友達も少ない人生スッカスカ人間なのでこれで正しい気もしますが,作品としては違和感があったようですね.
また, 「部屋の立地が良すぎる」 という意見がありました.窓の外に高層ビルが写っていますが,これは「東京 都市 景観」で検索した適当なフリー画像に適当なマテリアルをあてたものです.流石に雑すぎました. 「この風景って新宿だよね?しかもこの見え方だと相当高い階にある部屋だから,家賃だと月20万円前後するんじゃない?新卒でそんなところ住めるの?」 というように特定してくる人もいて,だいぶ怖かったです.
さらに, 「布団のシワが変」 という意見をもらいました.たしかに今見ると不自然ですね.もっと布団を観察するべきでしたし,そもそも私のスカルプト能力がザコでした.
最後に,これは誰からも指摘されなかったのですが,一部のUV展開がおかしいです.探さないでください.
というわけで
久々に大きなプロジェクトを作ってみましたが,まだまだ課題は多そうですね.
とても楽しかったです.