1

私は WPF 3D プロジェクトに取り組んでおり、複数 (1 ~ 20 インチ) の ModelVisual3D オブジェクトをアニメーションでシーン内を移動させることができます。各 ModelVisual3D には、移動ごとに適用される RotateTransform3D と TranslateTransform3D の両方があります。また、各 ModelVisual3D オブジェクトは互いに独立して移動します。

これを行うために、オブジェクトを移動するたびに、各 ModelVisual3D をスピンして、回転と移動変換の両方の動きに対して二重のアニメーションを設定します。次に、両方の変換で (オブジェクトごとに) BeginAnimation() を呼び出します。

つまり、20 個の ModelVisual3D オブジェクトがある場合、40 個の異なる変換オブジェクトで BeginAnimation() を呼び出すことになります...それらを移動する必要があるたびに。

これはうまく機能しますが、もっと良い方法があるはずです。複数の ModelVisual3D オブジェクトの複数の変換を 1 つの「変換グループ」オブジェクトにグループ化し、その上で Begin を呼び出すことができるものはありますか?

また、ストーリーボード オブジェクトの使用も検討しましたが、これはすべて C# で行っています (ここでは静的な xaml はほとんど使用されず、ほとんどの UI は動的に作成されます)。ストーリーボード オブジェクトは、単一の ModelVisual3D オブジェクトにしか使用できないようです。したがって、最良のケースとして、BeginAnimation を呼び出すストーリーボード オブジェクトを 20 個まで減らすことができます。

それとも、私がやっていることは最善のことですか?

4

1 に答える 1

0

RotateTransform3D と TranslateTransform3D の両方をTransform3DGroupに格納できます。これにより、BeiginAnimation の呼び出しが 20 回に減るはずです。

于 2009-07-29T21:07:55.210 に答える