zip対応版、MQOViewerを作ってみた。

ちょっと、このサンプルを見て欲しい。
内容的には、以前紹介した「MQOViewer」と同じだが、最初のファイル名入力ダイアログに、
「http://flash.tarotaro.org/model/nh0156.zip://kagwamine/rin01.mqo」
と入っている。
そのまま何も考えずに「表示」ボタンを押してもらえば、普通にズサさんが公開してくださっているかぐぁみねリンのモデルが表示されるという、一見以前と変わらない代物だ。

進化してます

が、実はこれ、zipファイルから中身を読み出して表示していると言う、俺の中ではかなり画期的なMQOViewerなのだ。
「http://flash.tarotaro.org/model/nh0156.zip」は、ファイル保管庫@七葉にあったズサさんのデータをそのままコピーしたものだ(crossdomainの都合で、七葉から直接とるのはムリと判断)。

元々、ファイル保管庫@七葉にアップロードされているようなzip形式のmqoファイルを見たいと言うのが根底にあった上でのMQOViewerなので、かなりドリームに近づいたと言える。

現在の制限事項は「テクスチャは、tgaかbitmapしか受け付けない」ということ。zipファイル内から画像を取り出すとき、Loader(jpgやgifを直接読み込める)を使えないので、バイナリからデコードできるtgaとbitmapしか使えないのだ。誰かがJpgDecoderやGifDecoder、PngDecoderを作ってくれたら対応範囲は増える。

ZipLoader

このzip対応版MQOViewerだが、Papervision3Dの新版であるGreatWhiteに含まれる、nochump.util.zipというパッケージを使用している。使い方は以下のブログ(多分作者)を参考にしてみた。

Here’s an ActionScript 3 based library for reading and writing zip files.
nochump.com ? Blog Archive ? AS3 Zip Library Release

で、このパッケージを元に、URLLoaderの子クラス「ZipLoader」を作成し、それをMetasequoia.as内でmqoファイルや画像をロードしているURLLoader部分で差し替えて使ったと言うわけだ。

で、URLに「foo.zip://bar.txt」と言うように、zipファイル名をプロトコルであるかのように書くと、

  1. zipファイルfoo.zipをロードする
  2. zipファイル内から、bar.txtを探し出し、Loader.dataに格納する

と言う処理を行ってくれる。なおzipファイルは一旦ロードするとキャッシュに格納され、2回目以降はキャッシュ内のデータが使われる。
多分応用範囲は広いと思うんだが、どうかね。

タイトルとURLをコピーしました