『War Thunder』:モーションブラー
2024-11-16 10:00
開発者ブログ
今回は、『War Thunder』のモーションブラーがどのようなものなのか、どうやって機能するのか、どのような制限があるのかを説明していきます。『War Thunder』の世界がシネマティックになりますよ!
モーションブラーとは?
ビデオゲームでは、各フレームは時間軸上の1つの点を表すため、映像は一から作成されます。
しかし、実際のカメラや私たちの目はこのようには機能しません。写真を撮る瞬間にも時間が掛かりますが、その必要とする時間が流れている間、世界が停止してくれることはありません。カメラのシャッターが切れるまでの途中に被写体が動いた場合、撮り終えた写真上では、被写体が動いた方向に沿って全体的にぶれて表示されます。これをモーションブラーと言います。
基本説明
モーションブラーの効果をシミュレートするためには、以前のフレームからすべてのピクセルがどのように移動したのかを把握する必要があります。これには、すべてのアニメーションや移動エフェクトが現在の位置、さらに前にいた位置を要求する必要があります。この要素が、この機能を成立させるために最も困難な点になります。しかし、嬉しいことにアンチエイリアシング効果を実装した時から、この要素は既に機能していました。また、これが対応されていなかったいくつかのアニメーションは、モーションブラーによって大きくブレている「汚れ」として表示されていたため、簡単に見つけることができました。そのため、これを特定し、すぐに修正しました!
はじめに本効果を導入するためには、既に実装されている方法を用いていますが、その詳細についてはこちら(※リンク先は英語表記となります)をご覧ください。簡潔に言うと、前回のフレームと現在のフレームでのピクセルの位置を確認し、その間にあるピクセルをぼかします。
計算をより効率的に向上させ、エッジなどをより滑らかにするため、現在のピクセル位置を越えて移動方向に向けて線をぼかします。このプロセスを更に加速させるため、より大きなピクセルのブロックに対して、その大まかな方向を基に合わせて判断を行います。
また、背景と前景をぼかすためには、各ピクセルのカメラからの距離も考慮する必要があります。背景のピクセルのぼかした線は、静止している鮮明なオブジェクトの後ろを通る場合もあります。他の状況などでは、背景を鮮明に保ちながら、前景のピクセルを前でぼかす必要もあります。1つのピクセル内で2つのオブジェクトをぼかす場合、両方をぼかす必要があるため、個別の速度も重要となってきます。
『War Thunder』における技術的挑戦
私たちが目指す結果を得るためには、ニーズによって調整が必要となってくるのは当然のことです。ピクセルをぼかす判断を行うためには、その速度を知る必要があります。しかし、1つの点において、いくつもの物体が表示されているため、明確な答えが存在しない場合はどうするのでしょうか?細心の注意を払わなければ、アルゴリズムに対して透明な物体は考慮されなくなってしまいます。
『War Thunder』では、音速の壁を破りながら、木々の上を飛行する航空機には、ガラスのコックピットや色とりどりの電球が取り付けられています。そのため、どうにかガラスの表面を認識させる必要があります。この場合において、一つのピクセル内で完全に異なる速度が存在しています。これは、ガラス自体は静止していますが、それを通して見える背景の森は非常に高速で動いているためです。
この場合、私たちは前景と背景を区別する場合と同じような方法をとりました。ガラスを通して見える物を1つのカテゴリーに分別し、直接的に見える物をもう1つのカテゴリーに分別しました。1つのカテゴリー内の物を、その上に存在するもう一つのカテゴリー内の物をぼかすのではなく、カテゴリー内の物をまとめて、ぼかせるようにしました。
これにより、ガラスを通しての背景はぼやけているが、ガラス自体の輪郭は鮮明に保つことができるようになりました。
注意:この記事の作成時点においては、モーションブラーが最大に設定されている場合にのみ、透明な物体に対しての特別な処置が適用されています。 |
制限
各ピクセルの速度は一定でしかないため、高速で移動する透明な物体に対して、ぼかしは適用されず、透明な物体を通して見える背景のみがぼやけます。これにより、そのような表面に対しての映し出される反射は、背景を基にぼかすことしかできないことを意味します。
完璧なエフェクトを作成するためには、完璧な情報が必要になります。画面上のピクセルの過去と現在のフレームの位置が分かっていても、その2つの間でどのような経路を辿ったのかがわかりません。そのため、まるで真っ直ぐ進んだように一直線にぼかすことになり、ほとんどの場合これで成立します。1つの重要な制限としては、地上車両の車輪にあります。車輪上の1つの点は、1フレーム後には車輪の反対側に移動することもあります。そのため、点と点を一直線に繋げることは現実の動きからはかけ離れてしまいます。
現状、この問題はまだ解決しておらず、車輪には別軸の原理で、モーションブラーを成立させるための独自の方法を模索する必要があります。
果たして現実的なのか?
モーションブラーは、高速で移動するオブジェクトに適用されるだけでなく、カメラ自体が移動した場合でも発生します。フィルム上ではこれは一般的に用いられるエフェクトですが、目視の場合、目は物体にロックし、世界をより安定して捉えてくれます。逆にビデオゲームのぼかしは、シネマティックに表示されます。つまり、実際のカメラで撮った映画のように映し出されますが、これは肉眼で世界を見た場合の捉え方とは異なります。
また、人間の視覚を上手く再現するため、カメラによるモーションブラーを無効に設定できるオプションを追加しました。これは、通り過ぎる航空機や爆発によって飛び散る破片など、高速移動する物体をぼかしながらも、普通に辺りを見渡した場合には映像が鮮明に表示されることになります。
カメラのぼかし無効時の砲塔旋回 | 最大モーションブラー適用時の砲塔旋回 |
モーションブラーはゲーム体験にとって良いこと?
この質問は良く耳にします。そして、内部的にも多くの議論を重ねてきました。一方は動的な感覚を表現し、ゲーム体験の没入感を高める要素だと主張します。もう一方では、移動する目標に命中させるための精度が減少するため、ゲームの競技性として重要な命中率を下げてしまうと主張しています。この場合どちらの言い分も正しい意見です。この視点は、好みやこのゲームで何を求めているかによって変化するためです。勝利をつかみ、ランキング上位を目指すのであれば、この機能は邪魔になってしまうため、無効に設定してください。皆さまの選択を尊重します。しかし、もう十分勝利し、リプレイからハイライト動画を作成したい、または飛行している時にスピード感を味わいたい場合など、このモーションブラーを最大に設定にすることで、映画のようなエフェクトを適用させることが可能となるでしょう。
The War Thunder Team