LoginSignup
0
0

More than 1 year has passed since last update.

Visual Effect GraphのLinear dragとは? Keijiroさんのコード読み

Last updated at Posted at 2022-01-22

Linear Drag とは何か?

Visual Effect Graphの公式ドキュメント によると,

Linear Drag Blockは、パーティクルに力を加えて、方向を変えずに速度を落とすことができます。

と書かれていて,ここでのdragとは抗力らしいです.つまり空気抵抗や摩擦に近いものっぽい.

実際にやってそうな計算

KeijiroさんのKvantSwarm を読んでいて,Linear dragが何かがおおよそわかりました ↓

 //現在のフレームで設定する速度 = (前のフレームの速度) * (抵抗力) + (加速度) * (時間 dt)
velocity = velocity * _Drag + (force) * _DeltaTime;

現在のvelocityの方向は変更せず,大きさだけ若干落とすというやり方になっていました.ここでの _Drag の数値として,C#側から Mathf.Exp(-_drag * deltaTime) が設定されていました(実際の値はMathf.Exp(- 2 * 0.025) = 0.951..でした).

dragの値における減少度合いは以下の通りです.

math.exp(- 0 * 0.025) => 0.0
math.exp(- 100 * 0.025) => 0.08208..
math.exp(- 1 * 0.025) => 0.9753..
math.exp(- 10 * 0.025) => 0.7788..
math.exp(- 100 * 0.025) => 0.08208..

という感じです.ちなみにdragの値をマイナスにすると抵抗ではなく,加速的な状態になるので注意が必要です.

math.exp(- (-1) * 0.025) => 1.0253..
math.exp(- (-10) * 0.025) => 1.0253..
math.exp(- (-100) * 0.025) => 12.182...

用途

ちなみにKvantSwarmでは,特定のオブジェクト(Attractor objectと呼ばれる)に追従するトレイルの速度を決める際に使われていました,

linear dragがないと,速度が強すぎてAttractor objectよりも遠くにトレイルがいってしまう(発散する)ので,その速度を落とすのにLinear dragが使われていました.

0
0
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
0
0