ソラマメブログ

2009年10月30日

SLらくがきボード解説

少し遅くなりましたが、SLらくがきボードの解説エントリです。LSLCon2009で、アイテムデモをやったので、そのスライドを使って解説します。


まず全体像から。

メインパネル

  1. ボードRez時の初期登録
  2. Webサイトのデータ表示
  3. Flashお絵かきツールからの画像投稿
  4. SLのメディアURLで表示



ここからは、各プロセスを見ていきます。

パネル1
まず、ボードの初回起動時のみ、自分のUUIDをオブジェクトの説明欄に書き込んで、以降これをWebサーバ上でのIDとして使用します。このアイデアは、Web連携するときのオブジェクトの識別子のコメントで、ぽぴさんに教えてもらったやり方です。その後、llHTTPRequestで、このIDと、Http-in用のURLを送信してWebサーバへレコードを登録します。Http-inのURLは様々な要因で変わってしまうため、on_rezイベント、changedイベント(CHANGED_REGION, CHANGED_TELEPORT, CHANGED_REGION_START)でURL再取得し、Webサーバのレコードを更新しています。

パネル2
Web上のデータ表示ですが、ページは2つだけです。トップページでは、1度でも設置されたことがあるボードの内容が表示されます。お絵かきページでは、Flashのお絵かきツール上に現在の画像を表示して編集可能にしています。最初はペンだけの予定だったのですが、凝り出すと止まらなくなって、ずいぶん高機能になり、制作時間がふくれあがりました( ̄□  ̄ ||

パネル3
投稿時には、Flash上でPNGファイルを生成します。BitmapDataクラスに画像の内容が保持されているので、それをPNGEncoderクラスのencodeメソッドに渡してあげればOKです。そして、GoogleAppEngineへアップロードするわけですが、実はGoogleAppEngineには、ファイルシステムにデータを保存できないという制限があります。そこで、DBのBLOB型のカラムにPNGデータを登録しています。ちなみにDBは1レコード1MBまでしか入らないので、詳細なPNGデータだともしかしたら登録できないこともあるかもしれません。2009/10/30現在で、最大が28KBなのでまず大丈夫だと思いますが・・・。

パネル4
投稿時にSLで即時に更新を反映するため、Http-inを使って更新通知を送っています。ただ、GoogleAppEngineからは、80、443ポートへしかリクエストを投げれないという制限があるので、SLのURLには直接接続できません(今のところ、らくがきボードのHttp-in全URLで12046ポートが使用されています、これ固定なのでしょうか)。仕方ないので、一度YahooPipesを経由させることで、これを回避しています。Pipes経由でボードが無事、更新通知を受け取ると、llParcelMediaCommandListで、メディアURLを更新します。このとき画像のURLをコロコロ変えたくないので、ずっと同じURLを設定していたのですが、これだとキャッシュが効いてしまって更新されませんでした。そこで、クエリストリングにllGetUnixTimeで取得したタイムスタンプを追加して、毎回URLが異なるように修正しました。


管理工数を減らすために、GoogleAppEngineを選択したのですが、意外とハマリどころが多くて作成の方に手間がかかりましたね( ̄□  ̄ || でも、自宅サーバで運営していくよりは楽にやっていけるはずだと思ってます。あとは、無課金でどこまでいけるかですね。

お絵かきツールの方は、こつこつ機能が使えるようにしてます。とりあえず以下はできるようになりました。
  • レイヤーの非表示・ロック
  • レイヤーの透過・ブレンドモード
  • スポイト

アンチエイリアス、滑らか補正などはまだです。全機能完成したらまたここで連絡します( ̄∇  ̄ )



同じカテゴリー(小物)の記事画像
SLらくがきボード、お絵かきツール完成!
LSLCon2009開始!SLらくがきボードを展示しました
ぐらぐら積み木のイベントがあります
ジェンガの仕組みなど書いてみる
ジェンガ作りました
同じカテゴリー(小物)の記事
 SLらくがきボード、お絵かきツール完成! (2009-11-12 07:27)
 SLラクガキボード機能追加とアイテムデモのお知らせ (2009-10-18 05:46)
 LSLCon2009開始!SLらくがきボードを展示しました (2009-10-10 19:35)
 ぐらぐら積み木のイベントがあります (2009-06-05 02:19)
 ジェンガの仕組みなど書いてみる (2009-01-04 14:48)
 ジェンガ作りました (2008-12-31 17:17)

Posted by sabro at 23:08│Comments(0)小物
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。