4.30.2014

物理サブステップ機能

作成 Ori Cohen

UE4 では比較的あまり知られていない機能なのですが、物理サブステップを有効にすることができます。これを有効化すると、より正確で安定した物理シミュレーションを実現することができます。ラグドールのジッターやその他の複雑な物理アセットが、際立ってよく改善されるはずです。

サブステップは、プロジェクト固有の物理の設定で有効化できます。

物理の設定

この機能は現在も開発中です。APEX 破壊表現のサポートも完全ではありません。また、モバイルデバイスでのサポートもまだです。しかしながら、この機能によって外見と感覚が大幅に向上されるため、私たちはその完成に向けて鋭意努力しています。

どのような機能なのか?
UE4 は可変フレームレートを使用しています。可変フレームレートは、ハードウェアの拡張性に対応できる点が長所ですが、物理エンジンにとっては問題です。物理エンジンは短い固定した時間のステップで最もよく機能するからです。サブステップ機能は、トータルのフレーム時間をサブステップに分割します。そして、物理シミュレーションが、フレーム毎に複数回ティックします。サブステップの数は、サブステップのデルタタイムがどれくらい小さく設定されているかということによります。最大サブステップ時間が小さくなるほど、シミュレーションが安定します。ただし、CPU のコストは大きくなります。

実際にはどのように機能するか?
サブステップ機能は、ユーザーからは完全に隠蔽されています。したがって、物理エンジンへのコールが、補間または維持される必要があります。たとえば、ユーザーがアクタに 1 つのフレームの間に力を加え、そのフレームが内部的に N 回サブステップされるとします。その場合は、N 回連続するシミュレーションのステップの間に力を加えることによって、同じ加速を実現する必要があります。また、ユーザーがアクタのターゲット位置をセットしたとします。その場合は、複数のサブステップに渡ってそのターゲット位置を補間することによって、望ましい速度を維持しなければなりません。これらの細かな事柄はすべて、UE4 によって内部的にすでに処理されています。ただし、必要なブックキーピングに関連して CPU とメモリのコストがかかります。

もう一つ注意したい技術上の詳細があります。それは、サブステップ中におけるコリジョンのコールバックの動作です。UE4 では物理サブステップが別の物理スレッドで実行されることによって、ゲームスレッドが継続して稼働できるようにしています。最高のパフォーマンスを実現するために、最後のサブステップが実行されるまでコリジョンのコールバックを遅らせます。つまり、同一のコリジョンについて複数のコールバックを受け取る可能性があるのです。たとえば、A が B と衝突して跳ね返った場合、A と B がオーバーラップした時のコールバックと、A と B がオーバーラップしなくなった時のコールバックの 2 つを受け取る場合があります。内部的には、すべてのコールバックがキューにプッシュされます。そのため、サブステップ 1 からのコールバックが、サブステップ 2 からのコールバックより前に処理されることになります。

この機能を有効にすべきか?
その答は、あなたのゲームで何が必要かということによります。複雑な物理アセットを使用している場合は、サブステップ機能を有効化することによって、クオリティが著しく向上するはずです。一方、物理シミュレーションが他の機能に比べてそれほど重要ではない場合は、CPU 時間を他のところに当てるべきでしょう。いずれにしても、この機能によってゲームがどのような改善が見られるかぜひ試してみてください。

質問はありませんか?フォーラムでお待ちしております!

最近の投稿

UNREAL FEST EAST 2018 参加登録開始!公式サイトを公開しました

10月14日(日)に横浜にて開催される『 UNREAL FEST EAST 2018 』の参加登録を開始しました。

Holospark の Earthfall が Co-op シューティング ゲームのジャンルにイノベーションをもたらす

シアトルを拠点とする独立系開発会社 Holospark が開発した Earthfall は、太平洋岸北西部を舞台にした、4 人プレイのシューティング ...

The Mill と Monster.com が生み出したモンスターをアンリアル エンジンが操る

高い評価を受けているスタジオ、The Mill は、毛皮に覆われた巨大なクリーチャーが登場するアニメーション スポットをいくつも短期間で制作する必要に...