2009年4月14日火曜日

Processingで3Dはちゅねがネギ振り


公開しているメタセコイアローダfor Processingを用いて、”3Dモデルのはちゅねミクがネギを振る”プログラムを作ってみました。

こちらへ

単純にマウスクリックで1回ネギをふるのですが、
ただ振るだけではつまらないので、ネギ振りの定番曲、IevanPolkka(miku) by Otomania(http://www.otomania.net/)に合わせてネギを振れるようにしました。

曲はネギを振り続けると流れますが、振るのをやめると曲も止まります。
ネギの1スイングが終わる頃にマウスをクリックすると続けてもう1回振ることができます。
目安としては、ネギが再下点から上昇する頃に入力するとうまく行きます。

毎回クリックは面倒だという方のために、オートモードも用意してあります。

3Dモデルならではの視点変更や回転などいろいろ機能をいれてあります。
ソースコードも公開していますので、参考にして頂ければと思います。

----------------
モデルデータ '三次元CG@七葉'http://nanoha.kirara.st/3dcg/
モデル作成:ズサさん, モーションデータ:4169さん

MqoView for Processing Ver0.4 リリース

ZIP圧縮されたMQO形式のデータ読み込みに対応をしました
ダウンロードはこちらから

今回の対応により、
HttpZipContentProvider, LocalZipContentProviderのクラスが追加になります。

HttpZipContentProviderは、コンストラクタを呼び出した時に、指定されたZIPファイルをメモリ上に展開します。以降の書庫内のファイルへのアクセスは、このメモリ上の展開データを読み込んで処理をします。このため、展開済のZIPファイルへのアクセス時に新たな通信は発生しません。

同じ書庫で別のモデルにアクセスする場合は、メンバ関数、changeEntry(string Filename)を使います。
新たにコンストラクタを呼び出しても良いのですが、呼び出し時にネット上のZIPファイルにアクセスするため、毎回通信が発生してしまうため、せっかくZIP圧縮しても無駄な通信が多く発生してしまいます。
※テクスチャデータ等は同じZipファイルに含めてください

このライブラリ(MQOLoader.jar)を用いて、複数のデータをメモリに読み込んでおいて、
適切なタイミングでモデルデータを描画すると、パラパラ漫画風アニメーションを行うことが可能です。
このとき、多くのモデルデータをサーバから読み込む必要があり、通信環境によっては非常に時間がかかってしまいます。これを少しでも緩和させるために、ZIPファイルの読み込みに対応しました。

MQO拡張子等が受け入れられないサーバー等は、ZIPファイルで固めてやることで簡単にUploadもできるようになります。

~2009/4/15追記
コンパイル環境を間違えていて、一部環境で動作しませんでしたので、正しくコンパイルをしなおし、バージョンを0.4aにしました。ご迷惑をおかけしました

2009年4月5日日曜日

ArduinoでPhysical Computing 購入・導入編

Physical Computingを容易にするツールとして、Arduinoが良いらしいという話しを聞いて早速入手して使ってみました。
Arduinoは簡単に言えば、アナログ・デジタル信号およびシリアルのIFを備えた回路キットという所でしょうか。

公式サイトはhttp://www.arduino.cc/

Arduinoに各種モジュールを接続し、シリアル通信によりPCと接続、これらのモジュールを制御したり、センサーなどから値を受け取ったりする様な使い方をします。
これまでも、シリアル接続でいろいろできていたわけですが、そのたびにドライバを入れたりカスタマイズしたコードを書く必要がありましたが、Arudinoを使うと、その部分が共通化されているので、この部分の労力を省くことが可能です。
個人的には、なんてすばらしいモノだ!と思っています。
(これ以上の詳しい説明は他のサイトに譲ります)

Wikipedia- Arduino


Arduinoはオープンソース ハードウェアになっていて、ハードウェア設計情報は無料で公開されており、本家以外からも多数互換製品が発売されていて用途に応じて使い分けが可能です。

公式サイトでもたくさんの種類が紹介されていますが、
まず手っ取り早くトライしてみるには、USBモジュールがあらかじめ組み込まれている、Duemilanoveが良いと思います。
アナログ入出力5ピン、デジタル入出力13ピン,電源供給5V/3.3VのFcc、USB入出力と一通り必要なモノがそろっています。
ページはこちら


ArduinoDuemilanove

さて購入ですが、筆者、現在アメリカ在住のため、日本ではどのように入手するのか詳しい事はわかりません。なお、こちらでは、Sparkfunを利用しています。http://www.sparkfun.com/
日本で言えば、秋月みたいな所ですかね。独自にチップモジュール(実験キットのようなもの)等も販売していて、こちらでいろいろ購入しています。
後に紹介するセンサ等も、チップ単体では実装などいろいろ大変なので、こちらでキット化したものを利用しています。
Sparkfunの製品は、日本へも発送を行っているようです。

Arduinoに関しては、日本ではこれらのサイトから購入できるようです。(Ardrinoの公式サイトに紹介されている所です)
メカロボショップ、http://www.mecharoboshop.com/Products/physicalcomputing/arduino/

スイッチサイエンス、http://www.switch-science.com/products/list.php?category_id=6

ストロベリー・リナックス、http://strawberry-linux.com/catalog/?c=arduino

これらのサイトを見てみて分かったのですが、これらのサイトでも、Sparkfun製のが取り扱われているみたいですね。日本に帰ってもここの製品の入手が容易そうで、これはうれしいかも。

さて、今後Arduinoを使ってPhysicalComputingをいろいろ試してみたいと思う場合は、Arduino Proto Shield Kitを一緒に購入するか、Gainer (SparkFunElectronics版)やBoarduino シリーズの購入も検討した方がよいかとは思います。

なぜなら、最初から半田実装というわけにもいかず、ブレッドボードにていろいろ実験をすることになるわけですが、PhysicalComputingなだけあって、回路自体を結構振り回す事が多くて、Arduinoとブレッドボードと一体になってないと、何かと不便極まりないです。

結局、私は、Proto Shield Kitを追加購入しました。。。通販だと送料がもったいないので一度に購入するに超したことありませんね(笑)


ArduinoにProto Shield Kitを付けた場合こうなります

さて、Arduinoだけ購入しても、IC等、何かをつなげないとほとんど何もできません。
練習という意味では、LEDを接続して光らせてみるのが、非常に簡単かなーと思います。
PCから制御して、LEDが光るだけでも結構感動します。

今回行った内容は、こちらの本で紹介されている内容です。
原著は英語で内容は非常に簡単なので、英語が多少できるかたは、ちょっと安く手に入りますし、こちらもおすすめです。
Getting Started With Arduino (Make: Projects) こちら

最近、日本語訳も発売されたようですね!
これは、Arduinoも今後日本でもメジャーになるかもしれません。
Arduinoをはじめよう(オライリージャパン ) Amazonではこちら

なお、プログラマの世界で言う、「Hello World」的なLEDのチュートリアルに関しては、
Lこちらのサイトでも取り上げており、とてもわかりやすい紹介がされています。


スタパ齋藤の「週刊スタパトロニクスmobile」 Arduinoでマイコンしよう!!
http://k-tai.impress.co.jp/cda/article/stapa/40638.html


同じ事書くのも冗長なので、リンクだけにしておきます。

とりあえずLEDも光らせる事ができたので、次のエントリーではPhysical Computingの初歩に挑
戦してみたいと思います。