2

Maya、Blender などと同様に、マウスで移動できる 3D ビューポートを備えた DCC のようなツールに取り組んでいます。

数学の一部について助けが必要です。

私が突き止めようとしているポイントは2つあります。1 つ目は、ターゲットまでの距離に基づくドリー速度です。小さいスケール (dist=10^-3 など) ではドリーが速すぎ、大きなスケール (dist=10^6 など) ではドリーが遅すぎます。エフェクト全体をスケーリングするフラットな「カメラ速度」入力が欲しいのですが、すべてのスケールでカメラは同じように感じられるはずです。0.1 ユニット離れているか 1000 ユニット離れているかは関係ありません。特定のマウス デルタに対して同じ速度でターゲットに近づいているように感じられるはずです。

もう 1 つはカメラのパンニングで、これもカメラの距離に基づいています。事実上、カメラのターゲットがマウス カーソルを、カメラとdistance_to_target離れた単位に位置合わせされた平面に沿って完全に追跡するようにします。遠近法の歪みがこれに影響するかどうかはわかりませんか?

入力は次のとおりです。

// Distance in world units to camera's centre of interest
real distance_to_target

// Number of pixels mouse has moved horizontally since last frame
int mouse_delta_x

// Number of pixels mouse has moved vertically since last frame
int mouse_delta_y

// The vector of the mouse delta, normalized into -1 to 1 space based on
// viewport dimensions where a value of (-1,-1) or (1,1) means the cursor
// moved from one corner of the viewport to the other, or further, since
// the last frame.
vec2 mouse_delta_vector

// Scale the dolly speed
real dolly_speed

通常、私は経験的にこのようなことを行い、好きなものが見つかるまでさまざまな値を試しますが、そのためには理論を試す時が来たと思います.

4

1 に答える 1

4

問題 1 については、単純に比例速度スケーリングを使用します。

    currSpeed = currDistToTarget * refSpeed / refDistToTarget

ここで、refSpeed と refDistToTarget は、実験によって許容できると思われる値です。

問題 2 についても、考え方は同じです。つまり、距離で重み付けされた角度を計算します。FOV が変わらない場合は、上記と同じ線形速度スケーリングを試すことができます。ここで重要なことは、refDistanceToTarget と refSpeed の正しい値を見つけることです。

于 2012-07-03T16:57:23.380 に答える