ブログトップ
コンピュータと共にある創造的日常
uneoyaji.exblog.jp

メディアアート・プロジェクトにハマったオヤジの日常生活
by une0exct
<   2008年 04月 ( 13 )   > この月の画像一覧
光の干渉
b0129209_17285264.jpgb0129209_17291441.jpgb0129209_17293091.jpgb0129209_17294331.jpgb0129209_17295672.jpg結局、自動絞りを止める方法が分からないので、テクスチャパターンで背景を検出しようということになり、縦縞をプリンタで印刷してみました。すると、予想してなかった結果が!
そうです。物理学をならった人ならお気づきでしょう。タイトル通り、光の干渉で縞模様が変なのです。とにかく、印刷された縞模様のままカメラで捉えられることはありません。カメラの向きに対して水平または垂直方向のときは縞模様の方向は正しくとらえられます。間隔は違いますが。これを傾けると、カメラでとらえた縞模様はなんと紙の書いてんとは逆に回ります。
赤外線カメラだからというのもあります。赤外線LEDとフィルタを付けないと、もうちょっと実際通りに見えます。

しかし、この縞模様、肉眼で見てると目が変になります。人間の目のメカニズムを考えれば、なんでかは分かりそうですね。とにかく、背景としては使えるけど、そのまま人目にさらすのは、まずそうです。
[PR]
by une0exct | 2008-04-26 17:42
Core Graphics vs. NSBezierPath
新しい作品のプロトタイプを作るのに、NSView の drawRect: の中で NSBezierPath で描画するように書いてみたのだが、なんだか遅い。やっぱ、NSBitmapImageRep とデータを共有する CGBitmapContext を作って、そこへ CGContextなんたらで絵を描いておいてから、drawRect: の中では NSImageRep の draw を使う方が速いようである。
[PR]
by une0exct | 2008-04-22 20:28
賢すぎると使えない
いろいろ試し中の USB カメラですが、フォーカスだけはマニュアルなのに、露出がオートなのでちょっと困ってます。赤外線だと色情報が使えないため、画像中の顔とか手の部分だけ切り出そうと思っても、常套手段の色相で判断するって技が使えないので、そんじゃ背景を黒(赤外線を吸収する素材)にすればいいんでないかと思って試したところ、この自動露出が邪魔でうまくいかないのである。なにも検出対象がないと画面真っ暗のはずが、カメラが自動的に露出を上げていって、ついに露光時間を増やすためにフレームレートがどんどん落ちてほとんどフリーズ同然になってしまう。
解決方法としては、自動露出を止める、あるいは、テクスチャを使うか。検出精度の意味では前者のほうが良いのだが、今のところ、できるのかどうかもわかりません。だれか分かる人教えて〜
[PR]
by une0exct | 2008-04-18 22:38
赤外線カメラのテスト
注文していた MacOS X 用の USB カメラが、昨日届いた。早速、赤外線用に工作。Nao君のブログにあるとおり、比較的簡単でした。DT1 を起動してみると、ちゃんと動きます。しかーし、DT4 だと、何にも反応なし。な〜んで〜????
いろいろ試行錯誤した挙げ句、一度 SGSetChannelBounds を実行すると動きました。DT4 では、既定の画像サイズが所望のサイズと同じときは実行しないようになっていて、たまたま、カメラの既定値が一致していたのでした。
赤外線 LED で照らしてみると、なんだか真ん中だけがやけに明るい。つまり、光線の角度が結構鋭敏。スペックシートによると 15°だそうです。対策として、手元にあった DM の封筒から半透明の部分をカットして LED を覆ってみたところ、光の拡散され、真ん中真っ白の状態は回避できました。
b0129209_20353438.jpgb0129209_20382185.jpgこれで撮影した画像は結構、面白い。肉眼で真っ黒でも赤外線を反射するものもあって、全然違う世界になってしまいます。着ていた服が、それでした。服に付いている模様は全然見えなくなって全て白。自分の顔を見てみると、目がなんだか変。よーくみると黒目の虹彩の部分に赤外線が反射して灰色になり、瞳の部分だけが黒です。われながら気持ち悪い。
左の写真は、上が普通のデジカメで撮影したもので、ほぼ肉眼でみたとおり。下は、赤外線 LED を照射して、お手製赤外線カメラで撮影したものです。見た目おなじ黒でも、全然ちがうでしょ。赤外線を反射する素材で覆っておけば、直射日光に当たっても、あまり熱くならないわけで、機械用のキャリングバッグとかは、こういう点も考慮して素材が選ばれているようです。
[PR]
by une0exct | 2008-04-17 20:47
リリースするとバグが見つかる?
致命的ではないんだけど、リリース後の今日になって見つけたバグを直しました。背景色を明るい色にして、ぼかし効果をかけたときに、画面の右端がなんとなく黒っぽくなるというやつです。プログラムを見直してみると、右端から黒が侵入してました。:-)
さて、ダウンロード数はというと、丸一日で約400くらいでした。登録したのは MacUpdate新しもの好き です。
[PR]
by une0exct | 2008-04-13 01:19
DT4 Identity SA v1.5 リリース
先ほど、DT4 Identity SA v1.5 をリリースしました。MacOS X 10.4 または 10.5 を載せた PowerPC G5 または Intel CPU の Mac で動きます。G4 でも動くけど、重々しい。
バイナリ・ダウンロードはこちらから。フリーウェアです。
MacUpdate にも登録してます。さて、どのくらいダウンロードして頂けますやら。
[PR]
by une0exct | 2008-04-11 21:52
リアルタイムアプリのポータビリティ
我々のプロジェクトにおいて重要なコンセプトの1つに実時間インタラクションがある。これが、結構、厄介。十分なパワーを持ったマシンが利用できるときはよいが、実行はできても、亀さん、カタツムリさん、なマシンではコンセプトが実現しない。
自分が設定するインスタレーションなら、なんとか予算を工面してマシンを用意するということも可能かもしれないが、もう1つのコンセプトであるポータブルな「ソフトウェア・アート」つまり、インターネット上からダウンロードすれば、手元のマシンで体験できるという条件をも満足させようとすると、5年前くらいのマシンにもなんとか対応したくなる。5年前というと、eMac G4 800MHz とか、フラットパネル iMac G4 1GHz とかですね。こんなマシンで DT4 を起動すると、ほとんどフリーズ同然の状態になります。
こういうのは、最悪で、せっかくダウンロードしたのに、これじゃ迷惑ソフト以外の何者でもない。作者が呪われてもしかたないかも。
そこで、DT1 に採用していた、CPU 性能によって初期設定のエージェント数と画面サイズを変える機能を DT4 にもいれることにした。しかーし、実際に実行してみると iMac G4 1GHz では、320x240 の画面に 800 エージェントでも 10 FPS 以下。400 エージェントでなんとか 15 FPS 程度。G5 以上推奨ということにせざるを得ないようです。
[PR]
by une0exct | 2008-04-11 00:15
MacOS X で使える赤外線カメラ?
手元のビデオカメラ SONY DCR-TRV50 のナイトショットモードで赤外線LEDで照らした対象物をとらえてみると、はっきりくっきり見えるではないですか。ということは、iSight にも赤外線カットフィルターがついているってことですね。で、分解を試みました。結果は、がっかり。そのメカのコマゴマしさに手こずるだけでなく、オートフォーカスのユニットも付いていて、なかなかフィルタの位置までたどり着けません。結局あきらめて、Mac につながる赤外線カメラはないものかと、ググってみると、いやはや、すばらしき先人がいらっしゃいました。なんと当方の友人のNao君でした。2,600円くらいのUSBカメラから赤外線カットフィルタを取り外し、逆に赤外線と通して可視光線をカットするフィルタと入れれば出来上がりとのことで、早速、そのウェブカメラを注文しました。iSight を使うとオートフォーカスのためにレンズを動かすムーブメントの音が結構、気になります。この安いカメラの方は手動でピント合わせをするタイプなので、その心配はなし。Nao君 Good Job! です。いろんな人がこのアイディアを見てるらしいのだが、みんな何に使ってんのかな? 気になる。
[PR]
by une0exct | 2008-04-08 21:22
DT4 バグフィックスと最大フレームレート設定機能追加
RGB⇔HSB変換も一段落したので、早速 DT4 に組み込んでみた。ぱっと見て、ほとんど変わらない。まっいいか。
ちょっとした拡張だけど、最大フレームレートを環境設定で変更できるようにした。遅いマシンのときに、遅くてもいいから一定速度で動かしたいときには役に立つだろう。
あと、ウィンドウの右下をドラッグするとハングアップするというバグを見つけた。これは、かなり致命的。へたするとマシン自体がハングアップする。というのは、ウィンドウサイズを変更するたびにスクリーンを描画するための作業メモリーを再割り当てする。この大量のメモリー動的割り当てシステムコールが発行されると、もちろん、システムは可能なかぎり仮想記憶を使ってまでもメモリーを割り当てようとし、実際、これはディスクおよびCPU両方に結構な負荷になる。で、応答無しになってしまう。ずーっと待っていれば、そのうち復帰する可能性もあるが、いつになるのかわからないところが恐ろしい。デバッグ中、我慢できず2回も電源ボタン長押しという最終手段を実行してしまった。ディスクファイルにどれくらいのダメージがあったかは分からないが。プロセス当たりの仮想記憶割り当て上限を決めておいてもいいんだけど、アプリによっては平気で1GBとるのもあったりして、むやみには設定できないところがつらい。なんのかんの考えたあげく、ドラッグを無視すべく、しかし、ズームボタンは生かしておきたいので、NSWindow の delegate 用メソッドの windowWillResize と、NSView の viewDidEndLiveResize を使って切り抜けた。ドラッグしかけると、プログラムの実行が中断してしまうのが欠点だが、ハングアップよりは良かろう。
[PR]
by une0exct | 2008-04-07 22:39
デバッグにハマるのは精神上よくない
b0129209_23124218.jpg苦闘の末、ようやくバグを直して、自家製 RGB ⇔ HSB 変換、完成しました。しかし、デバックにハマるのは本当に精神衛生上よろしくないですね。今回のプログラムは、結構、数式の変換が必要で、3次元幾何ってのも、とっても面倒くさいね。多面体を斜めに切った断面上に極座標系のような、同心円じゃなくて6角形の座標系をマップするというわけだから、面倒この上無し。もちろん、6通りに場合分けしてもいいんだけど、貧乏プログラマの宿命か、どうしてもプログラムをコンパクトに仕上げたいという誘惑に駆られるんだよね。
結果的には RGB ⇒ HSB の方は 16 行、HSB ⇒ RGB の方は 23行におさめました。
左上の画像は、Cyan と Orange の中間色です。上から、RGB, NSColor の HBS, そして自家製の HBS です。
[PR]
by une0exct | 2008-04-05 23:28