シリコンスタジオのMizuchi美人「YURI」さんの謎に迫る
それは,シリコンスタジオが手がける新リアルタイムレンダラー「Mizuchi」用の新作技術デモとして公開された女性キャラクター「YURI」である。
すでに,GDC2016レポートとして大まかな内容は紹介済みだが(関連記事),その造形,質感が,これまでのゲームグラフィックスからイメージされるビジュアルと一線を画することで,業界内はもちろんのこと,一般読者までざわつかせたのである。
この業界,大勢に「なにこれ!?」と言わせて注目を集めたら「勝ち」なところがあり,どんなに美しくリアルなものができても「綺麗だね」で終わってしまったら埋もれてしまう。その意味では「YURI」は,Mizuchiの認知度向上にはもちろん,シリコンスタジオの技術的先進性のアピール目的には大成功だったといえる。
そんなわけで,今回,YURIプロジェクトに携わったキーマン二人に話を聞くことができたので,YURIさんについてより深い情報をお届けすることにしたい。
ちなみに,前述した第一報ではYURIさん(28歳)を「美熟女」と記した筆者だが,YURIさんを「熟女」にカテゴライズすることについて編集部内ではだいぶ意見が割れていたようである。本稿では,間を取って「大人の女性」という表記に統一することにしたい(笑)。
YURIプロジェクトはどのように始まったのか
シリコンスタジオは,主にゲームエンジンそのものやゲーム開発を技術支援するようなミドルウェアを提供するソフトウェアスタジオである(※ゲーム開発をしないわけではないが)。ゲームエンジンとしては,「ガンスリンガー・ストラトス」シリーズに採用されたことで有名になった「OROCHI」シリーズがあり,このほか,光学シミュレーションベースのポストエフェクトミドルウェア「YEBIS」シリーズも業界では認知度が高い。最近ではインディーズゲーム開発シーンに向けて,C#ベースのゲームエンジン「XENKO」がリリースに向けて準備中という状況だ。
「Mizuchi」は,数あるシリコンスタジオのゲーム開発支援系のミドルウェア製品群の中でも比較的新しいもので,分類上は「リアルタイムグラフィックスレンダラー」になる。分かりやすい言葉で言えば「グラフィックスエンジン」である。
Mizuchiは,YEBISと同様,既存の任意のゲームエンジンと組み合わせて使うことを想定して設計されており,実際,そのサブセット版はシリコンスタジオ自社製ゲームエンジンのOROCHIにも統合されている。
Mizuchiの最大の特徴は,近代ゲームグラフィックスの基準技術になりつつある物理ベースレンダリング(PBR:Physically Based Rednering)を採用しているところにある。そのマテリアル(材質)表現は現実世界に実在するモノの反射特性に則ったものになっており,陰影計算も,入射光総量に従った「エネルギー保存の法則」に基づいて行われる。
Mizuchiの正式なデビューは2014年のGDC2014だった。このとき,表現力アピールの目的で開発されたリアルタイム技術デモ「Museum」が公開されている。「実写にしか見えないリアルタイムグラフィックス」として日本だけでなく海外でも相当話題になったデモなので覚えている人も多いのではないだろうか。
2014年のGDC2014にてMuseumを公開した後,各方面からとても良い反応をもらったMizuchiでしたが,予想どおり「キャラクター表現はどうやってやるんですか」という問い合わせも受けることになりました。
Mizuchiに当初,標準搭載されていたマテリアル群は,表皮で入射光のほとんどが反射する不透明材質が中心であった。現在あちこちで使われている物理ベースレンダリングは,大本となるレンダリング方程式のうち,物体の表面反射に特化したものが多い。具体的には,いわゆるBRDF(双方向反射率分布関数)という関数を使ったものとなっている。
BRDFとは「光がどう反射するかを実際の光学現象に則って一般化したもの」で,実装レベルでは,「視線ベクトル」「光源ベクトル」「法線べクトル」といったライティングパラメータを引数としたときに,陰影処理結果を返す関数になる。実質的には見映えを決める材質設計パラメータに相当する。
ただ,これは「反射率」と入った名前を見ても分かるように,表面反射のみを扱ったものであり,そのパラメータでは半透明体や発光体は表現できないのだ。人肌や髪の毛のような半透明な材質や多層構造材質については特別な処理を実装する必要がある。
辻氏:
そういうわけで,キャラクター(人間をはじめとした生き物)を表現するのに必要な材質要素である「肌」「毛髪」「布」の表現シェーダの開発に取り組むことになりました。シェーダの開発は主に一人の専任担当者が行っています。
基礎技術開発や実験は2015年の夏くらいから始まったのですが,2015年末頃からGDC2015での公開を目標に実際にキャラクターを1体作ってみよう……ということになり,YURIプロジェクトがスタートしたのです。
ここで,一般的な“日本の”ゲームスタジオであれば十代中盤の美少女キャラに行きがちなところだが,シリコンスタジオはそうではなかった。
河野氏:
うちの会社はちょっとひねくれ者が多いので(笑),今さら女子高生作ってもしようがないよね……ということになり,20代中盤の大人の女性を作ろうという方向になっていきました。
技術的に難しい方向性を選択するあたりはさすがシリコンスタジオといったところである。
というのも,まず第一に男性のキャラクターは作りやすいと言われる。シワ,シミ,ヒゲを生やす……といったディテールを入れ込めば「人間味の演出」ということでごまかしが利く。そして熟しすぎた女性キャラも,同様にそうしたディテール過多な演出でごまかしはきく。
逆に十代中盤までくらいの美形な少年少女もCGに向いている。しばしば「お人形さんのように可愛らしい」という形容が用いられるが,美形の少年少女の顔立ちには透き通ったつるっとした「いかにもCG」らしい肌も自然に適合するので,お人形さんになっても不自然さは目立たない。
若さを残しつつも成熟に向かい始めたお年頃の女性は,それなりにシワやシミも少し出始め,肌に人間味が加わるため,その案配の差し引き難度が高い。
河野氏:
本当に実在しそうな女性……というリアル系をゴールに設定した以上は,比較対象は実在人物をスキャンした3Dモデルになりますから,モデリングは相当苦労しましたし,プレッシャーも感じました。社内でも通りがかりの同僚達からヤジというか,さまざまなアドバイスが飛んできたり(笑)。とくに,女性社員達からは厳しめな指導も……。最終的には,従兄弟に似た人がいる……という評価ももらえるようにまでになりましたが。
YURIのデザインの方向性とその基本スペック
YURIのモデリングは河野氏を中心としたデザインチームで行われた。チームとはいっても,アーティストは河野氏ともう一人の二人だけの少数精鋭チームである。
デザイン上のベースとなったスキャンモデル素材などは存在せず,MAYA上でほぼゼロからのモデリングを行ったとしている。髪型についてはラフを描いたというが,顔面についてはラフ画も作成していないという。
ただ,「デザインの方向性」としてのリファレンスはあり,昭和時代に活躍した女優の名前がいくつか挙げられている。現在のYURIの顔立ちにその面影は微塵もないので,その女優名を当てることはまず困難である……ということだけは申し上げておこう。また,制作期間中は女性の顔を通勤電車の中で,つい職業病的に観察してしまうこともあったとか(笑)。
シワをはじめとした微細凹凸に関しては一部,スカルプトツールを活用したとしている。デザイン最初期は完全に左右対称モデルだったが,最終版では実際の人間の顔面と同じように微妙に左右バランスを変えている。この左右非対称顔面モデリングは最近のリアル系キャラクター造形では定番のテクニックである。YURIをよく観察すると鼻筋にも歪みがあることが分かる。
河野氏:
YURIの顔面のモデリングはかなり継続的に行っていました。それこそ,GDC2016の直前くらいまでです(笑)。最初期に作った顔面モデルがやや幼顔だったので,しばらくそちらに引っ張られた感じもありましたが,だんだんと今の感じになっていきました。一時はシワやシミを過度に入れすぎて老け気味になっていたのですが,最終的に現在の20代後半,若さを残したアラサーに落ち着きました。YURIの公式年齢設定は28歳で,「ちょっと結婚したい願望が芽生えているお年頃」というキャラクター付けもあります(笑)。
辻氏:
キャラクター表現には衣服……つまり布の表現要素は不可欠です。ということで,YURIにも衣服を着せることは当然の成り行きだったのですが,開発当初は,和装にすることは決定してはいませんでした。作られた女性キャラが大人の女性……ということで,ほかであまり試みられていない「和服,着物を着せる」という方向性になっていきました。年齢が年齢なので「振り袖」でもないだろうということで,落ち着いた着物のデザインで行く方向性も定まっていきました。
たしかにYURIさんは,会社なんかに一人や二人は居そうな美人さんになっている。顔も完全に整いすぎてない感じにリアリティがある。筆者は,鼻がやや低めで,耳も少し大きめなところに「実在の人間感」を感じた。
ところで,GDC2016時には素の無表情だったものが,今回,新たに公開されたものは笑顔バージョンとなった。笑みによって(よい意味で)顔の造形が若干崩れた感じが出ており,さらに生身の人間感を増強してくれているような気がする。
GDC2016公開時 |
今回新たに公開された笑顔版 |
YURIの総ポリゴン数は着物も含んで約33万だという。この値は,今世代のゲーム機向けのゲームキャラクターとしてはかなり多めの値である。技術デモなので,1キャラクターあたりのポリゴン予算に制限がないためにこの値になったのだろうが,辻氏は「歯などの口内モデルやかんざしなどのアクセサリ類モデルのポリゴン数は最適化の余地あり」と自己分析している。
それを踏まえたうえでの現状のポリゴン数の内訳は,
顔面:約10万
歯:約5万
髪飾:約5万
毛髪:約4.5万
身体:約8.5万
歯:約5万
髪飾:約5万
毛髪:約4.5万
身体:約8.5万
となっている。
テクスチャ総容量は約300MB。枚数にして約100枚とのこと。
そのサイズは微小なものから特大までさまざまで,顔面,毛髪,着物の絵柄などの大判テクスチャは2048×2048テクセルとなっているが,布の織り目などの繰り返しパターン表現ができるモノは微小サイズである。
肌の質感表現の秘密
人間の皮膚は透明度の低い材質が積み重なった多層構造体で,入射した光の約6%は皮膚の表面で反射するが残りの94%は皮下に浸透し,散乱してから出射されることが知られている。これが皮下散乱(Subsurface Scattering)現象だ。これを解析的に解くのはリアルタイムグラフィックスでは無理があるので,疑似再現するのが主流となっている。
その疑似再現手法で近年採用率が高まっているのが,顔面の拡散反射の陰影処理結果と,それ自体を画面座標系のポストエフェクトでボカしたもの(ブラーさせたもの)とで合成することで疑似的に皮下散乱現象ほ実現するScreen-Space Subsurface Scattering(SSSS)法と呼ばれるテクニックだ。このSSSSで使われる畳み込み演算を工夫して減らし,高速化したのがSeparable Subsurface Scattering法となる。
YURIでも,このSSS法を採用している。
辻氏:
我々の実装は,拡散反射の計算結果をブラーさせて合成するSSS法の典型的手法ですが,顔面内の部位ごとにブラー径に変化を付けられる仕様にしています。また,鏡面反射のハイライトは2 Lobe仕様としました。
人間の顔面の皮下散乱は,散乱具合が顔面上の部位ごとに違う。YURIでは,これに対応すべく部位ごとに散乱の強弱を変える仕組みが入っているということだ。例えば,肉厚な頬などは広く散乱するためブラー径が広めだが,一方で皮膚の薄い下目蓋などはその逆……という具合だ。なお,そうした部位ごとのSSSブラー径指示はSSS専用のマスクテクスチャマップで与える仕組みとなっている。
そして「2Lobeの鏡面反射」とは,ハイライトのピークが2段で出る鏡面反射表現のこと。肌上の鏡面反射は最明部の鋭いピークハイライトの周辺にそれに準ずるやんわりとしたハイライトが出るため,これを再現するためにそうした実装としている。ちなみに,この肌部分に限らず,Mizuchiでは,鏡面反射モデルとしてPhong法よりも,より自然なハイライトが出るCook-Torrance(GGX)法を採用している。
河野氏:
肌のテクスチャ群は,写真などではなくハンドメイドです。アルベドテクスチャも一様な肌色ではなく,目周り,口周り,頬,額,鼻など,各部位ごとに細かく色は変えています。これはさまざまな先人達の研究結果,さまざまな高解像度写真を参考に自分なりに解釈したうえで手作業で塗り分けています。ホクロについては口元のなんかは自分の好みで入れていますが(笑)。実際の人間の顔ってよく見るとホクロはけっこうあるので,YURIにもそれなりに入れてあります。
逆光時に耳殻などの肉薄の部位において,背後の光がこちらに透過してくるようなBack Scatteringについては,現在は未対応だとのことだ。
YURIの眼球上には「生きた目の証」ともいえるハイライトが浮かぶが,これは,周囲にある最大四つの代表光源によるハイライトと,環境マップによって作り出されている。これは「眼球だから実現される表現」ではなく,Mizuchiのガラス材質が持つ表現スペックそのものである。
また,眼球モデル自体は眼球本体と角膜部の二重構造になっており,眼球本体側にはSSS処理が適用されている。角膜は透明材質となっているが,スクウェア・エニックスが「Agni's Philosophy」で採用していたような屈折表現は採用されていない。屈折に対応させるかどうかは,YURI開発チームの間でもどうするか決めかねているとのこと。
本質的には肌とは無関係だが,トータルな質感表現においては,第三者からの遮蔽によって生成される「影」と,ライティング結果としての「陰」の2要素は無視できないので,YURIおけるそのあたりの話題についても触れておこう。
影生成はシャドウマップを用いたデプスシャドウ技法を採用している。このため,影の品質は,シャドウマップ解像度に左右されるが,現状,シーンを限定した技術デモであるため,別段,問題にはなっていないようだ。
自己遮蔽によって生じる「陰」に関しては,静的なAmbient Occlusion(AO)項をテクスチャとして事前生成しており,ライティング時には,AO項に配慮して陰影計算が行われる。アゴ下から首の付け根あたりにできる影と陰はデプスシャドウによる影と,AO項による陰がミックスされたものになっている。
Screen Space Ambient Occlusion(SSAO)は適用されていないが,画面座標系の局所的な大局照明技術であるRealtime Local Reflection(RLR)はYURIでも実装されているという。RLRは本来は局所的な映り込みを再現するために活用されるものだが,結果的に局所的な遮蔽による陰の効果も得られることはMUESEUMデモのときに立証済みだ(関連記事)。YURIにおいても,一部の淡い陰影はこのRLRの効果によるものだという。
YURIの毛髪表現にはKajiya-Kay法を適用
続いて,キャラクター表現を行ううえでMizuchiに求められた機能である「毛髪」表現について見ていくことにしよう。
毛髪は,人間の頭髪として活用できるのはもちろんのこと,動物やモンスターの表現にも有用だ。
辻氏:
毛髪のシェーディングモデルは,「Kajiya-Kay」法を実装しました。毛髪特有の二段スペキュラハイライトもちゃんと出ます。
「Kajiya-Kay」法は,カリフォルニア工科大学のJames T. Kajiya氏らの1985年の論文「Anisotropic Reflection Models」がオリジナルで,2013年発売のリブート版「TOMBRAIDER」のPC版が採用したAMDの毛髪シェーディング技術「TressFX」にも採用されるなど,近年のゲームグラフィックスでは採用事例を増やしている手法だ。
具体的なアルゴリズムとしては,毛髪上の接平面(=接線)情報を毛髪に沿ってシフトさせ,光源からの直接反射光と毛髪が放つハイライトを分離させるような手法になる。いうなれば「天使の輪」的表現をプロシージャル手法で生成するイメージだ。
河野氏:
YURIのヘアスタイルについては「着物を着たときに自然に見える髪型」としてデザインして,モデリングしています。とくに参考にしたモデルはなく,いくつか作ったもののうち,しっくりきたものとしてこれを採用した感じです。生え際とか毛髪同士の影の出方には調整が必要かなとは思っていますが。
YURIの頭髪は,実は2種類の「髪」からなっている。
一つはポリゴン片に毛髪テクスチャを適用した「ポリゴンヘア」。もう一つは線分(ラインストリップ)による「ラインストリップヘア」である。
辻氏:
当初,ポリゴンヘアは半透明で髪を描画していたのですが,それだとソートの問題が出てきてしまい現在は不透明+α抜きで描画しています。このα抜き輪郭部にはマルチサンプルのようなアンチエイリアスは実装されていないので,エイリアシング(ジャギー)が残る点についてまだ課題を抱えています。
両者の見極めはそれほど難しいものではなく,櫛を通してまとまっている髪がポリゴンヘアで,そこからほつれたような髪がラインストリップヘアに該当する。こうしたポリゴンとラインストリップを併用したハイブリッド手法は「Agni's Philosophy」も採用していた(関連記事)。ポリゴンヘアで頭髪としてのボリューム(ふんわりとした量感)を与え,ラインストリップでばらけた髪の繊細なリアリティを表現するわけである。
ちなみに,眉毛はデカールテクスチャ扱いであり,実体としての毛髪はない。眉毛は上下目蓋に庇(ひさし)のように植え付けたポリゴンに睫毛テクスチャを適用して表現している。
辻氏:
動物やモンスターの表現には,今回実装した毛髪以外に,毛皮(Fur)の表現も必要になると考えています。この分野にはまだ未着手ですが,いずれ対応したいと考えています。
YURIが着る和服の表現
キャラクター表現を行ううえでMizuchiに求められた機能の最後は「布」表現だ。
布は衣服はもちろんのこと,ネクタイ,リボンといったアクセサリー的な装具にも有用な素材である。
肌ほどではないが,布にもある程度,光を透過させる特性があり,独特なハイライトを発生するため,既存の不透明材質のシェーディングアプローチのままでは再現が難しい。
辻氏:
Mizuchiの標準材質システムでは,Cook-Torranceの表面反射モデルを採用しているわけですが,そのままでは布の見た目にならないため,輪郭付近にリムライト(輪郭に沿って広がるハイライト)効果が入る材質設計としました。この特性のためにMizuchiでは「Clothness」という0〜7(0が最低。オフ相当)で与えられるパラメータを新設しています。
もともとMizuchiが持っているPBR材質システムの金属特性と,このClothnessの調整をうまく組み合わせると,ナイロン,木綿,絹,レイヨン,サテンといったさまざまな布の陰影が再現できるとしている。現在は,アーティスト各自の感覚でパラメータを手作業で調整・設計して作り込む必要があるが,最終的には具体的な布素材名に対応する布材質テンプレートを提供する予定になっているそうだ。
YURIが着る和服は,ベースとなっているややマットな布材質に,きらびやかな絵柄がラメ調の素材であしらわれているが,これは,Mizuchiの材質システムが元々持っている材質レイヤーシステムを応用して実現されている。具体的には,マットな布レイヤーの下地の上に,ラメ材質を別レイヤーで上乗せして表現しているわけである。Clothnessパラメータはこのレイヤーごとに個別に与えることができるので,ベース布とラメ材質で異なる質感の布表現ができているわけである。
なお,Mizuchiの仕様では1グループあたり4レイヤーが定義でき,これを最大3グループ待て持つことができる。つまり,最大で12レイヤーの材質描きワケを同一表面に対して行えるということである。
河野氏:
ベースの布は256×256テクセルの極小テクスチャを150回リピート適用してテクスチャ容量の削減を行っています。テクスチャキャッシュにも載りやすいかもしれません。布の織り目に見られる微細な凹凸は法線マッピングです。
なお,着物のデザインは河野氏らが独自にデザインしたもので,実在する着物をスキャン/キャプチャしたわけではない。YURI本体と同様,MAYAを使ってゼロからモデリングして制作しているという。
YURIとは別のオブジェクトとしてモデリングされた着物モデルは,その後,YURI本体に着せられるわけだが,着た際のYURIの身体との馴染み方は,布(Cloth)シミュレーションを行った結果であり,ある意味「実際に着ている」ことになる。
着物に出ているシワも「基本的にはシミュレーションによって着せた結果」としてできたシワということだ。
ただし,布の継ぎ目の凹凸,帯によって締められてできたシワは手描きの法線マッピングによるもので,実際にジオメトリレベルの凹凸があるわけではない。また,帯ヒモの結び目はモデリングされているが,帯ヒモの微細凹凸も法線マッピングによるものである。
河野氏:
デザイン面,着方など,着物についていろいろと勉強するために古着の着物を購入したり,専門書を読んだりして勉強しました。帯や帯ヒモの結び方にケチが付かないように,このあたりには気を使いましたね。
バーチャルではあるが,YURIのために着物を丸々一着デザインしたというのは興味深い。なお,着物の色は拡散反射要素の色として与えられているので,自在に変更が可能となっている。実際,GDC2016で公開されたバージョンでは藍色だったが,今回の取材時には緑寄りの色あいになっていた。
笑顔になったYURI〜そこに隠された秘密と苦労
GDC2016で公開されたYURIは,とくに目立った感情表現のない「素の表情」であった。
今回新たに公開されたYURIは一転してさわやかな笑顔になっている。同一人物の笑顔ということはもちろん分かるのだが,見た目の印象はGDC2016時とは違い,随分と愛らしく見える。
我々人間は何の気なしに顔の表情を変えるが,頂点の集合体でしかない3Dモデルでは,この表情変化の表現は難度が高いはずだ。
河野氏:
辻氏:
顔面の表情表現を最終的にMizuchiでどういう実装にするかはまだ決めていません。最近のゲームなどでも実用化されつつある,ボーン(リグ)を仕込みつつ,モーフィングも織り交ぜるような複合的なアプローチにするのが現実的かとは思っていますが。
なお,今回,公開されたYURIは笑顔になってはいるが,アニメーションはしないため,現状では,リグの仕込みはされていない。そう,今回の笑顔YURIは,「止め」の笑顔ということだ。
実際にどういった「作り込み」が行われたかといえば,その答えはシンプルなものであった。河野氏がMAYA上でYURIの顔面上の頂点を動かし,モーフィングさせることで実現しているだけである。では具体的にどの部位を動かしたのか。
一番,シンプルに連想される「絵顔の作り方」は漫画でも定番の描き方である「口角を上げる」ことなわけだが,それだけでは自然な笑顔にならない。自然な笑顔を作るためには目尻,鼻,頬,額などを総合的に動かし,モーフィングさせる必要があるのだ。頬を動かすと輪郭や首筋の方にまで影響が出るので,実際には意外と大がかりな作り込みになる。
河野氏:
自分は以前,Motion Portraitのエディタ(関連URL)制作に携わっていたこともあって,顔面の動かし方には専門的な知識がありました。そのときのノウハウが今のYURIの笑顔には生きています。
笑顔版YURIのほうれい線のシワはかなり強めに出ているが,それほど老け込んだ印象はない。ここは素表情モデルのほうれい線を実際に動かして作り込んだもので,新たに頂点を増やしたりと言ったことはしていないそうだ。
笑顔は顔面表皮が大きく伸縮することになるので,同時にテクスチャアドレス(UV)も伸縮することになる。しかし,現実の人間の肌も同様に伸縮し,肌の肌理も伸長と圧縮が起きているので,YURIにおいても,特別な対策はしていないという。
笑顔版YURIは,「口をやや開けた笑い顔」ということで,歯が見えることとなったわけだが,これは新規に口内のモデリングを行うことで対応している。見た目として印象深いのは白い歯だが,舌などのほかの口内部位もモデリングされている。
次は動き出す? CEDEC2016版に期待
ただ,なんらかのアナウンスを8月24日から開催される日本最大級のゲーム開発者向けカンファレンス「CEDEC2016」の会期中に行うと見られている。
さて,素の表情から笑顔になったYURIさんを見た誰もがこのあと期待するのは,彼女が動くことではないだろうか。
辻氏:
実は,CEDEC2016での公開に向けてYURIを動かすプロジェクトが進行しています。どんな内容かはまだ秘密ですが,せっかくのVR(Virtual Reality:仮想現実)元年の2016年ですからね。VRで動くYURIに会えるような体験を鋭意制作中です。楽しみに待っていてください!
今回,静止しているとはいえ,笑顔のかわいいYURIに会えたわけだが,CEDEC2016時のVRの中のYURIはどんな表情を見せてくれるのだろうか。
美女との楽しいひとときを過ごすVR体験はバンダイナムコの「サマーレッスン」など,いくつかあるが,シリコンスタジオに負けないほどのひねくれ者の筆者は,YURIのような大人の美人女性が滅多に見せない行動……例えば思いっきり怒ってきたり,あるいはワンワンと泣き付いてくる一風変わった体験を味わってみたいと思ってしまったのだが,どうだろうか。動き出すYURIさんが今から楽しみである。