다음을 통해 공유


WPFでモーフィング

WPFではフェイスアニメーションのような3Dモーフィングはサポートされていません。しかし、アルゴリズム的にコードで精製できるような図形であれば、動的に頂点を生成できるので、似たようなことが可能です。

例えば、矩形の頂点のテクスチャ座標をアニメーションの毎フレームで生成して、入れ替えてやればテクスチャをゆがめるようなアニメーションが可能です。

private Point GetTextureCoordinate(double t, double y, double r)

{

    double w = Math.Sin(r)*0.1;

    double u = t*0.5+0.5;

    u = u + Math.Cos(u*10.0)*w;

    double v = y*0.5+0.5;

    return new Point(u, v) ;

 }

あるいは、次のように頂点を計算すれば、円柱や球が変形するようなアニメーションも可能になります。

internal Point3D GetPosition(double t, double y, double offset)

{

    double x = Math.Cos(t);

    double z = Math.Sin(t);

    offset = y*y * offset;

    return new Point3D(x+offset, y, z);

 }