ページ

2009年12月22日火曜日

[Silverlight] Silverlight 4 で AR

World# - Real Time 3D Augmented Reality with Silverlight より。
Silverlight 4 では webcam API がサポートされるってことで、当然のように AR している人がいましたw
完全にマネージド (C#) な NyARToolkitCS という ARToolkit を使っているそうです。
また、3D モデルのレンダリングに Balder というマネージドなゲームエンジンを使っているそうです。

上記は実際に Silverlight 4 で動かしてるところをスクリーンキャプチャしたものだそうです。
記事に 「スクリーンキャプチャソフトがリソースをえらく食ってる」 といったことが書かれてますので、カクついて見えるのはキャプチャムービーだからみたいです。
記事によると 50~60fps でスムーズに動いているとありますね。


2009年12月17日木曜日

[Silverlight] Wiki-OS と Userware API

Wiki-OS を作ってる Userware 社による Wiki-OS などの紹介ムービー。
英語ですが絵を見てるだけでもだいたいわかるんじゃないかと。

2:10 くらいから始まるプロダクト & デモでは以下のものが紹介されています。

  • Wiki-OS … そのまんま Wiki-OS ですね。
  • Wiki-OS Enterprise … どうやら Wiki-OS サーバを自分で立ち上げることができる模様。ムービーでは .xbap になってるので WPF 版ですが、これは WPF 版と Silverlight 版があるのかな?
  • Userware API … どうやら自分のアプリケーションに Wiki-OS の機能を組み込める模様。ムービーではイメージエディター (自分で作ったアプリ) のフィルターを Userware API 対応にしておき、「他に欲しいフィルターがあったら誰か作ってね」 なんてことをしています。(「Create New Filter...」 で Wiki-OS と同じ C# コードエディターが開きコードを書ける。もちろん既存のコードを編集することも可)
  • Userware for Office … Microsoft Office のアドインを Userware API なコンポーネントでできるようにするもの。

いやぁ、おもしろいなぁ。
特に Userware API なんてすごく興味深い。実用的に使えるのかどうかはまだ何とも言えない気がするけど、けど、なんかわかんないけど 「おもしろそう」 と感じるw
ちなみに、http://www.userware-solutions.com/ にあるように Wiki-OS Enterprise、Userware API、Userware for Office は有料な商品みたいです。

ところで、ムービーの 3:00 くらいのところ。
Wiki-OS アプリをブログに貼り付けてみるというデモですが、”貼り付けてみるテスト” なんて日本語が見えたので 「おぉ、日本語!」 って思ったんですが、「あれ?このブログ、見覚えが、、、」
うはっ、ここじゃんw


[Silverlight] Silverlight を使った Virtual DVD

Silverlight-powered Virtual DVD now available from Tesco より。
このタイトルを見たときはさっぱり意味がわかんなかったんですが、記事によると 「9月に Microsoft と Tesco が次世代のホームビデオ提供方法を Silverlight を使って行う予定とアナウンスした。”Virtual DVD” は物理的な DVD/Blu-ray を購入した Tesco の顧客がそのディスクとまったく同じものの Silverlight 版をダウンロードできるようにする仕組み」 ということだそうです。
記事には書いてないんですが、やっぱり Live Smooth Streaming を使ったものなのかな?
ただ、チャプター、マルチランゲージ、字幕もサポートされるとありますね。Live Smooth Streaming ってこういったこともできるようになってるのかな?

ところで、つい最近ほとんど同じようなニュースを見たような気が、、、
Amazon、DVDやBDを買うとその場でデジタル版を観られるDisc+ On Demandを開始
これか。


2009年12月11日金曜日

[Silverlight] Silverlight 4 の COM 呼び出しはアウトオブプロセスな COM サーバのみらしい

Silverlight 4 COM Support and 32/64 bit machines ? the C64 Emulator より。
以前に Commodore 64 エミュレータを Silverlight で作ってる 方の記事を紹介しましたが、その方のその後です。

ジョイスティックなんかをエミュレートするためにタッチ・インターフェースでできるようにしようとしたとのこと。
このために Windows API Code Pack を使って (おそらく C# で) DLL を作り、これを regasm で COM として登録。そして、Silverlight 4 の COM 呼び出しを使ってこの COM を呼び出すようにしたようです。
(Silverlight から直接 API を呼び出すことはできないため、COM 経由で呼ぶようにしたということですね)
で、パフォーマンスも問題ないしうまくいったと。

が、Silverlight の PM の一人である Ashish Shetty 氏にこのことを話したところ驚かれたようです。こういうシナリオはサポートされてない、と。
太字で強調されてますが、COM 呼び出しはローカルマシンにインストールされているアウトオブプロセスな COM サービスに使うことが前提になっていると。

PDC でこのデモを動かしてやろうとしたけどデモ機が Windows 7 64bit だったので動かなかった、なんてことも書いてありますね。
インプロセスな COM の場合、64bit アプリでは 64bit の COM、32bit アプリでは 32bit の COM しか呼び出すことができないからですね。
って、あれ?
Silverlight 4 の Out of Browser は 64bit OS だと 64bit なの?
いや、そもそも regasm で登録した COM って 32bit なの?64bit なの?(アセンブリは AnyCPU だとして)
気になったので検索してみた、、、
おぉ、

  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe
  • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe

があるのか。
Framework の方で regasm する 32bit COM、Framework64 の方だと 64bit COM になるのね。知らんかった。

ちなみに、アウトプロセスな COM サーバーの場合は間にマーシャリングが入るため違うビット幅の COM サーバーも問題なく呼び出せます。

ちょっと話がそれましたが、インプロセスな COM に使うことを想定してないというのはちょっと意外。
Having fun with Silverlight 4 Beta and the Speech APIs
こちらの人なんて Speech API を呼び出して Out of Browser な Silverlight 4 アプリにしゃべらせたりしてるし。
# Sapi.SpVoice はインプロセスな COM でした。

おまけ
Silverlight 4 で dynamic 使うときは Microsoft.CSharp.dll を参照しないといけないのか。


2009年12月9日水曜日

[Silverlight] WriteableBitmapEx が CodePlex で公開

http://writeablebitmapex.codeplex.com/
WriteableBitmap に便利なメソッドを追加する WriteableBitmapEx が CodePlex にて公開されています。

Silverlight 3 では WriteableBitmap クラスを使ってイメージを描くことができるようになりました。
こいつには、UIElement を Render するという方法と、イメージのバイト配列にアクセスして各ピクセルの色をいじるという方法で絵を描けます。
けど、あるのはそれだけなので、線分ひとつ描くのにも、System.Windows.Shapes.Line を生成してそいつを Render するか、自分で DDA とかを使った DrawLine のようなメソッドを用意するかしないといけないんですよね。

というわけで、DrawLine などを一通り用意したのがこの WriteableBitmapEx です。
今のところ用意されているのは、

  • Clear
  • SetPixel
  • DrawLine
  • DrawPolyline
  • DrawTriangle
  • DrawQuad
  • DrawRectangle
  • DrawEllipse
  • DrawEllipseCentered
  • Blit
  • ToByteArray
  • FromByteArray

と言ったところです。
すべて拡張メソッドとして実装されてますのでかなり自然な感じで使うことができます。
ソースを見ればすぐにわかりますが、「内部で UIElement を作って、、、」 なんていう方法ではもちろん無く、DDA などのアルゴリズムを使ってピクセル単位で描画しています。
トップページ の “Performance!” のところに 「WriteableBitmapEx のメソッドは Silverlight の Shape よりずっと速い。たとえば、WriteableBitmapEx の DrawLine は System.Windows.Shapes.Line 要素を使うより 20~30倍速い。だから、もし多数の図形を描く必要があり、アンチエイリアスや Silverlight シェープのプロパティなどが必要ないのであれば WriteableBitmapEx のメソッドを使うのがいいだろう」 といったことが書いてあります。

なお、Downloads のところにあるのはバイナリだけでした。
Source Code の方からソースをダウンロードすればサンプルなども含まれています。
ドキュメントが見当たりませんが、まぁ、ソースを見ればすぐにわかるでしょう。


2009年12月7日月曜日

[Silverlight][.NET] Silverlight 4 と .NET Framework 4 の互換性

PDC の Scott Guthrie 氏のキーノートスピーチでも 「Silverlight 4 と .NET Framework 4 のアセンブリには互換性がある」 と言ったことがちらっと触れられてましたが、それの詳細が CLR Team Blog にありました。

Sharing Silverlight Assemblies with .NET Apps
Silverlight 4 用にコンパイルしたアセンブリと .NET Framework 4 用にコンパイルしたアセンブリには互換性があるようになっているそうです。
ただ、そうは言っても、たとえば .NET Framework 4 にしかないクラスを呼び出しているアセンブリを Silverlight 4 で動かすことは当然ながらできません。(もちろんその反対も)
この点については、Silverlight 4 の

  • Mscorlib
  • System
  • System.Core
  • System.ComponentModel.Composition
  • Microsoft.VisualBasic

のクラスを使っている限りは .NET Framework 4 でも問題なく動くようです。
.NET Framework 4 の方が機能が多いため、.NET Framework 4 のこれらのアセンブリのみを使用しているアセンブリが Silverlight 4 で動かせるとは限らないようですので注意。
なので、Silverlight 4 と .NET Framework 4 の両方で使えるようにしたい場合は Silverlight 4 のプロジェクトとして作った方がいいようです。

これと関連して、
Silverlight 3 & 4 Library Sharing with .NET 4.0 Library or WPF
これを見ると、どうやら Silverlight 4、.NET Framework 4 からは Silverlight 3 のアセンブリも参照できるみたい。

ただ、
On Silverlight 4 Beta / Silverlight 3 backward compatibility
によると、

  • Silverlight 4 ランタイム上で Silverlight 3 アプリが動くときは Quirks Mode になって Silverlight 3 互換になる。
  • Silverlight 4 アプリの中に Silverlight 3 アセンブリが含まれている場合は Quirks Mode にはならない。

ということになるそうです。(まぁ、そりゃ当然という感じですが)


2009年12月3日木曜日

[日本語入力] 思いどおりの日本語入力 - Google 日本語入力

思いどおりの日本語入力 - Google 日本語入力
なんかすごい。
開発メンバーがハンパ無さそう。

というわけでさっそく入れてみた。
64bit はまだ未対応ということなので Virtual PC 上の XP 32bit へ。
いろいろおもしろいし、常用したいと思うくらいな感じ。

と思ったら大きな問題あり。
私はかな入力なんですが、「っ」 を入力しようと Shift+「つ」 を押すと 「Z」 になってしまい、しかも、それ以降は勝手に半角英数になってしまう。
他にも 「ぃ」 も同様。(「ぁ」 は入力できるのでかな入力時の 『Shift+英字キー』 がおかしいのか?)
あと、「-」 が Shift キーを押しながらじゃないと入れられない。なんで?

後者の方はまだしも、前者の方は 「これじゃあ、まったく使えない」 というレベル。
これって Virtual PC 上だからとかあるのかな?
ちょっとでもかな入力で試してみればすぐわかりそうなもんだし。うーむ。

追記
上記の現象は 「メモ帳」(notepad.exe) で発生しました。
けど、IE のテキストボックスやワードパッドでは正常に 「っ」 が入力できるようです。「-」 も Shift キーを押さなくても入力できます。
いくつかのアプリで試してみたら、どうも正常に入力できるものとできないものとマチマチです。

で、その後、Virtual PC を再起動したりとかいろいろしてたら再現しなくなりました。(いつも正常に入力できる)
何かしらの条件によって発生するのかもしれませんが、とりあえずかな入力でも大丈夫そうです。
(あとは 64bit 対応版さえ出てくれれば)