Vol.1では、3Dグラフィックスベースで動作しているゲームの映像の基本概念を取り扱いました。そして、ゲームの根幹メカニズムとして重要な「衝突判定の基礎概念」はVol.2〜4と全3回にわたって説明しました。
今回からは「3Dモデルとして表現されたキャラクターがどのように動いているか」にまつわる話題をお届けします。
Vol.1では、3Dグラフィックスベースで動作しているゲームの映像の基本概念を取り扱いました。そして、ゲームの根幹メカニズムとして重要な「衝突判定の基礎概念」はVol.2〜4と全3回にわたって説明しました。
今回からは「3Dモデルとして表現されたキャラクターがどのように動いているか」にまつわる話題をお届けします。
TEXT / 西川 善司
EDIT / 神山 大輝
西川善司
この連載では、「3Dグラフィックスベースのゲームはこんな技術でできています」という感じの話題を取り扱っています。
ゲームプログラミングそのものに取りかかる前の「概念的な話題」をメインに、最新技術よりは「普遍的かつ基礎的な内容」をお話しします!
電動の稼動ギミックが搭載されていない限り、オモチャのぬいぐるみやフィギュア人形は動きません。ぬいぐるみならば、だらーんとしてソファや床に転がったままでしょうし、人形は製造段階のポーズのままアクリルケースの中で静止していることでしょう。もし、動き出すことがあれば、怪奇超常現象ですので「その筋」の専門家に今すぐ連絡を取ってください。絶対に西川善司には連絡してこないでくださいね。怖いので。
一方で、人間である私やアナタは、自分の意思で腕や脚を曲げて動くことができます。どうして、こんなことが出来るのでしょうか。「そりゃ愛の力に決まってんだろ!」と即答したロマンチストの方達。惜しいです。実は、この世の中には「愛の力」よりも偉大なパワーがあるのです。「お金の力」ではありませんよ。
ゲーム中の3Dキャラクターは、その存在位置を表すX,Y,Zの3次元座標を操作してやれば「移動」は行えます。しかし、腕振って足を曲げて歩く動作を、その3Dキャラクターに実践させるためには、特別な処理を実践しなければなりません。人間が手脚を動かすのに直接関与しているのは愛の力ではなく、関節の駆動です。ぬいぐるみや人形が動かないのは、その手脚の関節が動かないため、歩けないのです。
「関節を動かして脚を動かす」というメカニズムは、二足歩行ロボットの脚を動かすのと似たようなイメージを感じますね。実際に、現実世界で二足歩行ロボットを設計する場合は、上半身が転倒しないように身体全体の重心を安定させながら左右の歩みの動きを作り出す必要があります。
足を上げた際、地面についている方の足に重心を乗せたままの歩き方を「静歩行」と呼びます。歩き慣れていない赤ちゃんや、足腰の弱くなったお年寄りはこの歩き方になることが多いようです。一方、重心の移動を伴う歩き方を「動歩行」と呼びます。身体全体が倒れてしまう前に、地面についていない足を前に踏み出して着地させる歩き方です。
一般的なゲームの3Dキャラクターに対しては、静歩行や動歩行、重心など難しい人体の姿勢制御シミュレーションはごっそり省略して、ただ関節を動かすだけで歩行(のアニメーション)を作り出すことが多いです。特に人間タイプの3Dキャラクターであれば、基本的な脚の動かし方については、事前に動きを作り込んでしまいます。
このような「1ループの歩行動作」であれば、これが自然な動きに見えるように、パラパラ漫画のように動きを構成する一コマずつ、足首・膝・股の各関節の動きを最初に設定します。重心制御のシミュレーションは省略して、自然に見える「動歩行」の動きが再現されるように、足首、膝、股の各関節を適度に駆動させた動きを付けることになるでしょう。
脚だけでなく、上半身や手・腕の動きなども同じように、一コマずつの関節の動きを設定してしまえば、自然な歩行動作の動きを3Dキャラクターに与えることができます。このように、各関節に駆動情報を設定していきながら、姿勢を作り上げていく手法を「Foward Kinematics」(順運動学)と呼びます。
これを以降、本稿では「FK」と略記することとします。ちなみに、次回触れることになる「Inverse Kinematics」(逆運動学)のことは、英語圏でもIKと略することは多いのですが、IKと比べると、FKという略語は英語圏では使用頻度が低いようです。FKは、英語圏で最大の侮辱となる「悪態の言葉」と響きが似ているからでしょうか?(私にはよく分かりません!)
3Dキャラクターに動きを付けていくことを「アニメーション工程」と呼びます。日常会話で「アニメーション」といえば「テレビアニメ(作品)」のことを指しているような印象がありますが、3Dグラフィックスの世界、あるいはゲーム開発の世界でアニメーションというと、「3Dキャラクターを動かすこと」を指します。この世界に馴染みがない人には、もしかすると「モーション」といった方がイメージしやすいかも知れませんね。
関節の曲がり具合(角度)を、その動き(アニメーション)の最初から終わりまでを一コマ、一コマ設定していくのが最も基本的なFK的なアニメーションの作り込みになります。やっていることは、粘土人形の姿勢を一コマ、一コマ設定し、管理したポーズになるたびに撮影を繰り返して制作していく「ストップモーション」などとも呼ばれる「クレイアニメーション」の制作に似た作業といえるかも知れません。
さすがに一コマ、一コマ、3Dキャラクターの関節の動きを付けていくのは大変ですし、「リアルな手脚のアニメーション」を再現したいのであれば「本物の人間の動きを取り込んじゃえば良いじゃん?」と思った人も多いことでしょう。そう、それが「モーションキャプチャー」と呼ばれる技術になります。
「リアルな3Dキャラクターの姿勢を設定していくことの高効率な実現手法」としてモーションキャプチャー技術が提唱されたのは自然な発想の流れでした。しかし、現在でもCGアニメ制作はもちろん、ゲーム制作においても、作品の世界観にあった動き(アニメーション)を作り込みたい場合はアーティストが「手付け」で動きを付けることが多いです。
たとえば『トイストーリー』など長編CGアニメ映画で有名なピクサー・アニメーション・スタジオの作品作りにおいて、登場するほぼ全てのキャラクターの動きは担当スタッフ(アニメーター)が手作業で設定しています。ピクサーはモーションキャプチャーを使わないCG制作スタジオとして、業界ではとても有名なのです。
ゲーム制作の現場でも、リアリティ、あるいは作業効率を重視してモーションキャプチャーを採用するケースはよくありますが、それでもアニメーターが手付けアニメーションの要領で動きをコマ単位で調整(修正)していく事例は数多くあります。
3Dキャラクターの関節の動きの設定はコンピュータ上で行います。なにか要領よく作業を進められる手段はないものでしょうか?現実世界のクレイアニメーションでは、文字通り、関節の曲げ角を一コマ、一コマ設定しなければダメですが、3Dキャラクターの関節の動きは、プログラム的に制御できる部分がありそうです。
たとえば、剣をもった腕を1秒の間に直上から正面に対して90°で振り下ろすアニメーションをトータル60コマ(60fps)で制作しようとした場合、1/60秒ずつ、一コマずつ肩関節の回転角度を設定しなくても、「1秒間に肩関節を角速度90°毎秒で回転させる」というプログラムが適用できれば簡単に関節の動きを設定できそうです。
このように、アニメーションを制作する際、その動きの最初のポーズと終わりのポーズだけを決めておき、その間の動きを算術的なアプローチで自動設定するような制作手法があります。これがキーフレームアニメーションです。
実際のテレビアニメ作品の制作においても、キーフレームとキーフレームアニメーションに近い概念はあります。テレビアニメでは原画担当のアニメーター(原画マン)がキーフレームとなる作画を行い、動画担当のアニメーター(動画マン)が、原画マンが描いた開始キーフレームと終了キーフレームの間の動きを一コマ、一コマ描いていきます。このような工程を「中割(なかわり)」と言います。
ゲーム制作におけるキーフレームアニメーションは、3DCG制作ツールやゲームエンジンが提供する各種エディターを使って、いわゆる「中割」に相当するアニメーションを生成することができるようになっています。
西川善司
本稿では話を簡単にするために関節を曲げる(回転させる)ことだけに着目していますが、実際のキーフレームアニメーションでは関節自体も立体的に移動する「中割」を生成しなければならないこともあります。
単に「関節を回転させる」にしても、その速度を、等速回転とするのか、加速回転とするのか、あるいは減速回転とするのかなどを設定することもあります。
ここまで3Dキャラクターの動きをつけるには「アニメーションというプロセスが必要」という話をしてきました。そして、そのアニメーションを制作/設定していくには「関節が必要だ」という話をしました。今回はあえて、そのアニメーションを、比較的身近な存在である電動ロボットでイメージしやすいように「関節を曲げる(回転させる)」という切り口“のみ”で話してきました。
たしかに、今回のような「関節のみ」によるアニメーション手法はガンダムのような「外骨格」型のロボットを主題としたゲームには相性がよさそうです。しかも、FKベースのアニメーション主体であれば、関節の位置座標、関節の回転方向さえ、ちゃんと処理していけば、それほど大きな不都合はなく運用できるかもしれません。
しかし、人間のような内骨格型の人体では、関節だけに着目したアニメーションでは不自然なものになりがちです。「動きが硬い」「柔らかさが足りない」というような見映えになりがちで、もっと言えば「ブレイクダンスみたい」に見えてしまうこともあります。人間のような3Dキャラは、やはり人体に欠かせない「内骨格」を導入した方がよさそうです。
そう、3Dグラフィックスを採用したゲームにおいては、かなりの初期から、この内骨格を意識したアニメーション縁取り組みが行われてきました。次回は、この内骨格(ボーン)を意識した、アニメーション技術について見ていきたいと思います。
西川善司が語る“ゲームの仕組み” 連載一覧西川善司のYouTubeチャンネルプログラマーを経て技術系ジャーナリストへと転身。以降、半導体、ソフトウェア、グラフィックス、ディスプレイ、自動車、人工知能、ゲーム開発などの分野に注力した取材を行っている。
西川善司が語る“ゲームの仕組み”の記事をまとめました。
Blenderを初めて使う人に向けたチュートリアル記事。モデル制作からUE5へのインポートまで幅広く解説。
アークライトの野澤 邦仁(のざわ くにひと)氏が、ボードゲームの企画から制作・出展方法まで解説。
ゲーム制作の定番ツールやイベント情報をまとめました。
東京ゲームショウ2024で展示された作品のプレイレポートやインタビューをまとめました。
CEDEC2024で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブル2024で行われた講演のアーカイブ動画・スライドをまとめました。
CEDEC2023で行われた講演レポートをまとめました。
東京ゲームショウ2023で展示された作品のプレイレポートやインタビューをまとめました。
UNREAL FEST 2023で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブルで行われた講演のアーカイブ動画・スライドをまとめました。
UNREAL FEST 2022で行われた講演レポートやインタビューをまとめました。
CEDEC2022で行われた講演レポートをまとめました。