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);
}