2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unityのinterpolateオプションを図にしてみる

Posted at

描画補完処理について探ってたところ、unityのRigidbodyInterpolationが勉強になりそうだったので、理解のため調べてました。

RigidbodyInterpolationについては以下の記事で詳しく書かれています。
https://ekulabo.com/rigidbody-interpolate

こちらの記事でも軽く触れられてますが、それぞれのオプションの振る舞いについて具体的な例題+図式を交えて書いてみようと思います。
といっても基本的にはこちらのアンサーの簡約+図式化になります。
https://answers.unity.com/questions/767134/physics-what-is-interpolate-extrapolate-discrete-c.html

例題

  • 物理演算処理(fixedUpdate)がt=0.0s, t=0.5s, t=1.0s, t=1.5s, ...というような一定タイミングで計算されるとする。
  • ここでt=1.2sのときに描画処理を行われた際、実際どのように描写されるか?

image.png

none(デフォルト設定)

image.png

最も直近であるt=1.0s時のパラメータを使って描画します。一切補間処理をしないので当然負荷も軽いですが、見た目がカクカクしがち。

extrapolate(外挿補間)

image.png

オブジェクトのvectorなどを使えば、次に来る位置は予測できます。このオプションではそれを利用してt=1.2時の位置を予測描画します。
noneに比べてスムーズになりますが、あくまで予測なので状況によっては変な位置に描画される可能性があります。

interpolate

image.png

このオプションに設定してると最新ではなく、敢えて1ステップ古いパラメータを使って描画してると考えられます。
例えば描画タイミングがt=1.0sだった時、最新のパラメータは1.0sのものになりますが、そこであえて一個前のデータであるt=0.5sのときのパラメータを使用します。そうすることでt=1.2sの時は、0.5~1.0sの2点間での補間によって算出可能になります。(t=1.2sを一ステップ前の基準で考えるとt=0.7s相当)
算出済データを使うのでextrapolateと比べて補間精度が高くなります。ただし負荷も高めとのこと。

注意

interpolationの具体的振る舞いについては公式リファレンスでも詳細が無いため、あくまで想像になることに注意。ただ、

Interpolation will always lag a little bit behind but can be smoother than extrapolation.

という公式の表現や、こちらの記事での実験画面でもinterpolateオプションでは遅れて描画されていることから、過去データを使っていることは間違いないようです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?