WPF 3D Rotater

Healthcare Prototype を参考にして、3D でくるっとまわるコントロールを作ってみた。4/1 らしいネタかもw

VisualStudio2008SP1のソリューション (4/2に更新しました)
http://siokoshou.googlepages.com/Rotate3D3.zip


とにかく動かすことだけを考えて作ったので、エラーチェックもおろそかな雑なものなので参考程度でどうぞ。
3D エフェクトはめちゃめちゃ楽しい!前のめりになりながら一気に読んで作ってしまった。肝の部分は 3D の四角い板を作って、その表裏にコントロールの見た目を貼り付けて、後は AxisAngleRotation3D の角度をストーリーボードでアニメさせるだけでした。そのまわりの 3D のごちゃごちゃした部分は難しい。3D のあたりは Healthcare から借りてきてちょっといじっただけ。あ、Healthcare の EULA は不明なんだけど、ソースが公開されてるんだからいいほうに解釈しといた。
VisualStudio でデバッグ実行すると、バインディングから Cannot find governing ... なんたらってエラーが表示されるけど、無視していいらしい。バインディングは正常にできてる。
Healthcare では横にまわった後、レイアウトも変わるのでこれより複雑なコードになってて、さらにコントロールの作り方がだいぶおかしかった。ベータだから何かうまくいかなかったのか(一部にそんなコメントが…)、単にクイックハックだったのか。Healthcare で横回転がぎくしゃくして見えるのは、垂直になるところでアニメが2分割されてて、それなのにアニメの徐々に加速して最後はまた徐々に減速する設定をしてたせいっぽい。さらに垂直になったところでレイアウト変更を行うもんだから、違和感ますますアップ。
これをふまえて、このコントロールでは表と裏のコントロールを同じサイズにして、一気にまわすようにした。まあまあきれいに見える。ついでに SpecularMaterial でテカテカにした。アニメの開始と終了のとこはちょっと違和感があるw まあ、早くまわせば気にならないからよしとしとく(^^;
解決できなかった問題があって、サイズが変わるとカメラ位置と横のスケールを調整しないと 2D と 3D の切り替え時にサイズが変わってしまう…。手動で調整するしかないorz

動かして遊んでみてー。あと、ここはこうしたほうがいいよってアドバイスがあればコメントください。魔改造も歓迎。いやむしろ、推奨。