コンピュータアニメーション
概要
コンピュータグラフィックスとアニメーションの一部である。3次元コンピュータグラフィックスを使ったものが増えているが、2次元コンピュータグラフィックスによるものは帯域幅が小さくリアルタイムのレンダリングが必要な場合によく使われている。アニメーションとしての表示はコンピュータ上で行う場合もあるが、映画などの他のメディアで利用する場合もある。映画の場合はこれを CGI（Computer Generated Imagery）とも呼ぶ。
動いているように見せかけるため、コンピュータディスプレイに1つの画像を表示すると素早く別の少しだけ変化した画像を表示する。この技法はテレビや映画で動いているように見せるのと同じ方法である。
コンピュータアニメーションは、立体模型を使ったストップモーション・アニメーションや平面のイラストを使った普通のアニメーションをデジタル化したものと言うことができる。3次元アニメーションでは、物体（模型）はコンピュータディスプレイ上に作られ、3次元の人物には仮想骨格を使う。2次元の人物のアニメーションでは、物体群（イラスト）が別途用意され、透明なレイヤを使い、仮想骨格を使うこともある。そして、手足、目、口、衣服などを骨格に付与し、人間（アニメータ）がキーフレームを作成する。キーフレーム間の差異はコンピュータが自動的に計算する。この処理をトウィーニングまたはモーフィングと呼ぶ。最後に、アニメーションがレンダリングされる。
3次元アニメーションでは、モデリングが完了してから全フレームを描画する必要がある。2次元アニメーションでは、描画はキーフレームを描く工程であり、キーフレーム間の補間（トウィーニング）は必要に応じてレンダリングする。リアルタイムでない場合、描画したフレーム群は映画のフィルムやデジタルビデオなどの各種フォーマットに変換される。リアルタイムにフレームを描画し、そのままエンドユーザーに提示する場合もある。インターネット経由で低帯域幅のアニメーションを転送する場合、エンドユーザー側のコンピュータ上のソフトウェア（Adobe Flash や X3D）がリアルタイムのレンダリングを行う。一方、高帯域幅のアニメーションは事前にデジタルビデオ形式に記録しておき、ストリーミング方式で転送する。
単純な例
右のアニメーションでは、まず画面を黒などの背景色で塗りつぶす。次に山羊を画面の右に描く。そして、画面を再び背景色で塗りつぶし、山羊を前より若干左の位置に描く。これを繰り返すと、山羊はゆっくり右から左へ移動して見える。繰り返しの速度が十分速ければ、山羊がスムーズに左に動いているように見える。この方法は映画やテレビの動画でも使われている。
この例は物体の位置をずらすものだが、大きさや形状や照明や色を変化させるようなより複雑な変換を行うには、単に再描画を繰り返すだけでなく、ある程度の計算とレンダリングの技術を要する。
錯覚と残像
目と脳に物体がスムーズに動いていると錯覚させるには、画像を毎秒12枚のフレームレート（fps）以上の速さで描画する必要がある（フレームとは1枚の完全な静止画像である）。毎秒70フレーム以上になると、脳の知覚限界に達し、それ以上リアリティやスムーズさが向上しなくなる。毎秒12フレーム未満では、多くの人々がフレームの切り替わりに気づいてしまう。一般的な手描きのアニメーションは毎秒15フレーム程度（日本のテレビアニメは8フレーム程度が主流）にしてセルの描画枚数を抑えているが、これはアニメの様式化した描き方だからこそ可能なことである。コンピュータアニメーションの生成する画像はそれよりもリアルであるため、もっとフレームレートを上げないとリアリティを生み出せない。
素早くフレームを入れ替えるとスムーズに動いて見えるのは「残像」現象があるからである。目と脳は瞬間ごとの画像を記憶し、それらを自動的に平滑化している。映画は一般に毎秒24フレームで、連続的な動きとして見せるにはその程度で十分である。
架空のキャラクターをアニメ化する方法
ほとんどの3次元コンピュータアニメーションシステムでは、アニメーターはまず骨格や棒人間のような単純化したもので人物を表現する。骨格モデルの各部分の位置はanimation variables（アニメーション変数の意）またはAvarsで定義される。人間や動物を描く場合、骨格モデルは実際の骨格と対応していることが多いが、同じ手法（骨格とそれを覆う表面）を他の動く物体の描画に使うこともあり、例えば顔面の描画に使われる（別の手法もある）。映画『トイ・ストーリー』のキャラクター ウッディには全部で700のAvarsを使っているが、そのうち100のAvarsは顔面用である。コンピュータはレンダリング時に骨格を描画するわけではなく、骨格モデルを使って人物の向きや位置を正確に計算し、それを使って画像に描画する。従って、Avarsの値を変化させていけば、人物に動きを与えることができる。
リアルな動きを得るための Avarsの値の生成方法はいくつかある。古くはアニメーターがAvarsを直接操作した。全フレームでAvarsを設定するのではなく、いくつかの戦略的時点のフレームについてだけAvarsを設定し、それ以外はコンピュータに補間させる。これをキーフレーミングという。キーフレーミングではアニメーターが動きを制御できる。これは、手描きのセルアニメの手法をデジタルに持ち込んだものと言える。
対照的に、モーションキャプチャという比較的新しい手法では実写の動きを利用する。モーションキャプチャでコンピュータアニメーションを動かす場合、実際に画像処理のためのマーカーを身に着けた人間がアニメ化されるキャラクターのようにシーンを演じる。マーカーの動きをビデオカメラを使ってAvarsとして記録し、記録されたAvarsをコンピュータ上でアニメ化されたキャラクターに適用する。
どちらの手法も一長一短であり、2007年現在、ゲームや映画の制作ではどちらかの方法を採用するか、場合によっては両方を組み合わせて用いる。キーフレームアニメーションは、人間が演じるのが困難または不可能な場合に適しており、モーションキャプチャは人間の演者の微妙な動きも再現できる。例えば2006年の映画『パイレーツ・オブ・カリビアン/デッドマンズ・チェスト』では、俳優ビル・ナイがデイヴィ・ジョーンズというキャラクターを演じた。ナイ自身は映画には顔を出していないが、彼の演技を記録することで微妙な動きや表情などがそのキャラクターに付与されている。従って、モーションキャプチャはリアルな振る舞いや動きが必要な場合に適しているが、演じるキャラクターは単に衣装や特殊メイクでは実現できないものである。
コンピュータアニメーション開発設備
コンピュータアニメーションは、コンピュータとアニメーションソフトウェアで作成する。アニメーションソフトウェアの例として、Art of Illusion、Poser、Bryce、Maya、Anim8or、Blender 3D、trueSpace、LightWave、3ds Max、SOFTIMAGE XSI、Adobe Flash（2次元）などがある。これら以外にも様々な製品があり、ターゲットとする市場によって価格も様々である。低価格の製品でも印象的なアニメーションを作れるが、一般的なパーソナルコンピュータではレンダリングの過程で多大な時間を要する。そのため、ゲームでは家庭用の一般的な価格帯のパーソナルコンピュータでもレンダリングができるよう、解像度やポリゴン数の上限を低くして制作する傾向がある。その場合、写実的なアニメーションは望めない。
映画やテレビやゲームのムービー部分は、写実的なアニメーションが多い。そのような（フルハイビジョン画質である1080iや、4K解像度画質など）高品質のアニメーションを家庭用のパーソナルコンピュータ上で作ろうとすると、2015年現在でも相当の時間はかかる。そこで、画像処理に特化した強力なワークステーションを何台も使う。グラフィックスワークステーションは2個から4個のプロセッサを搭載し、レンダリング性能も強化されている。多数のワークステーションをネットワークで相互接続したものを、レンダーファームと呼ぶ。このような設備を使うことで、全編がコンピュータアニメーションの映画でもだいたい1年から5年の期間で制作できる（この期間はレンダリングにかかる時間だけではない）。1台のワークステーションは2000ドルから16000ドル程度で、高価なものほど最新技術が採用されていて高速である。ピクサー・アニメーション・スタジオのRenderManは、映画用アニメーション制作に広く使われているソフトウェアであり、競合するソフトウェアとしてドイツ製のMental rayがある。ピクサーの公式サイトでは5000ドルから8000ドルでRenderManを販売している。Linux、macOS、Windows上で動作し、MayaやSoftimage XSIといったアニメーションプログラムと共に使用する。その他に映画用デジタルカメラ、モーションキャプチャ機材、クロマキー機材、編集ソフトウェア、プロップなどといった機材や設備を映画などの制作に使用する。
写実性
コンピュータアニメーションの課題の1つとして、人間を実写のように描くということが挙げられる。コンピュータアニメーションを使った映画に登場するキャラクターは、動物だったり（『ファインディング・ニモ』、『アイス・エイジ』、『森のリトル・ギャング』）、ファンタジー的なキャラクターだったり（『シュレック』、『モンスターズ・インク』）、擬人化された機械だったり（『カーズ』、『ロボッツ』、『ウォーリー』）、マンガ的人物（『Mr.インクレディブル』、『カールじいさんの空飛ぶ家』、『ルイスと未来泥棒』）だったりすることが多い。映画版『ファイナルファンタジー』は実写のように人間を描こうとした最初のコンピュータアニメーション映画とされる。しかし、人間の体や動きなどは極めて複雑であり、人間のリアルなシミュレーションにはまだ課題が多い。この分野での最終目標の1つは、実写レベルのリアルな人物を生成し、ソフトウェアのみで映画を製作できるようにすることである。映画を見た人が、それがコンピュータアニメーションなのか実写なのかわからないレベルになれば、目標を達成できたと言えるだろう。
現在、3次元コンピュータアニメーションは、写実的な方向性とそれとは反対の方向性に分かれている。写実的な方向性のコンピュータアニメーションは、実写のような写実性を求める方向（モーションキャプチャで動きをつけるのが典型的）と様式化した写実性の方向がある。実写的写実性は『ファイナルファンタジー』が達成しようとした方向であり、将来的には『ダーククリスタル』のようなファンタジー映画を人形やアニマトロニクスを使わずに実現することになると考えられる。『アンツ』は様式化した写実性の方向の例であり、将来的には『ティム・バートンのコープスブライド』のようなストップモーション・アニメーションを代替する可能性がある。これらはいずれも完璧には至っていないが、今も進化し続けている。
写実性を求めないマンガ的な方向は、既存のアニメーションを発展させ、3次元化したようなもので、ナイン・オールドメンの伝統を受け継いでいる。写実的コンピュータアニメーションのフレームは写真のようであり、マンガ的コンピュータアニメーションのフレームは絵画のようである（より単純な見た目を生成するトゥーンレンダリングとは異なる）。
詳細な例と擬似コード
2次元コンピュータアニメーションでは、動く物体を「スプライト」と呼ぶ。スプライトは対応する位置を持つ画像である。スプライトの位置をフレーム毎に微妙に変化させ、それによって動きをつける。以下の擬似コードは、スプライトを左から右に移動させるものである。
var int x := 0, y := screenHeight / 2;
while x < screenWidth
drawBackground()
drawSpriteAtXY (x, y)  // 背景上に描画する
x := x + 5  // 右に動かす
最近のコンピュータアニメーションでは、動きをつけるのに別の技法を使っている。最も多いのは、複雑な3次元ポリゴンを数学的に操作し、それにテクスチャマッピングを施し、照明などの効果を与え、最終的な完全なイメージをレンダリングする。アニメーションの動きを作成するのに洗練されたグラフィカルユーザインタフェースを使うこともある。別の技法として、規則的な形状にブール演算を実施するCSG表現で物体を定義する方法があり、任意の解像度でも正確なアニメーションを生成することができる。
木製の平らな壁で囲まれた部屋の真ん中に灰色のピラミッドがあるという単純なイメージを考えてみよう。ピラミッドには照明が当たっていて、表面に輝いている点がある。壁、床、天井はそれぞれ単純なポリゴン（この場合は矩形）である。矩形の頂点の位置は X、Y、Z の3つの値で定義される。X は左右の位置、Y は上下の位置、Z は奥行きを表す。視点に最も近い壁は4つの点（それぞれに X, Y, Z の値がある）で定義される。以下はその壁の定義を表現したものである。
(0, 10, 0)                        (10, 10, 0)

(0,0,0)                           (10, 0, 0)
視点から最も遠い壁は次のようになる。
(0, 10, 20)                        (10, 10, 20)

(0, 0, 20)                         (10, 0, 20)
ピラミッドは5つのポリゴンで構成される。矩形の底辺と4つの三角形の側面である。このイメージを描くため、コンピュータは3次元のデータで定義されたものを2次元の画面に投影するための計算をする。
まず、どの地点から見た情景を描くか、すなわち視点を決める。ここでは部屋の中の床より若干高い位置に視点を設定し、正面にピラミッドがくるようにする。コンピュータはまず、どのポリゴンが見えるかを計算する。近い壁は視点の後ろにあるため、全く表示されない。またピラミッドの反対側の面は隠れていて見えない。
次に各点を画面上に遠近法を考慮して投影する。遠くにある壁は画面上では近い壁よりも小さくなる。壁が木製に見えるように木目のテクスチャをその上に描く。このときに使う技法としては「テクスチャマッピング」が一般的である。木目のパターンを壁の見た目の形状に合わせて変形した上でタイル（または壁紙）のように並べる。ピラミッドは灰色なので、その表面は単に灰色にする。しかし、照明の効果を再現する必要がある。照明が当たっている面は明るくし、影になっている部分は暗くする。
以上のようにして完全な情景を画面上に描く。ピラミッドの位置を表す値を徐々に変化させると、ピラミッドが動いているように見せることができる。
アマチュアによるアニメーション
YouTubeなどのサイトでは、ユーザーが自作の動画を投稿できる。そこに Windows ムービーメーカー などのユーティリティを使った自作のアニメーションを投稿するアマチュアのコンピュータアニメーターが増えている。プロ用のアニメーションソフトウェアにも試用版があり、制限付きで教育目的や非商用目的で使うことができる。フリーウェアのアニメーションソフトウェアも存在する。最も簡単なアニメーション制作法としては、GIFフォーマットによるアニメーションがあり、専門サイトでなくとも容易に公開できる。
建築アニメーション
建築においても、3次元アニメーションモデルを使うことがある。従来、手描きの絵で設計をイメージ化していたが、それよりも正確なイメージが得られる。コンピュータアニメーション化することで、建築物と周囲の環境や周辺の建物との関係を把握することが可能になる。