2009年6月22日月曜日

BPSGR on ニコニコ動画

BPSGRの簡単なチュートリアルを含めた動画を作成して、ニコニコ動画の方に投稿しました。
チュートリアル部分だけを抜き出せば、ヘルプになるかもな・・・って思ったり。
これは時間があったらですね。。。



※いろいろコメントを頂けてるので、出来るものは対応とか解析とかして行こうかと思ったりしています^^

2009年6月15日月曜日

JBulletをProcessingから使うライブラリを公開

物理演算エンジンBulletのJava版、JBulletを簡易的にProcessingから使える様にしたライブラリ"BPSGR(jBullet with ProcsSsinG R)"を公開しました。
公開ページはこちらから

Bulletはフリーで高性能な物理演算ライブラリですが、いろいろ設定もしなくてはならず、手軽に使うには非常にハードルが高いものでした。

また、デモなどを動かしても、それから先自分で使いこなすにはなかなか長い道のりです。


ちょっとした物理シミュレーションを簡単にできないかな?と思い、
Bulletライブラリの膨大な機能のうちの、ものすごく初歩的な部分のみですが、非コンパイルのプログラム環境Processingで扱えるようにしました。


また、メタセコイアデータを、頂点データ集合として扱い、物体として登録できる機能も付加しています。

※本ライブラリは、BPSGR.jar, BPSGR_MQO.jarの2つから成ります。

同梱されているファイルのうち、Jbullt.jarは、jbulletのre-distribution、vecmath.jarは、JAVA3Dのre-distributionになります。

また、BPSGR_MQO.jar(メタセコイア関連部分)は、mqoviewer for processing(reco作)を、このライブラリで使用できるように機能拡張したのもので基本的内容は同一です。

このライブラリでできること。



○平面の作成(必ず作成されます)

○シミュレーションの結果をProcessingを用いて描画する

○球・箱・シリンダー・メタセコイアデータを剛体としてBullet空間への追加

○箱の集合体(BoxArray?)の簡単な作成

○球・箱・シリンダー・メタセコイアデータのshooting(指定した方向に投げる(撃つ事が可能です))

○指定した物体に対して、衝撃(impulse)を与える

○光源位置、メタセコデータ以外のオブジェクトの色に関しては、固定実装です(将来は自由にいじれるようにします)

 (オブジェクト番号偶数が黄色、奇数がシアンになります)



物理演算ライブラリの一つの重要な機能、拘束(Constrain)については、このバージョンでは未実装です。
(実装検討中)



各種サンプルも用意しています。
詳しいこのライブラリの使い方に関しては、ドキュメントおよび、製作作品・サンプルプログラムを見てください。
時間があれば、チュートリアルページも作成しようと思っていますが、取り急ぎ公開しました。

2009年5月19日火曜日

バッチファイルへD&D

私は昔からのPCユーザなので、ちょっとした処理はコマンドプロンプトからバッチファイルを使って処理することも多いです。

しかし、つい最近まで、バッチファイルに対してD&Dをしてみる発想がなく、実際どうなっているのかよく知りませんでした。

ふと、FLVファイルからMP3ファイルを作る必要があり、FFMPEG+バッチファイルで処理していたのですが、いろいろ面倒だなぁと感じていたところ、バッチファイルにもD&Dができるって事を知って、目からうろこでした。
便利になったもんだぁ、WindowsXP....

「コマンドプロンプトを使ってみよう! -バッチファイルとは?」
http://ykr414.com/dos/bat.html

D&Dの際の引数
%0実行ファイル
%1D&Dされたファイル

この状態では、それぞれフルパスで値が入ります。
昔はこれだけだったはずなんだけどな・・・・

%と1の間に、"~"をつけて、下記のコマンド?を入れることで引数に対していろいろ加工ができます。
dドライブレター
pパス名
nファイル名
x拡張子


たとえば、"%~n1"とすれば、パス名は無視してファイル名(拡張子なし)だけが取得できます。その辺を活用したのが、下記の例です。flvファイルと同名のmp3が簡単に作れるわけですね。

これらを用いて、ちょっと書いてみます。
%~d0
cd %~dp0
ffmpeg -i "%~n1.flv" -vn -acodec copy "%~n1.mp3" -title "%~n1"


%~d0
cd %~dp0
ffmpeg" -i "%~n1.mp4" -vn -ab 192k -acodec mp3 "%~n1.mp3" -title "%~n1"

適当な名前でバッチファイルとして保存しておくと、D&Dだけで音声ファイルにできます。
レートとかは、雰囲気でどうすればどうなるかはおわかり頂けるかと。

※ffpmegは自分でなんとかしてください。

2009年5月15日金曜日

3Dはちゅねにネギを振らせてみた Ver 2

前回サンプルの方にUpをした「3Dはちゅねにネギを振らせてみた Interactive by Processing」に、少々機能を加えたものをUpしました。

追加された機能は下記の通り
音楽に合わせて自動にネギを振るモードの追加
本家動画にほとんど忠実なタイミングでネギを振るモードの追加
視点の追加・カメラ移動のユーザ解放

コードもUpしてありますので、参考にしてください。

こちらから

紹介動画もニコニコ動画の方にUpしてあります。



この紹介動画の中に出てくる、バンドパスフィルタサンプルも
こちらにUpしてあります。
このままでは使いようもありませんが、参考にはなるかなと思います。

2009年5月1日金曜日

3Dはちゅねのネギ振りInteractive by Processing

メタセコイアローダ for Processing (MQOLoader for Processing)を用いて作った
ニコニコ動画を投稿の方へ投稿しました。
視聴には会員登録(無料)が必要です


単純にマウスクリック1回で、1回ネギを振る仕様なのですが、
せっかく3Dモデルなので、視点変更などモロモロができます。

1曲聞くのに100回以上ネギ振り(マウスクリック)をしなくてはならなく、ちょっと大変なので、自動ネギ振りモードも付けました。。。。

何はともあれ試してみてください。なにげに中毒性があるようです・・・

はちゅねネギ振り動画本家

に準拠?して、曲に合わせて表情などが変わります。

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の初歩に挑
戦してみたいと思います。

2009年3月27日金曜日

Jbullet(物理エンジン)を使ってみる

ちょっとProcessingから離れて、物理エンジンBulletのJava版、JBulletを使ってみてみた。
(将来的にはProcessingから使えないかなぁと思ったり)

ニコ動でも使ってみてる人がいます



Bullet自体は、物理エンジンとしてPS3,Wii等多くのゲームタイトルに採用されているメジャーなものだったりします。物理エンジンとしては、Havokの方が有名かもですが、bulletはフリーである部分が、私のような日曜プログラマーにはありがたい事です。

とりあえずは、デモプログラムを自分の環境で動かしてみます。
※私のJava開発経験は非常に少ないため、いろいろ試行錯誤の記録です。

公式サイト
http://jbullet.advel.cz/
からダウンロード

現在の私のJavaの開発環境は、Eclipseなのでプロジェクトを作成してデモソースを追加。

まずは、BasicDemoを動かして見ることに。
ライブラリの関連性とか調べるの面倒なので、dist配下にある、jbullet.jarのみReference Libraryに追加して、とりあえずビルド。
当然ビルドは通らず。

エラーを元に調べると、このデモプログラムは、表示ルーチンの部分に、LWJGL(Lightweight Java Game Library:軽量Javaゲームライブラリ)を使っているようなので、そのまま、リファレンスライブラリに、lib/jwjglの配下にあるjarファイルを追加

そして実行、、、
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
だそうで、、、。

うーん、Javaで開発あんまりしたこと無いから、よくわからんなぁ。
lwjglのライブラリはリンクしてるはずなのに。。。。
さらに、ネットで調べると、lwjglでサンプルプログラムをビルドしているブログエントリーを発見。(LWJGLを利用してウィンドウを表示する

あーなるほど、DLLをちゃんとコピーしておかないとだめなのね。
1つ学習しました。

ということで、
lib/jwjgl/win32/配下のDLLを、プロジェクトのトップ(srcの上)にコピーして実行。
無事にデモを見ることができました。

Java使ってるわりには軽いな・・・・。

なかなか楽しいのでもう少し遊んでみようかなと。

2009年3月9日月曜日

MqoView for Processing Ver0.3 リリース

MqoView for Processing Ver0.3をリリースしました。
前回のリリースで、Processingは左手座標系であるため、その対応をした事を書きましたが、
NyARToolkit for Processing等、一部のツールはProcessing上でも右手座標系を採用しています。
このため、NyARToolkit for Processingで3Dモデルを描画する際に、これまでのMqoView for Processingを使用すると、左右が逆になったりテクスチャがおかしくなったりします。
これは、本ライブラリが左手系描画をしているのに、座標系が右手系であるのが主因です。
これでは、せっかくのMQOViewer(というかローダー)も宝の持ち腐れになってしまいますので、左手系・右手系の両方で描画ができるようにアップデートしました。

モデルのロードは、createGLModelPs関数で行いますが、この関数の引数を1つ追加しました。
最後の引数をtrueにする事で、左手系での読み込み、falseで右手系での読み込みとなります。引数は省略できません。

また、本来ブラリは、本質的には、NyARToolkitとは(コードはいろいろ利用させて頂いてますが、機能的にはという意味では)関係がないので、混乱を避けるためにjarファイル名を変更しました。(NyARMQO.jar→MQOLoader.jar)

例:
model_data = KGLModelData.createGLModelPs(this, gl,null,this.content_provider,0.015f, KGLExtensionCheck.IsExtensionSupported(gl,"GL_ARB_vertex_buffer_object"),true) ;


DLはこちらから。

2009年2月11日水曜日

MqoView for Processing Ver0.2 リリース~Processingは左手座標~

先日公開したMqoView for Processing ですが、大変なバグ(仕様漏れ?)がありました。

OpenGLやメタセコイアは、いわゆる右手系の座標なのですが、Processingは左手系を採用しています。
MqoView for Processingは、これまで座標変換などをしてなかったため、古いバージョンでは、鏡に映ったようなモデルが表示されてしまってました。左右対称なモデルばかりで確認していたので、気がつくのが遅れました。
修正版(ver0.2)を先ほどUpしました。非常にお恥ずかしい限りですorz......

DLはこちらから。

2009年2月8日日曜日

Processing: IDEからアプリ実行時のメモリ確保量の変更

Processing実行時に、OutOfMemoryが出る時の対処。

Processingはデフォルトでは、初期目盛りは64M。
作成アプリケーションで多量のメモリを消費する場合、ヒープメモリが不足する場合もあります。
このような場合、Processing設定値を変更する事で対応可能な場合があります。
この設定値はIDEからは設定できず、下記のファイルを変更する必要があります。<追記>メモリ確保の最大値変更はIDEのPreferenceの中から可能です。初期起動時のメモリは下記ファイルからのみの変更できます。


/Document and Settings/[User Name]/Application Data/Processing/preferences.txt
(メモリに関係ある項目のみ抜粋)
run.options.memory.maximum=1024
   ←メモリ最大サイズ(自分のPCのメモリとの相談。初期値は256)
run.options.memory.initial=256
   ←プログラム実行時に最初に確保されるメモリ(初期値64)
run.options.memory=true
   ←最大値指定の設定の有効・無効の指定(初期値は、無効)

※Processing 1.0.1の場合のセッティングなので、Verが変わるとまた状況が変わるかもしれません。

preferences.txt変更時は、Processingを再起動する必要あります
Processingはアプリケーション(IDE)終了時に、その時の設定をpreferences.txtに上書きするため、
preferences.txtの変更は、必ずProcessingアプリケーションが立ち上がってない状態で行いましょう。

この対処方法は、IDEから実行の場合です。
JRE等を利用する場合は、実行オプションなどでヒープメモリ量を指定するようにしてください。

2009年2月7日土曜日

MQOViewer for Processingの動作サンプルコード公開

MQOViewer for Processingの動作サンプルを公開しました。
Processing上でものすごく簡単にMQODataが表示できることが見てもらえると思います。

近日中に動画(パラパラマンガ)サンプルもUpします

サンプルプログラムを同梱して、Ver1.0cとしました。

こちらより

2009年2月2日月曜日

Processingライブラリのコンパイラ

Mqoviewerライブラリ生成時に使用したコンパイラがJRE6であったため、Mac等で動作しないことがわかりました。
Processingのリファレンスちゃんと読んでなかったです。
Jre1.5(Java 1.5)でコンパイルしなおして、Ver0.1bとして公開し直しました。

こちらから

2009年1月31日土曜日

Processing上でメタセコイアデータの表示

NyARToolkit for Pro55ingでいろいろ実験をしていたのですが、
やはりメタセコデータがの表示がしたいと思い、NyARToolkitのサンプルプログラムのNyMqoViewerを元にライブラリを作成してみました。

このライブラリは、A虎氏作成のNyARToolkit(ARToolKit Class Library for Java)の動作サンプルプログラムであるNyARMqoViewerをベースにProcessing上で動作できるようにしたものです。
このライブラリと、同じくA虎氏作成のNyAR4psg(NyARToolkit for proce55ing)を組み合わせることで、Processing環境上でもメタセコイア形式のデータを表示できるようになります。

NyARToolkitのページはこちら
NyARMqoViewer

読み込めないデータがたまにある等、いろいろ問題がありますがまずは公開したいと思います。

Processing上でメタセコイア形式データを表示するライブラリ


このブログではZIPファイルをUploadできない関係でファイルをこちらに置いていますが、
更新等の情報に関しては、こちらで更新していきたいと思います。

ドキュメンテーションはなかなか時間がなくて追いつかないので、
詳しくはサンプルプログラムの方をを見てください。

2009年1月26日月曜日

ProcessingとARToolKit

最近、Processingを使う機会を得ました。
私自身はプログラム経験が長いのですが、非常に直観的なインターフェイスで非常に面白く、ライブラリも充実しているので非常に面白いと感じました。

それとは全然別件ですが、ニコニコ動画に、ARToolKitを用いた動画が多数投稿されています。
面白いけど自分には手に届かないなぁ・・・と思っていました。
使い古しのVisual C++を持ち出してARToolkit本家を使って、なんとなく遊んでいたのですが、
ARToolkitをProcessing対応させてくれた方が現れました。
NyARToolkit for proce55ingのページはこちら

このライブラリはARToolkitのJava対応版からの派生
NyARToolkitのページはこちら

これらを用いて何か面白い事が出来ないかなと模索中です。