プラットフォーム:
- C# を使用した .NET 3.5
- WPF
- 3Dツール
3D モデルの回転とパンのために、Codeplex サイト ( 3D Tools )の 3DTools を使用しています。これはうまくいきます。Trackball クラスには、マウス ホイールでモデルをズームするためのメソッドも含まれています。ただし、このメソッドは、常に Point(0,0,0) をズームの中心としてモデルをスケーリングします。しかし、マウスポインターの座標にズームしたいと思います(Googleマップのように、ここではマップの中心ではなくマウスポインターの座標にズームします)。
この問題を解決するためにさまざまなことを試しました:
- Trackball クラスの ScaleTransform3D オブジェクトのCenterX/Y/Zをマウスポインタの座標に設定→ 動かなかった
- ズーム後にモデルをパン-> 機能しませんでした。マウスポインターの座標が変わらないため、パン距離を計算できません。
- ズーム前の MousePointer 座標 -> 334、210
- Trackball クラスから Zoom(-e.Delta) を呼び出す
- ズーム後の MousePointer 座標 -> 334、210
- MousePointer Coordinates が 330, 205 などに変更される場合、モデルを左に 4 ポイント、上に 5 ポイントパンすることができます (私のプログラムには 2D モードもあり、そこで座標が変更されます)。
- カメラの位置を移動-> 機能しませんでした。現在のカメラ位置と MouseWheelEventArgs.Delta に基づいて、新しいカメラ位置を計算しました
この問題を解決する方法を知っている人はいますか?