Cyberpunk2077の反応レイヤー加工面頰を作るぽよ
CD Projekt REDが開発したアクションロールプレイングゲームのCyberpunk2077に登場する防具のひとつである反応レイヤー加工面頬を作る話
グーッモーニン、ナイトシティ!
みなさんはCyberpunk2077をご存知でしょうか.傭兵である主人公Vが未来の巨大都市ナイトシティを駆け巡る,その名の通りサイバーパンクな世界観のゲームなのですが,私はこのゲームが好きでこれまでにたくさんプレイしてきました.
このゲームで圧巻であるのはやはりそのビジュアルで,巨大企業の高層ビルとゴミ溜めが同居する街や性が強調された広告*1,道を行き交う多様な乗り物や当たり前に身体改造された人々*2などがつぶさに描き出されています.また,原作がTRPGということもあり,登場人物には様々なロールや派閥があり,それらがファッションスタイルにも強く表れています.例えばコーポ*3の人間が着ているような,洗練された企業と厳格な軍隊のイメージを持つネオミリタリズムや,都市部のギャングたちが好んで着るような,消費主義が行き着く派手でチープなキッチュなどです.
主人公のVも好きなファッションスタイルを楽しむことができるのですが,その中でも私が好きなのは,このキッチュな反応レイヤー加工面頬です.平安時代からあったともされる面頬がド派手な彩色でギャングたちの間で防具として蘇っているのは大変魅力的です*4.
今回はこの反応レイヤー加工面頬を実際のゲーム内のアセットデータを使用することで作成してみようと思います.
その前に……
CD Projekt REDはユーザが見やすい形でEULAとファンコンテンツガイドラインを公開してくれています.ゲームの登場人物であるジョニー・シルバーハンドの語り口で要約が併記されたEULAは,ゲームをプレイしたことのある人が読むととても楽しいものになっています.
ファンコンテンツガイドラインでは,スクリーンショットの共有やコスプレの小道具の作成,MODの作成などを,その余地も含めて明示的に認めてくれています.そもそもCyberpunk2077自体,REDmodというMODに公式に対応したゲームだったりします.このファンコンテンツガイドラインには,更にゴールデンルールというものがあり,
- 商業目的での利用禁止
- 「非公式」であることを明示する
あたりが特に求められるようなので,こちらの記事でも商業目的でなければ公式でもないことを明示しておきます.といってもごく個人的に身につけたいだけなのですが……!
当たり前といえば当たり前ですが,ファンコンテンツガイドラインではMODの作成を認めつつも,ファンコンテンツガイドラインより優先されるEULAでは技術的な不正行為*5やハッキングおよびチート行為*6が禁止されているあたり,ファンコンテンツガイドライン側に記載されている「節度ある範囲で」という言葉が身に沁みますね.これらの文書*7に目を通した上で,今回の制作物はガイドラインに沿った節度ある範囲のファンコンテンツであると判断しています*8が,もしお気づきの点がある方がいらっしゃれば教えていただけると幸いです*9.
制作
アセットデータのエクスポート
アセットデータのエクスポートにはREDengineで動作するゲームの非公式オープンソースMODエディターであるWolvenKitを使用します.WolvenKitを使用することで,通常は様々なデータを内包したいくつかのファイルとして存在しているゲーム用データを,ディレクトリ構造で閲覧し,各データを入出力できるようになります.ここでは,女性のプレイアブルキャラクターが身につける用の面頬の3Dモデル*10を特定*11して,gLTFファイルとしてエクスポートします.
Blenderでの加工
WolvenKitを公開しているRED Modding toolsの別のリポジトリではBlender用アドオンも公開されており,先述のgLTFファイルをインポートすることができます.
さて,今回は3Dモデルのメッシュデータを3Dプリントできる形にした上で実際に身につけたいと考えているのですが,ここで注意することは3点です.
1つ目は,ゲームの3DモデルにはしばしばCADモデルのような体積がないことです.つまり,組み合わされた面のデータでモデルが構成されているということです.そもそもゲーム内では現実空間のような体積を必要とせず,UV展開のし易さなどのアーティストの制作上のメリットなどもあるため,このようになっていることが多いです.Blenderで面を貼る加工を行うことで体積を持てる閉じたモデルにしました.なお,新規に貼られた面に対してもUVは展開されるので,UVの位置を適宜調整する必要があります.
2つ目は,バンプマップやノーマルマップで表現されるような見かけの細かな凹凸はメッシュには表れないということです.ゲームの多くの3Dモデルでは,法線情報を格納した画像データをテクスチャのように与えることでメッシュデータにはない細かな凹凸感をレンダリングで表現しています.ですので,現実空間のモデルで表現したい凹凸はすべてメッシュに与える必要があります.今回のモデルで言えば,特に面頬の牙はノーマルマップで表現されているので,この部分のメッシュはポリゴン数も少なく,つるつるになっています.
今回はNormalMap-Online*12を使用し,ノーマルマップをディスプレイスメントマップ*13に変換しました.次に,Blender上で3DモデルをSubdivideモディファイアを用いてハイポリゴンモデルに変換*14した上で,Displaceモディファイアを与えることで,ディスプレイスメントの情報をモデルの各頂点に反映し,彫り込みました.最後にDecimateモディファイアを付与することでポリゴン数を削減しました.なお,ディスプレイスメントマップに対してもUV展開がされているので,彫り込みによってプロポーションが崩れてほしくない部分については予めUVを調整するか,ディスプレイスメントマップ自体のデータを更に加工しておく必要があります.
3つ目は,ゲーム上でキャラクターが身につける3Dモデルであっても,実際に身に着けられるモデルになっているとは限らないことです.今回の3Dモデルは,おそらくビジュアルの効率性の関係で,裏面のポリゴンが顔面に食い込む位置にありました.ですので,裏面のメッシュは使用せず,表面のメッシュをベースにして裏面部分を作成することで顔面と干渉しない作りにしました.
詳細な手順は省きますが,基本的には以上です.
しかし,CG用のモデルでは意図せず穴が空いていたり,面同士が交差しているなどして,3DCADで読み込んだ際にデータを上手く扱えないことがしばしばあります.そこで,最後にRemeshモディファイアを使用してモデルを再構築することで,このような目立ったエラーを少なくすることができます.
Fusion360での加工
3DCADソフトであるFusion360に先述のモデルをインポートします.ヘッドバンドで面頬を顔面に固定できるよう,内側にPPベルトを通すためのループを追加で作成しておきます.
こちらのモデルをSTLファイルとして出力し,3Dプリンタで出力します.
3Dプリンタでの出力
私の部屋にあるZortrax M200で印刷しました.素材はABSです.
塗装
荒い目のやすりで積層痕を大まかに消して,サーフェスプライマーを塗布した後,やすりの番手を上げつつ滑らかにしていきます.3DプリントされたABSモデルに直に塗装を施す場合,残留応力とそこから発生するケミカルクラックが気になりますが,今回はプラスチックモデル用アクリル塗料のサーフェスプライマーを使用したこともあり特にクラックが発生するようなことはありませんでした.
ゴム素材として見せる部分以外をマスキングテープでマスキングした上で,エナメル塗料の液状ゴムスプレーを何回かに分けて塗布してゴムの厚みを出していきます.画像にあるように,この工程の最後で,マスキングテープを剥がした上で境界を埋めるように薄く追加で塗布することで,マスキングの境界から硬化したゴムが剥離してしまうことを防いでいます.
ゴム状スプレー塗布時とは逆にマスキングを施した上で,クロムのメッキ調スプレーを塗布します.こちらもエナメル塗料です.次に塗布する塗料が半透明なので,色味を整えて発色をよく見せるために予めベースとなる塗料を塗布しておきます.
このままでもめっちゃかっこいい~!のですが,更に塗装していきます.
蛍光ピンクの塗料はスプレータイプではなく,手元にエアブラシもないので,筆塗りで塗装します.こちらはアクリル塗料です.エナメル塗料を塗布した面にアクリル塗料を塗布するので,溶剤で薄めなければ下地を溶かすことなく重ねて塗布することができると思います.ゲーム上のルックはもう少し紫に寄ってるようにも見えるのですが,角度によって複雑な光沢を楽しめる状態になりました.
ゲームで手に入るアイテムは大抵が中古*15であり,防具も例に漏れず汚れまくっています.屋外で格闘して銃をぶっ放していたら砂埃や硝煙でめっちゃ汚れそうですね.ゲーム上での表現に近づけ,使用感のある複雑なルックにするために,ウェザリングマスターを使って汚し表現を施します.エッジィな部分を中心に塗装することで,引き締まった印象を与える仕上がりになりました.
この後に,クリア塗料を塗布して表面を保護*16し,マスキングテープを外し,PPベルトを取り付けるなどを行うと完成です.
完成
身につけてみました.いい感じに顔が隠れますね.派手で厳ついけど,どこかカワイイ,キッチュな感じが表現されています.ちなみに私の場合はベルトで縛らなくても頬骨に引っかかってそれなりに固定可能でした.
バックル付きのベルトを通したので,トルソーに飾ったり,首からぶら下げておくことも可能です.
感想
熱溶解積層方式や光造形方式の3Dプリンタが安価になり,多くの人が個人で所有するようになって久しいです.また,昨今はUnreal Engine 5のNaniteなどの仮想ジオメトリシステムの登場によって,アーティストがハイポリモデルからノーマルマップをベイクしたりローポリモデルにリトポしてLOD用モデルを用意するのではなく,ディティールの表現が全てポリゴンで表現されるゲーム開発が可能になってきました.今後もCD Projekt REDのように柔軟なファンコンテンツガイドラインを定めてくれるビデオゲーム開発企業や,MOD開発ツールなどを制作する熱い有志のゲームファンたちが居てくだされば,より直接的にビットとアトムを繋ぐファン表現も可能になっていくのかなと期待に胸を膨らませています.
反応レイヤー加工面頬があればナイトシティでもギャングに瞬殺されることはないかも知れませんね!願わくばリジーズバーなんかに行ってBDでも観たいんですが……リタ・ウィーラーに追い返されちゃいますかね?えへへ……
*1:単純に露出があってエロいのではなく,マイノリティすら露骨な広告素材となっていて,それが巨大企業の醜さのようなものを表現している
*2:タトゥーや電子機器,武器など.性に関しても,主人公すらも男女と言うよりか体格,声,外性器などの組み合わせで表現され,それぞれに合ったロマンスストーリーが用意されるなど,その世界で何が当たり前なのかが強烈に描かれている
*3:巨大企業に属する人間としてのロール
*4:もちろん銃に対して刀で立ち向かうこともできる……俊敏性を向上させるインプラントと共に!
*5:リバースエンジニアリングを含んでいる
*6:抽出ツールやゲームに影響を与えるソフトウェアを含んでいる
*7:この記事の執筆時点で確認した内容
*8:MODツールとコスプレ小道具の作成が主たる要素であるため
*9:そのときはガイドラインにある通りlegal@cdprojektred.comに連絡しようと思います!
*10:メッシュやノーマルマップのデータ
*11:ゲームでは共通のメッシュに対して異なるマテリアルを充てることで別のアイテムを表現していたりする
*12:ブラウザ上で動作しますが実行はすべてローカルで行われるのでデータがどこかのサーバにアップロードされることはありません
*13:ノーマルマップが凹凸の法線情報を格納するのに対して,ディスプレイスメントマップは凹凸の深さの程度を情報として格納します
*14:ディスプレイスメントマップ上の細かな凹凸を各頂点の座標で受け止める必要があるのでマップ画像の解像度程度の頂点密度が必要
*15:新品を扱ってそうな服屋などもあるけど,大抵は倒した敵から奪って手に入れてるし……