前回のVol.5では「3Dモデルとして表現されたキャラクターがどのように動いているか」にまつわる超基礎概念をお話ししました。
それは「関節を動かす」という、とても原始的なアイディアです。Vol.5で説明したのは、3Dモデルを動かすために、部位ごとに分割して、それらを連結した状態の3Dモデルを動かす概念でした。
今回は人体系3Dキャラクターの3Dモデルを、より現実の人間に近い、そして近年のゲームで採用される“内骨格的な手法”で動かす方法を解説します。
前回のVol.5では「3Dモデルとして表現されたキャラクターがどのように動いているか」にまつわる超基礎概念をお話ししました。
それは「関節を動かす」という、とても原始的なアイディアです。Vol.5で説明したのは、3Dモデルを動かすために、部位ごとに分割して、それらを連結した状態の3Dモデルを動かす概念でした。
今回は人体系3Dキャラクターの3Dモデルを、より現実の人間に近い、そして近年のゲームで採用される“内骨格的な手法”で動かす方法を解説します。
TEXT / 西川善司
EDIT / 神山大輝
前回までの連載で、人体系の3Dモデルであれば、頭部、首、胴体は上半身と下半身に分けて、腕は上腕と前腕、そして手。脚部は大腿(太もも)と下腿(すね)、そして足に分割して、それらを連結。連結した部分を「関節」として考えて、この関節を駆動させることで3Dモデルのキャラクターを動かすという話をしました。
こうした「関節を駆動して3Dキャラクタを動かす」という概念は「Foward Kinematics」(FK:順運動学)と呼ばれます。
3Dキャラクタの動きを、一コマ、一コマ、関節を回転させてポーズを作り込んでいく手法は「ストップモーション」などとも呼ばれる「クレイアニメーション」の制作に似た作業です。初代PlayStationの最初期に出ていたゲームの中には、この手法で3Dモデルの動きを実践していたものがありました。
いまでも世界的な人気を誇る人気ゲーム『マインクラフト』に登場するキャラクター達は、2020年代において、最もユーザーに楽しまれている、関節駆動型のFKアニメーション採用ゲームと言えるかも知れない
パーツ分割した部位を連結させて、関節駆動を行ってFK手法で実践するアニメーション――本稿ではこれを「部位連結型関節駆動アニメーション」と呼ぶことにしますが、この手法は「外骨格的な成り立ちのボディ」を前提とした手法といえます。外骨格構造の生物である昆虫類や、ホディの伸縮構造がないロボットには採用しても問題にはならなそうな手法といえそうです。
しかし、柔らかい、私たち人間の人体のような3Dキャラクター達に対しては良い手法ではなさそうにも思えます。実際、先人達も、そのことにはすぐに気が付いたのでした。人間は、身体の内部に骨が仕込まれた「内骨格構造」の生き物ですから、3Dゲームグラフィックスのキャラクターも内骨格で動かそうという発想が、自然とすぐに誕生したのです。
人体系3Dキャラクターの3Dモデルを内骨格的な手法で動かすには、その3Dモデルの内部に「骨」(ボーン)を仕込む必要があります。
でも、人間の人体がそうであるように、仕込まれるボーンは一本のワケはないですよね。そう、複数のボーンを人体系3Dモデルの中に仕込んでいくことになります。頭蓋骨は髑髏(ドクロ)みたいな複雑な立体形状を用意するのでしょうか。肋骨は生物室にある人体標本のように、ムカデやゲジゲジみたいな、トゲトゲした複雑な構造物に仕立てる必要はあるのでしょうか?
実際には、そこまで本物の人間の骨に寄せる必要はありません。一般的なゲームの場合は、人体がそれっぽく動かせればいいので、仕込む骨の数は最低限。というか、「そのゲーム開発者が欲しい動きが行える程度の複雑性」で作り込みます。
続いて、人間の骨格と同じように、内部に仕込んだ骨同士がどう接続されるのか、ジョイント(関節)の設定も行います。例えば、人間の膝関節は鳥類とは違って、前方に曲がりませんよね。こういった関節の曲げ角の範囲設定なども行います。
こうしてできた内骨格構造体、つまりボーン同士を接続した3Dモデル用のガイコツは「スケルトン」と呼ばれます。
この「ボーンの集合体」であるスケルトンを、ポリゴンでできた人体3Dモデルの中に埋め込んだら、それで終わりなのでしょうか?実は、まだまだ道半ばです。今はまだ、スケルトンの骨を動かしても、人体3Dモデルは動きません。
今の時点では、たとえば腕や脚の骨の関節を動かすと、動かされた腕や脚の骨は人体3Dモデルの腕や脚部分から突き出てしまい、その表皮ポリゴンから突出してしまいます!
「腕や脚から骨が突出する」というのは、とんでもない大事故の惨劇を連想してしまいますが、実際のところ、骨(ボーン)はあくまで不可視な存在でゲーム画面には描かれませんから、結果としては、人体3Dモデルは、全く動かないだけです。
つまり、スケルトンは人体系3Dモデルに埋め込んだだけではダメで、スケルトンの各骨が動いた時に、人体3Dモデルの表皮側のどこに連動させるかの対応付けさせる設定が必要なのです。かといって適当に設定してしまったらへんてこなことになります。
イラストのような状況を避けるためには、脚の骨は、人体3Dモデル側の脚部に連動するように対応を設定をする必要があります。こうすれば、脚の骨の動かしたときに人体3Dモデル側の脚部も、骨の動きに追従して動いてくれます。
「どの骨の動きを、人体3Dモデルのどの部分に追従させるか」の設定を行うことを「スキニング」(Skinning)と呼びます。また、同時に、骨の動きに連動して、人体3Dモデルの部位が折れ曲がる処理系(場合によってはその描画)も、同じく「スキニング」と呼びます。ちょっとややこしいですね。
さて、ゲーム開発現場では、「リギング」(Rigging)と呼ばれる工程があります。これは、本節前半で解説した「実質的なスケルトンの設計・制作」と、本節後半で解説した「スキニング設定」の両方のことを指すことが多いようです。
そして、各骨を動かすことで、対応する各部位が動かせるようになった、リギング処理完了後の3Dモデルのことは「スケルタルメッシュ」(Skeltal Mesh)、あるいは「スキンドメッシュ」(Skinned Mesh)と呼ばれることが多いです。スケルタルメッシュは主に、ゲームエンジンの「アンリアルエンジン」(UE)系で用いられる用語となっていて、一般用語としてはスキンドメッシュと呼ばれることが多いです。「Unity」系でもスキンドメッシュと呼ばれることが多いようです。
ちなみに、Meshとは「網目」のことを指しますが、これは3Dモデルのことです。3Dモデルをワイヤーフレーム表示させたときに「網々」状に見えるので、そう呼称されます。
ここからは、人体系3Dモデルの中に内骨格として仕込まれたスケルトンのボーンを動かして、3Dモデルを動かすことを考えてみます。演算としては、ボーンに与えた幾何学的な変移を、3Dモデル側の対応部位のポリゴン達に移す(伝搬させる)ような内容になります。
この演算は、近代GPUだと、プログラマブル頂点シェーダーで実践されることになります。
この仕組みは「ボーン・スキニング」(Bone Skinning)と呼ばれます。ここでの英単語「スキニング」としては「表皮に対して処理する」というような意味になるでしょうか。ここでいう「表皮」は、紛れもなく3Dモデルを構成するポリゴン達のことですね。
さて、このボーンスキニングの最もシンプルな基礎形は、ボーンに対応づけた人体系3Dモデルの部位を、ボーンの動きにシンプルに追従させるやり方です。初代PlayStationの最初期タイトルでは、この超シンプル手法を採用していたものは少なくありません。ただ、この方法では、腕を肘関節で曲げた際に、前腕が上腕に折れ込んだみたいな見映えになってしまいます。
時代が進むと、さすがに「潰れたサランラップの芯」状態の関節表現はよろしくないと判定が下ったようです。そこで、各ボーンと人体系3Dモデルの部位(正確には各ポリゴン)の対応に重み付け(ウェイト設定)の概念を導入したボーンスキニング、いうなれば「重み付きボーンスキニング」ともいうべきテクニックが台頭します。これが、現在でも未だに広く活用される、ボーンを使った内骨格アニメーションの基本スタイルとなります。
ここでは、先ほどに倣って上腕と前腕の事例を引き合いに出すこととしましょう。最初期状態では、上腕ボーンと上腕モデル、そして前腕ボーンと前腕モデルの対応が設定されています。ここで、2つのボーンの接合点、すなわち関節(ジョイント)で90度曲げた場合、上腕モデルと前腕モデルも90度曲がった状態で描画されることになります。
しかし、曲がった関節の内側のポリゴン達は圧縮されて縮み、逆に外側のポリゴン達は引き延ばされて肘に相当る部分が凹んだように描画されることになります。内骨格の生き物としては奇妙な見映えとなってしまいます。上でも述べたへんてこな曲がり方ですね。
ここで、この肘関節に対して、上腕や前腕上のポリゴン達が、どの程度の影響を受けるかの「重み値」を設定してやり、重み値の大きい方向に、各部位のポリゴン達の頂点が引き寄せられるような変移を演算してやります。こうすると、先ほどとは違い、肘関節周囲のポリゴン達が体積をそれなりに維持した感じで曲がって描画されるようになります。
この変移量がシンプルな線形演算で実践されることから「リニア・ボーン・スキニング」(Linear Bone Skinning)とか「リニア・ブレンド・スキニング」(Linear Blend Skinning)と呼ばれます。両方とも略語はLBSとなります。プログラマブルシェーダーが出始めの頃の2000年代初頭は「頂点ブレンディング」とも呼ばれていました。
実際の人間は、肘関節から前腕部を回転させることができますが、いま示したような超シンプルなリニアボーンスキニングでは、肘関節周囲にポリゴンのねじれとつぶれが起きてしまう「キャンディラッパー現象」が発生してしまいます。
本稿では詳しくは追いませんが、これを緩和するための最もシンプルなアプローチは「ツイストボーン」と呼ばれる、回転軸方向に複数の「補助ボーン」を入れることです。
なお、ツイストボーンは回転に対応するためだけの専用の補助ボーンですので、これまでメインテーマとなっていた姿勢を制御するメインのボーンに置き換えるものではありません。要するに用途別にボーンを使い分けるイメージです。下の図解は、メインボーンと重なる位置に、メインボーンを3分割したようなツイストボーンを仕込んだ事例です。
ツイストボーンの解説図解。この図では、ツイストボーンを仕込むことで、手首の回転の影響を肘関節側に影響ゼロとすることでキャンディラッパー現象を抑止している。黄色で表される、便宜的に仕込まれた3つのツイストボーンは、人間の骨格とは異なる構造となるが、手首の回転を3つのツイストボーンで分配することができるので、キャンディラッパー現象が抑止されるのだ。ツイストボーンの副次効果でいい案配で表皮も回転するので近代ゲームで利用されることの多いテクニックだ
この珍現象を低減させる難しめなアプローチには、関節における回転変移演算をデュアルクォータニオンで補間するというやり方もあります。Unityであれば「Dual Quaternion Skinning」を選択するだけでこの機構が利用できます。ただ、近代ゲームでも、先に取り上げたツイストボーン導入のやり方が多いようなイメージがあります。
近代ゲームでは、関節の回転や折り曲げ時、その他のボーンの駆動で生じる不自然さを補うために様々な補助ボーンの組み込みが行われていますが、それ以外に、よりリアルな表現を行うための補助ボーンを設定する機会も増えています。
たとえば、格闘ゲームやアクションゲームなどでは、男性キャラの“力こぶ”や“ふくらはぎ”などの隆々たる筋肉の表現を行うための「バルジボーン」(Bulge Bone)や「マッスルボーン」(Muscle Bone)を仕込んでいたりしますし、女性キャラの胸やお尻、ぽっちゃりキャラのお腹などのぷるぷる感、ボインボイン感を表現するための「ジグルボーン」(Jiggle Bone)なんていう変わり種もあったりしますよ。
PS3版『メタルギアソリッド4 ガンズ・オブ・ザ・パトリオット』より。主人公スネークの腕の曲がりを本物の人体らしく曲げるために肘関節に補助ボーンを仕込んでいた。画像は開発画面において、補助ボーンの影響をオン(画像左)/オフ(画像右)としたもの。補助ボーン自体は肘関節から飛び出しているピンク色のもの
ニンテンドーDS(NDS)用『ラブプラス』より。決して3D性能が高いとはいえなかったNDSにおいて、5,000ポリゴン、総ボーン数53本でボーンスキニングを実践していた。ボーン設計は全ヒロイン共通。ヒロイン達の可愛らしい仕草を実現するため、スカートや髪、胸の補助ボーンが仕込まれていた
PlayStation 3向けに発売された『バイオハザード5』より。水上でのボス戦において、ボスの動きに翻弄されて荒れ狂う波は、波動シミュレーションではなくボーンスキニングで行われていた。波の表現すらもゲームメカニズムの一部として制御したいゲームにおいては、自然現象までをもボーンでコントロールすることもあるのだ
そうそう、ここではイメージしやすいように、動かす対象の3Dモデルを人体系3Dモデルに限定したような流れの話になってしまっていましたが、この概念は人体以外の3Dモデルにも適用できます。たとえば、4足歩行の動物系3Dモデルにおいても、4本足のスケルトンを制作して、スキニング設定を行えば、内骨格アニメーションを実践することができます。
さらに言えば、顔面の表情を作り出すことにも「ボーンの仕込み」と「スキニングの技術」が活用されることが多いです。現実の人間の顔面には頭蓋骨と下顎骨(下顎の骨)がありますが、唇や頬、目蓋、額の眉などを動かしたりする骨はありません。でも、人間は鼻を上向きにするなど、かなり顔面を自在に動かすことができます。これは人間の顔面(というか内部)には、約60種もの表情筋が張り巡らされているからです。いうなれば、これも、前節で出てきたような「豊かなキャラクター表現を行うための創意工夫によって誕生した補助ボーン」ということができるかもしれません。
PS3版『メタルギアソリッド4 ガンズ・オブ・ザ・パトリオット』より。主人公スネークに対しては人間らしいリアルな感情表現を実現するために、顔面に対して多くのボーンが仕込まれていた。
前述したしたように、ゲーム中のスネークのボーン数は、体全体と顔面、指までを入れて総115本だが、顔に仕込まれたボーン数は全体の30%超、36本にも及んだ
もちろん、表情筋の仕組みを補助ボーン的なアプローチではなく、解剖学的に再現したゲームグラフィックスがこの世にないとは言い切れませんが、実際の多くのゲームタイトルでは、この表情筋の再現をボーンスキニングのアプローチで取り組んでいることが多いです。
実際の人間にはなく、ゲーム世界の人間にだけ仕込まれているボーン(骨)と言えば「髪の毛」も代表的な物の1つです。
PlayStation 3版『エンド オブ エタニティ』(End of Eternity)より。本作では主要女性キャラクターの髪の毛に約250個の物理シミュレーション制御用のボーン(質点ジョイント)が仕込まれていた。
これらのほかにも、ボーンの仕込みは「アクセサリー」「衣服」といったキャラクターが身に付けるものにも適用されます。
分かりやすいのはイヤリング、ハチマキなどの「揺れモノ」と呼ばれることも多いアクセサリー類です。形状や質感、見た目が違うだけで、ほぼ毛髪のやり方と同じです。
衣服については、一般的に「布シミュレーションが適用される」と言われることが多いですが、その実務的な処理系は、物理エンジンやゲームエンジン側からすると、質点シミュレーションにバネ(スプリング)シミュレーションの要素が介入するくらいで、毛髪のケースにかなり近いといえます。このあたりについては、いずれ機会があれば本連載でも取り扱うことに致しましょう。
「西川善司が語る“ゲームの仕組み”」 連載一覧西川善司のYouTubeチャンネル
西川善司が語る“ゲームの仕組み”の記事をまとめました。
Blenderを初めて使う人に向けたチュートリアル記事。モデル制作からUE5へのインポートまで幅広く解説。
アークライトの野澤 邦仁(のざわ くにひと)氏が、ボードゲームの企画から制作・出展方法まで解説。
ゲーム制作の定番ツールやイベント情報をまとめました。
CEDECで行われた講演のレポートをまとめました。
UNREAL FESTで行われた講演のレポートやインタビューをまとめました。
GDCで行われた講演などのレポートをまとめました。
CEDEC+KYUSHUで行われた講演のレポートやイベントレポートをまとめました。
GAME CREATORS CONFERENCEで行われた講演のレポートをまとめました。
Indie Developers Conferenceで行われた講演のレポートやインタビューをまとめました。
ゲームメーカーズ スクランブルで行われた講演のアーカイブ動画・スライドやレポートなどをまとめました。
東京ゲームショウで展示された作品のプレイレポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームダンジョンで展示された作品のプレイレポートをまとめました。
日本と文化が近い中国でゲームを展開するための知見を、LeonaSoftware・グラティークの高橋 玲央奈氏が解説。
インディーゲームパブリッシャーの役割や活動内容などを直接インタビューします。