Monthly Archives: April 2009

[AS3]BitmapDataのサイズ制限回避

前々回のエントリでBitmapDataの制限サイズがちっちぇえって話を書いたけど調べてたらちょうどいい便利クラス見つけた。
サイズ制限なしのBitmapData作ってくれるクラス。

BitmapDataUnlimited / formatlos
http://blog.formatlos.de/2008/05/28/bitmapdataunlimited/

どうも内部でGIFを作って、それをBytesArray経由でBitmapDataとして読み込んでサイズ制限迂回してるっぽい。

使い方はまずインスタンス化してcreate()。これで中に指定サイズのBitmapDataを作ってくれる。以降はインスタンスのbitmapDataプロパティから巨大BitmapDataにアクセスできる。これだけ。
ただ巨大なBitmapData作ると生成するのに時間がかかるから、BitmapDataUnlimitedEvent.COMPLETEイベントを待ってからアクセスする。これだけ注意。

openFrameworksセットアップ(1)

取りあえずここの「windows: visual studio 2008」からof_preRelease_v0.06_win32_VS2008.zipを拾ってきた。

で、次にVisual C++ 2008 Express Editionをインスコ。まずここからインストーラー落としてきてインストール。詳細はこれ見よ。

VC++のインスコが終わったら試しにサンプルをコンパイルしてみる。of_preRelease_v0.06_win32_VS2008.zipを解凍して、「of_preRelease_v0.06_win32_VS2008appsexamplespolygonExample」の中のpolygonExample.slnを開く。このslnってファイルがFlashDevelopでいうところのプロジェクトファイルらしい。(正確にはソリューション→プロジェクト→各ソースコードっていう構造らしい。)

で、polygonExampleソリューションが開いたらビルド(B)→ソリューションのビルド(B)でコンパイル開始。なんか文字コードエラーっぽいのが出ながらも無事終了。
polygonExample

というわけで環境は整ったっぽい。

ただこのあと自分で1からヘロ―ワールド的なもんを書いてやろうと思ったら、やれofMain.hが見つからないだ、ofConstants.hが見つからないだとどやされて全く進まない。Flashでいうところのクラスパスみたいなもんが通ってない?というかそもそも最初にプロジェクトをどのテンプレートで作り始めりゃいいのかすらワカラン。

Hybrid Brush

Hybrid Brush
[drag] or [double click anywhere]

Wonderfl使ってレンダリング実験してたのが一旦完結。クソ重いから公開するのどうしようかと思ったけど、静止画生成用のエンジンとして見切って作ってたからまぁいいや。
一応操作としてはドラッグ、もしくはダブルクリックで自動操縦になる。

で生成される静止画はこんな感じ

あとついでにB0とかB1ぐらいの大判出力用にBitmapDataの高解像度出力する方法を模索してるんだけど、BitmapDataの大きさ制限のせいでなかなか効率のいい方法が見つからない。
一応今は2880pixel x 2880pixelのBitmapDataを複数作って目標のサイズを覆うようにタイリングして、drawする時はそれぞれのBitmapDataにSpriteを枚数分何度もdrawしてるって状態。そのせいですんごい処理負荷高い上に、書き出した複数の画像をあとからPhotoshopで合成しないといけなかったりしてすんごいめんどくさい。どうにかならんもんかね。

ちなみに原寸だと↓こんな感じ(クリックで開く)。
Hi-Resolution Test

追記:
上のネットで公開してるバージョンはスクリーンサイズのBitmapDataにdrawしてるだけだから重いのは他が原因。

brush study

まずは追従してくる点を順番に線で結んでみる。

次は結ぶ順番を変えてみる。

線で結んでできた面を塗りつぶしてみる。

フレームレートを上げて、点の数を増やして長くしてみる。

一定の長さ以上縮まないようにしてみる。

Y軸方向に重力を加えて、多少伸縮するようにして弾力を持たせてみる。

奇跡がキャンバスに残るようにしてみる。

あとは色をうまいこと変化させたりして軌跡が良さ気に見えるように調整、調整。

Immersive 3D Room

IDEO labsEON Realityが共同開発したimmersive 3D room。この正方形の部屋の中で偏光メガネをかけると、メガネに付いてるセンサーがユーザーの立っている位置や見ている角度をキャッチしてそれに合わせて四方に投影された映像が動く。これによってまるで三次元空間に立っているように錯覚させるというもの。

恐らく体感としてはJohnny LeeHead Trackingでやってたディスプレイの、さらに中に入り込んだような感覚だと思う。想像だけど。



2:29以降参照のこと

Illustratorでアンカーポイントの座標を取得する

aiファイル内の図形の各アンカーポイントの座標を取得する為に、JavaScript使ってIllustrator CS3ほじくってみた。付属の「Illustrator CS3 JavaScript Reference.pdf」が分かりにくくて階層構造が掴みづらかったのでメモ。

appがIllustratorの参照。
app.activeDocumentで現在開いてるファイルの参照をDocument型で返す。
Documetの中にはpathItems型でパスでできてるオブジェクトの参照が複数入ってる。
pathItemsの中にはpathPoints型でパスのポイントの参照が複数入ってる。
pathPointsの中にはpathPoint型でパスのポイントの参照が入ってる。
pathPointのanchorプロパティにアンカーポイントの座標が入ってる。

要するに現在開いてるファイルの1個目のオブジェクトの1つ目のアンカーポイントのx座標を取得しようとした場合は、
app.activeDocument.pathItems[0].pathPoints[0].anchor[0]
になる。ふ、深ぇ。

あとは全部の座標をテキストで出力してasにコピペすれば図形をコピーできる。この時Illustratorのy座標は下が0なので上下反転しとくこと。

Microsoft Sustainability

Microsoftの提唱する近未来の色々なインターフェイス。
生活の中にこんなに文字情報があると疲れると思うけど。人間はそんなに文字を読むのは早くもないし楽でもないんだからもうちょっと絵情報でフォローして欲しい。

Work: Oh, Hello :: microsoft sustainability
http://ohhello.tv/index.php/work/view/microsoft_sustainability/