WPFでモーフィング

Published 22 June 07 06:57 PM | hiroyuk 

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

 }

Comments

No Comments
Anonymous comments are disabled

About hiroyuk

マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。

Search

This Blog

DirectX 情報

Silverlight 情報

Windows 情報

WPF 情報

並列コンピューティング情報

著書

Syndication

Page view tracker