10/15/2010

Windows Phone 7 の Silverlight で3Dアプリ開発 Kit3D を使ってみる! ①

今回から、Windows Phone 7(以下 WP7 )のアプリケーションを少しずついろいろ作成してみようと思います。

アプリケーションの種類
WP7 ではアプリケーションで使用するフレームワークが2種類用意されており、それぞれ特徴があります。

Silverlight
XAML と呼ばれる XML で UI を記述することができます。タイムラインのような概念がありキーフレームを設定することにより、キーフレーム間の画面を Silverlight が自動的に生成してくれるため、動きのあるアプリケーションを簡単に作ることができます。また、イベントを基にアプリケーションが動作します。

XNA
ユーザ向けの Xbox360 で使用されているフレームワークで、入力されたキーの取得や描画の準備などを行う Update メソッドと、実際に描画を行う Draw メソッドが繰り返し実行されるリアルタイム性の高いゲームなどのアプリケーションを作るための方法です。Silverlight と異なり、動きなどの全ての処理を自分で書かないといけないので大変ですが、ハードが持つ本来の力を引き出しやすいと思います。

性格の異なる2種類の方法があるわけですが、明らかに生産性が高いのは Silverlight です。まずは Silverlight で書いてみようと思います。

で、どのようなアプリを作成しようか考えるわけですが、少し昔話を。

私には3年前の2007年に完成させることができなかったアプリケーションがあります。当時、川西さん、高橋さんの「XAMLプログラミング WPFアプリケーションの概要と開発」を購入して、今まで見たことがない3Dアプリを Silverlight で作ってやる!と初心者らしく手っ取り早そうな WPF でプロトタイプを作りました。動作を確認してこれは面白いと思った後、配布用に Silverlight 版を作ろうとしたときです。悲劇がおきました。

なんと、Silverlight 1 には、3D関係のクラスが一切なかったのです。

色々調べてみるとSilverlight 2 に3Dの機能が付くとのこと、そこで諦めてXAML および Silverlight を触るのをやめてしまいました。「XAMLプログラミング WPFアプリケーションの概要と開発」も後輩に無期限で貸すことに。

そして3年後、Windows Phone 7 の登場です。3年もたてば Silverlight 2 は出ているだろうと、そしてバリバリ3Dが動作するようになっていると期待してSilverlight を調べ始めました。
なんと Silverlight 4 が出ているじゃないですか。それは素晴らしい。Silverlight 2 から2倍も進化していたのです。

で、いよいよ3Dアプリを作ろうとするわけですが、念のため機能チェックです。3年前に作成した XAML を Visual Studio 2010 の Windows Phone 7 Silverlight プロジェクトに入れてみます。しかし、3Dを表示させるための Viewport3D が名前解決されません。
調べてみると Silerlight 2 から追加された3D機能は、「擬似3D」と書かれており、Grid などのオブジェクトを回転させたりする機能でした。これでは、簡単に3Dオブジェクトを表示できないじゃないかと思い、セがサターンのように擬似3Dで3Dオブジェクトの表示させようと思いましたが、疲れそうなので XNA もしくは、別の手段を探すことになりました。

そこで登場するのが Kit3D です。このライブラリは、 WPF で使うことができる3Dのクラス持っており、WPF で書かれたプログラムを、そのまま動かすことができるようです。通常の Silverlight で動いているデモを見ても、私が求めているView3D と遜色ありません。

そして、後輩に無期限で貸している「XAMLプログラミング WPFアプリケーションの概要と開発」を再度読みたくなりましたが、新品では入手困難でしたので、古本で再度入手するのでした。

次回はいよいよ、Kit3D を Windows Phone 7 (エミュレータだけど)で動かしてみようと思います。

ちなみに、Windows Phone 7 は Silverlight 3 ベースのようです。