初めまして。
セガゲームス 第1CSスタジオの有賀千陽です。
キャラクターデザインの業務に10年以上携わったのち、現在は新設されたデザインサポートチームでデザイナーの作業を支援するツールを制作しています。
「龍が如くスタジオ」で制作されているタイトルにはたくさんの実在の人物が登場します。
今回のSEGA TECH Blogでは「龍が如くスタジオ」キャラクター班流のリアルなキャラクターを作成するフローを皆さまにご紹介させていただきます。
【目次】
まずは「龍が如く」シリーズのキャラクターの特徴から説明しましょう。
- プラットフォームはPS4などハイエンド機である
- 開発期間が短い※おおよそ一年
- 芸能人とタイアップし、ご本人がゲーム中でキャラクターを演じている
- 沢山のユニークなキャラクターが登場する
などが挙げられます。
そのリアルなキャラクターたちを短い期間にどれくらいのクオリティで、どれくらいの顔の数を作らないといけなかったのか?
クオリティはもちろん写真のようなクオリティです。
タイアップキャストになると誰が見てもそっくりに作らなくてはなりません。
次に数の話ですが…
『龍が如く6 命の詩。』の男性NPC*1の顔だけで上記の画像ぐらいです。
これに加えて女性NPC・重要キャラクター・キャバ嬢のタイアップキャラなどを含めると、
- 男性の顔:約200種
- 女性の顔:約70種
あいかわらずたくさん作ってますね…。まとめると、
短時間でリアルなキャラを沢山作らないといけない!
リアルなキャラを大量に作成するに当たり活躍してくれたのが、これから説明するフォトグラメトリーを活用した制作フローでした。
まずは、フォトグラメトリーの説明と、フォトグラメトリーによる3Dの自動生成、Maya等のDCCツールに持っていくまでのフローの説明をします。
フォトグラメトリーとは?
------------------------------------------------------------------------------------
3次元の物体を複数の観測点から撮影して得た2次元画像から、
視差情報を解析して寸法・形状を求める写真測量のこと。
小難しくてよくわかりませんね…
要は撮った写真から自動で3Dデータを生成してくれる技法のことです。
この文言だけで、かなり簡単に作れるように感じられるのではないでしょうか?
フォトグラメトリーを本格的に導入したのは『龍が如く6 命の詩。』の開発中でした。
ではそれ以前はどうしていたのか?
「龍が如くスタジオ」で行っていた3Dスキャンの歴史を簡単に説明します。
「龍が如く」シリーズにおける3Dスキャンの歴史
- リアリティの追及
- 制作スピードの向上
この2つの要求を満たすために、「龍が如く」シリーズでは2007年PS3対応が始まった『龍が如く 見参!』の制作から3Dスキャンによるワークフローが導入されました。
PS2世代までは写真を見てモデリングを行っていました。いわゆる目コピーです。つまり制作クオリティはデザイナーのスキル頼りだったのです。
PS3世代になってゲーム機のスペック向上に伴い、リアリティのあるゲームモデルの必要性が高まり、さらに『龍が如く 見参!』から実在の俳優を登場させることにもなり、リアリティとクオリティの追及がさらに重要視されるようなりました。
光学式スキャナー
2007年の『龍が如く 見参!』以降『龍が如く3』『龍が如く4 伝説を継ぐもの』『龍が如く OF THE END』まで社外のスタジオで役者さんを撮影し、メッシュデータもそのスタジオで生成されたものを使用していました。
3Dスキャンを行うようになりキャラクターのモデリング時間は40%削減でき、クオリティも上がりました。
そのスタジオでは当時としては最新式だった光学式(ヘリウムネオンレーザー)の3Dスキャナーを使用していましたが、スキャンメッシュの精度はごらんの通り、なんとなく誰だか認識できる程度で細かいディテールは撮れていません。
投影式の3Dスキャナー
以下の画像は『龍が如く OF THE END』の途中から導入が始まった社内撮影スタジオでスキャンされた3Dモデルです。
この頃から社内に撮影専用スタジオを設け、テクスチャはカメラ1台(手持ち)での撮影からスタートし、後にカメラ5台(+三脚・ストロボ)でシャッターを同期させて撮影する方法に移行。より精度の高いテクスチャを撮影できるようになりました。
3DモデルのキャプチャにはWhite-Light (走査型白色)方式*2の3Dスキャナーを導入しました。プロジェクターを用い撮影対象に画像を投影して専用ソフトウェアで解析して3Dメッシュを生成するという方法です。
社内に専用スタジオを設け新しい3Dキャプチャのシステムを導入したことにより、メッシュの精度が以前より向上し時間面でも費用面でも社外スタジオの利用時に比べて大幅なコストカットを達成しました。
ただ、暗室で5秒程度息を止めて動かないでいる必要があるため、まばたきや体が動いてしまうだけでメッシュの精度が低下するなど正確な3Dモデルのキャプチャは非常に難しく、撮影されている人の負担も大きかったのです。
さらに、社外スタジオのスキャンデータも社内スタジオのスキャンデータも、どちらもテクスチャの生成ができなかった為、3Dメッシュを生成した後撮影した画像をメッシュにベイクしてテクスチャを自分たちで作成する必要がありました。
その頃のテクスチャ作成方法は、DCCツール内部に画角が同一となるカメラを作成し、位置を合わせてカメラプロジェクションUVを作成しテクスチャベイクしていたのですが、この作業だけで数時間かかっていました。
また、社外スタジオのスキャンデータも社内スタジオのスキャンデータもそのままではノーマルマップベイクのソースにできるほど精細にキャプチャできるわけではなく、Zbrushでのスカルプトによるディテールの追加作業は必須でした。
PhotoScanの導入
そんななか、フォトグラメトリーの技術を使い3Dメッシュを生成するPhotoScanというソフトウェアがプロジェクトに導入されました。
3Dデータ生成用の写真撮影の様子
上の写真は2015年から2018年現在まで使用している社内フォトスタジオです。
事業所移転前の羽田にあった旧スタジオの様子なので手作り感あふれる仕上がりですが、ここで沢山の芸能人の方々をスキャンしてきた見た目にそぐわずできるヤツなんです・・・が、なんと!現在大崎の新オフィス内に「龍が如くスタジオ」キャラクター班こだわりの新スタジオを構築中なのです!
今年度中に完成予定ですのでお楽しみに。
話は戻って、カメラのスペックは以下のようになっています。
- 台数 : 30台
- 機種 : CanonX7i
- レンズ : 標準ズームレンズ
- 焦点距離 : 55mm
基本設計や機材の調達は社外の専門家に委託し、その後の運用、撮影のオペレーション、メンテナンスなどはキャラクター班が行っています。
画像の現像
X-Rite社のColorCheckerPassportと一緒に撮影した画像からカメラプロファイルを作成し全ての現像に使用します。
秘訣は 「龍が如くスタジオ」独自の「ドラゴンエンジン」
「龍が如く」シリーズは常に部内開発のゲームエンジン上で制作されてきました。そうすることでレスポンスが良く柔軟なゲーム開発が可能になり、デザイナーの時には無茶な要求にも短時間で実装することができるのです。
『龍が如く6 命の詩。』の開発時にアップデートされた内製ゲームエンジン「ドラゴンエンジン」は、それまでのゲームエンジンよりシームレスでリアルな表現が可能になりました。
部内でゲームエンジンを開発できるような高い技術力を持ったプログラマがたくさんいるのも、「龍が如くスタジオ」がクオリティの高いゲームを素早く作れる要素の一つとなっています。
キャラクター制作ワークフロー
前置きがだいぶ長くなってしまいましたが、本題のキャラクターワークフローの解説に移ります。
今回は「龍が如く」シリーズ関連のプロモーションでおなじみ島野さんの顔制作に沿ってお伝えします。
3Dメッシュ生成
3Dメッシュの生成にはAGISoft社のPhotoScanというソフトウェアを使用しています。
このソフトウェアの導入により3Dメッシュの生成と同時にテクスチャも生成できるようになったことから、テクスチャをMaya上でベイクしていた数時間の作業が削減されテクスチャ作成時間が大幅に短縮できました。
この一連のフローにより、デザイナーのスキルに依存していたクオリティの向上と制作時間が短縮し安定して高水準なクオリティがアウトプットできるようになったのです。
メッシュ生成 フロー
では実際に3Dメッシュを生成する過程を紹介しましょう。
- 始めに現像した撮影画像をツールに読み込みカメラ位置を計測
- ポイントクラウド(点群データ)を生成
- 3Dメッシュを生成
- 最後にテクスチャベイクで終了
PhotoScnanは各画像のカメラの位置や画角を画像解析により取得し、ソフトウェア上で撮影環境を再現しますが、ソースにしている写真の点数が少ないと各画像の位置関係が予測できずカメラの位置情報が取得できなくなります。
現在弊社スタジオは30台のカメラで構成されており、横の耳から後ろの首回りまで360度カバーできるようになりました。
上記の画像はポイントクラウド(点群)です。
この状態では点群と認識できないくらい高密度なので寄ってみます。
更に寄ってみます
小さい点が見えるのがわかりますか…?
このポイントクラウドを元にメッシュとテクスチャを生成します。
上の画像は生成したメッシュデータです。1000万ポリゴンで生成しています。
上の画像はテクスチャです。
PhotoScanが生成したポリゴンメッシュとUVに写真がベイクされます。
これらを任意の形式でエクスポートしてR3DS社のWrapXというツールでPhotoScanからエクスポートした3Dメッシュにベースメッシュをシュリンクラップします。
この工程の詳細は後ほど解説しますね。
顔モデル作成フロー
PhotoScanやWrapXで得たソースを元に実際にどのようにゲームのデータに落としこむのでしょうか。
まずはスキャンメッシュとゲームメッシュを合わせるという作業になります。
これはPhotoScanで生成したメッシュです。
これがWrapXで生成したメッシュです。
実際に合わせてみるとこうなります。
わかりにくいですが目の周りのエッジフローが少し歪んでいますね。
ゲームメッシュのエッジのラインがきちんとスキャンメッシュの特徴に沿うように修正していきます。
目の周りはまつ毛や二重や粘膜の部分など細かい造形が多くPhotoScanでは再現しきれません。口の周りも唇の内側など写真には写らない部分はメッシュが生成されないので、その二か所はどうしても手作業で修正する必要があります。
これらの作業は非常に重要で、メッシュの法線情報を正しく作ることによりクオリティを上げるという目的もありますが、「龍が如く」シリーズではフェイシャルモーションが複雑に動くためエッジフローが実際の筋肉の流れに沿っていないと後々イベントムービーシーンで思わぬ破たんを生みだす原因となってしまいます。
この作業に関してはWrapXの導入でかなり効率化されました。
テクスチャ作成
次はテクスチャ作成なのですが、その前に簡単に描画周りを説明しておきます。
「龍が如く」ではいわゆる主流ではない、f0値を扱ったPBRを採用しています。
この理由は、「龍が如く」というプロジェクトがゴリゴリのフォトリアル指向ではないことと、ゲームに妖怪や怪物*3など現実にいないキャラクターが登場する可能性を加味し、ある程度振り切った表現ができる今の形に収まりました。
テクスチャについて
次は「ドラゴンエンジン」で使われているテクスチャについてです。
上記の画像にあるような8枚*4のテクスチャをキャラクター班で作成して使用しています。
DiffuseMap、NormalMap、ShinnessMap、AmbientOccrusionMapは、おそらく大体のプロジェクトでお馴染みだと思いますので説明は割愛します。
アンビエントオクリュージョンマップ
アンビエントオクリュージョンマップをわざわざ1枚のマップで持っているのは、キャラ単体では画面を占める割合は低くスクリーンスペースのアンビエントオクリュージョンが充分に乗らないので個別でベイクしキャラごとに用意しているからです。
トランスミッタンスマップ
肌透過用のトランスミッタンスマップは、肌の薄い部分を表現するために使っています。逆光を当てられた時の耳や、指などに効果的です。
F(0°)マップ
黒い画像ですが、F(0°)マップと呼んでいます。
F(0°)とは屈折率の比から求まる、0度のフレネル反射率という意味らしいです。
屈折率0度、法線方向から見たときの、鏡面反射率、スペキュラーの総量です。
mayaにあったmental_rayのマテリアルでは、IOR(屈折率)と書かれていることからリフレクションの強さにも影響します。値が高いほど正面から見ても環境が映りこみます。
キャラクター班としては素材ごとに担当プログラマーに用意してもらった値で作業するという認識です。
テクスチャ作成フロー
次にテクスチャの作成フローです。
龍のテクスチャワークフローは、タンジェントノーマル、AO、シャイニネスの順番に一連の流れで制作しています。
ディフューズは状況によって前後いたしますが、スキャンメッシュと生成された画像をソースに、ゲームメッシュでベイクすればほぼ終了です。
タンジェントノーマルマップ
まずは16bit高解像度テクスチャを利用してディスプレイスメントマップを作成します。
そのディスプレイスメントマップをZbrush上でスキャンメッシュにアサインしてゲームメッシュにベイクするのが目的です。
PhotoScanにより自動で生成されたテクスチャがコレです。
ご覧のとおりバラバラです。
ほくろやシミなどの余計な凹凸情報になりえるものは先にフラットにしておきます。
前処理が済んだらPhotoshop上でハイパス等を使いディスプレイスメントマップを作成します。
次にZbrush上での作業にうつります。
右側がZbrush上で、スキャンメッシュにディスプレイスメントマップを適用した状態です。
ディスプレイスをかける前よりかなり細かい凹凸が表現できているのがわかりますでしょうか。
先ほど調整したゲームメッシュをインポートし、レイヤー分けしてからスキャンメッシュにディスプレイスメントを適応します。その凹凸情報を、projectALLを使って転写します。
スキャンメッシュにはエラーも多いので、この作業の前に事前にモーフターゲットを登録しておきprojectALLで投影したくない部分をマスクしてするなどして都合の悪い部分をフィルタリングしています。
その後、キャラクターによってはさらにスカルプトしてディティールアップを図ります。
後はSubdivisionの一番上と一番下をエクスポートし、XnormalやSubstance等のテクスチャベイカーを使ってタンジェントノーマルとAOを生成します。
人によってはディフューズもこの段階でスキャンメッシュからベイクします。
生成したテクスチャが…
これですね。ちゃんとバラバラだったUVが繋がっています。
スキャンメッシュからベイクによって得たデータとなります。
ディフューズマップはベイクしたままというわけにはいかないのでさらに手を入れて調整します。
テクスチャの撮影時に陰影を消すようにはしているものの、どうしても取りきれない陰影が入ってしまいますので手作業で余計な陰影を除去します。
少しわかりづらいかもしれませんが、除去前と除去後で陰影の差が少し緩和されています。
消しすぎると単調に見えるのでさじ加減に多少経験が必要な作業です。
シャイニネスマップ
シャイニネスマップは、ノーマルマップをキャビティマップに変換するアクションを使い作成したマップをオーバレイで5枚重ね共通のトーンカーブを適用した後、光って欲しいところ、欲しくないところを既定の値で塗り完成です。
すべてのキャラクターはUVが共通なので、実際はキャビティレイヤーの差し替えと個人で違う位置になる唇周りと眉毛周りの塗りの調整のみ行っています。
Substanceでも同様に上の一連の作業が組んであります。
トランスミッタンスマップ
つづいて肌透過用のトランスミッタンスマップの作成も紹介しましょう。
顔モデルにスムースをかけた後に、白黒反転をしてアンビエントオクリュージョンをベイクしたものです。
このフロー自体が正しいものなのかは正直わかりませんが、コストと効率を鑑みて、最も効果的なフローでした。
処理軽減のため全てのキャラが同じテクスチャを使っています。
以上ですべてのテクスチャ作成が完了です。
仕上げにテクスチャの中間データはDDSを採用しているのでDDSで書き出します。
その際のインターフェイスが煩雑で多くの設定ができてしまうので、デザイナーが迷わないようにツールを用意しました。
リサイズのアルゴリズムとDDS保存形式を任意で選ぶことができます。
元々はガンマ補正、レベル補正の設定や、ラップモード設定、ミップマップ設定など細かく分かれていたのですが、それらの仕様が確定されてからは、混乱を避けるため全て非表示にして触れないようにしてあります。
細かいことですが、これによりかなりミスも少なくなりかなり効率的に作業できるようになりました。
その後いろいろ微調整*5して、完成したモデルですが…
どうでしょう、島野さんに見えますか?
「龍が如くスタジオ」流のフローでこのクオリティの顔モデルが今では1日もあれば誰でも制作できるようになりました!
架空のキャラクター
ついでに架空キャラクターのフローについてもすこし触れてみましょう。
基本的に弊社の社員に協力してもらい、リアルなキャラクターを作成する場合のフローでほぼそのまま再現します。
その後、キャラクターの設定に合わせて修正します。
このキャラクターは眉毛の角度や目つきの修正ぐらいしか行っていません。
設定によっては元の風貌からは別人になるケースもあり、特に重要度の高いキャラになるとコンセプト画で用意した顔に近づけるために原形をとどめなくなります。
その場合は、ほとんど肌のディフューズ以外は、使用しないのでデザイナーの腕の見せ所でしょうか。
次は顔モデリング以外の話を簡単にご紹介します。
顔のしわ
各キャラクターには顔の表情が変わったときに表出する皺を表現するための皺マップが用意されています。
下の画像はとあるキャラの顔の皺マップです。
用意するマップはノーマルマップのみです。
皺用のディフューズやシャイニネス等は用意しておらず、頂点カラーの塗分けによってノーマルマップの表出を制御しています。
イベントムービー班が設定した表情のパターンに合わせて表出するようになっており、
デザイナーの作業負担軽減の為全キャラクター設定はほとんど同じです。
キャラ作成をサポートするツール群
ここまでモデルを作成するフローを説明してきましたが、ここからはそのフローの作業を軽減するツールについてお話したいと思います。
まずウェイトのセットアップツールです。DCCツールをSoftimage*6からMayaに切り替えた経緯上、Softimageと同じ感覚でMayaでのウェイト編集を出来るようにする必要がありました。
そこでまずはデザインサポートチームでウェイトのエディタを作成することになりました。
顔のポリゴンメッシュはWrapXによって生成されたものを使っていれば全て同じUV・同じ頂点番号なので、ウェイトセットアップは頂点番号かUVのポジションでウェイトをアサインします。
これで殆どの場合うまくいくのですが、目の形によって目を閉じた時に破綻したり眉毛の位置によっては眉毛が付いてこない、あるいは瞬きしたときに眉毛もついてくる等のバグが発生します。
Maya用のウェイトエディターを使って修正していきます。
ウェイトのスムースや、ジョイントのロック、ウェイトを保持したままのエッジ切り直し、スキンモデルのデュプリケート、スキンモデルのコンバインなど沢山の便利なツールが用意されています。
このエディタが用意されてからはコンポーネントエディターの数倍速くウェイトの修正ができるようになりました。
WrapX
上記でチラホラ名前の挙がっていたツール、WrapXを紹介します。
WrapXとは大抵はDCCツール上で行うシュリンクラップを、高精度で行うスタンドアロンのアプリケーションです。
今は多機能な新バージョンもリリースしている古いツールですが、スクリプトで操作できるのが決め手でこのツールを長らく使用しています。
「龍が如く」プロジェクトでは、PhotoScanで取得した高精細なポリゴンモデルを、リトポロジも兼ねて一定のトポロジのメッシュに落とし込む目的で使用しています。
Pythonでスクリプトを書かないとカスタマイズができないのでデザイナーからしてみれば使いにくいツールですが、このツールを導入しあえてデザイナーが触れないようにしてリトポロジやポリゴンの削減をWrapXで吸収してしまえば、こだわりがちなデザイナーの工数も増えづらいのではないかという狙いもあります。
左がベースメッシュで約5000頂点あります。
ベースメッシュとは、「龍が如く」プロジェクトにおいて素体として最初に作られるモデルで、ほぼすべてのキャラクターモデルはこのベースモデルを基準に作られています。
右がスキャンメッシュです。
まず、既存のPhotoScanで生成した顔のメッシュやテクスチャ、トポロジを共通にするためのベースモデルを読み込み、最初は三点、両目頭と人中にポイントを指定して大まかに頭部の位置とスケールを合わせます。
次に、詳細にシュリンクラップを行うため、位置合わせのためのポイントをPhotoScanのメッシュとベースモデル両方に指定していきます。
計算を除外するポリゴンも指定する事ができるので、ソースのメッシュが大きく欠けている場合も、ベースのモデルを大きく変形させる事なくシュリンクラップを行う事ができます。
設定が完了したら計算を行います。
その過程をGifにしてみました。
最後にスキャンメッシュをシュリンクラップしたベースメッシュと、それに位置とスケールを合わせたスキャンメッシュをエクスポートして完了です。
最初はWrapXのみでシュリンクラップの作業を行っていましたが、現在では手軽にシュリンクラップや編集が行えるようにMayaからコントロールできるツールを用意してあります。
こちらのツールでは、WrapXの鬼門であったフローの途中で指定していたポイントの編集を行う機能も追加しました。
顔のハイメッシュは、このWrapXのフローを採用することでまだ技術的に未熟なデザイナーでも比較的ハイスピード&ハイクオリティに作成できるようになり、トポロジを共通化することで面倒なウェイト関連の作業もストレスなく行う事ができるようになりました。
LODの作成
ゲーム制作の辛いところはここからLODを作成しないといけないところですが、LOD作成もツール側である程度自動化してあります。
現在既成のLOD作成ツールは「龍が如く」プロジェクトでは使用せず、クオリティ重視で手作業によりLODを作成しています。
ですが顔のLODは先ほどのトポロジの共通化によりボタン一つでクオリティを維持したまま生成できるツールが使えるのでLOD制作の時間はほとんどかかっていません。
そのほかのツール
「龍が如く」プロジェクトではほかにもリアルなキャラモデルを短時間で作り上げる為に、いろいろなフローを取り入れています。
しかし、「リアルにする為のフローを取り入れる=工数の増大につながる」ことが多いため、フローの採用とその際に増える工数の圧縮の為のツールの制作はセットで行うようにしています。
たとえばMarvelousDesignerで作成したデータのリトポロジ用のツールなどがあります。
MarverousDesignerは衣服などの3Dデータの作成や、シミュレーションを行えるアプリケーションです。
リアリティのある衣服の3Dモデルを作成するには最適なアプリケーションでしたがリトポロジが大きな課題でした。
この問題もデザインサポートチームでリトポロジーツールを作成し、さらにゲームエンジンにすぐに組み込めるようウェイトやマテリアルの設定、各種テクスチャの焼きつけなども簡易的に行えるようにしました。
他には
- 今まで作成した大量の顔データをブレンドして新しい顔を作るツール
- 写真を撮影するだけでPhotoScanにより全自動でスキャンメッシュが生成されるツール
- そのPhotoScanで生成したスキャンメッシュを短時間でゲーム用のデータに落とし込むツール
など沢山あります。
Mayaはスクリプトを覚えてツールを作れるようになるとあちこち自動化・高速化ができてとても楽しいツールです。
私はデザイナーとしてセガに入社しましたが、今ではPythonでMayaのツールを作るのにすっかりハマっています。
このブログを読んでいるデザイナーなのにツールを作って自動化するのが大好きな方!クオリティの高い作品作りに懸命に取り組む弊社デザイナーたちの作業効率化に向けた環境づくりに、共に取り組んでいただけませんか?
もちろん、そうではない方も「龍が如くスタジオ」であんな芸能人やこんな有名人の方々と一緒にお仕事してみませんか?
「龍が如くスタジオ」は一緒にゲームを作ってくれる仲間を募集中です!
それでは皆さま、よいお年をお迎えください!
©SEGA