little things of mine

from los angeles, california

Category: 開発

Core Image – 2

MacOS X 10.4,”Tiger”がリリースされましたね. 会社の同僚に教えてもらったのですが,以前紹介した”Quarz Composer”は,実は”PixelShox”という開発途上のサードパーティ製アプリケーションだったそうです.見た目には全く同じ物に見えますね. PixelShox Technology PixelShoxはもう開発を止めてしまった(おそらくAppleに買われて)ようですが,ベータ版だったアプリケーションはフリーでダウンロードできるようになっています.Tigerでなくてもハードウエアが対応してさえいれば,遊ぶ事はできますね. 開発者向けドキュメントも見つけました. Quartz Composer Programming Guide 流し読みしたした感じでは,ただのcompositeフレームワークと言うよりは,よりリッチなGUIを構築するための開発用ツールという感じですね. 実際,かなりOSに統合されているように見えます.Quarz Composerで制作した一つのネットワーク,”Composition”は”.qtz”という拡張子のファイルに保存され,これをアプリケーションから読み込んでOpenGL Context Viewにレンダリングできるようです.そのためのAPIも用意されています.3Dインターフェイスや3Dトラックボールインターフェイスなども簡単に作る事ができ,各種コントロールともバインドが可能なようですが,こういうのは使い方が難しいと言うか,使う側にセンスが必要でしょう. 実際のcompositeや画像処理の部分は,Core Image担当するようです. Core Image Programming Guide PixelShoxのウェブサイトに書かれている,”PixelShox 3D Engine”と言うのがCore Imageの原型なのでしょうか?自分的にはQuarz Composerそのものよりもこちらに興味があります.”Core Image Kernel Language”でどこまでの事ができるのか,数学演算などを使用した時の精度など,試してみたい事が沢山ありますが,残念ながらMacを所有していません. Core Image対応の機種となると,結構高価ですからねえ…

PyQt

自前のツール作りにちょこっと使ってみました. Riverbank : PyQt : Overview いやあ,これは便利ですねえ.Pythonとの相性も良いです.まあ,時々動作が正しくないメソッドがあったりするのは御愛嬌ですが. 今までは,コーディングが面倒なのでGUIの必要なユーティリティは極力作らないようにしていたのですが,これだけ楽に作れると欲しい時に直ぐ作れて重宝しそうです. 自分的にはユーティリティはこの組み合わせで決まりですが,コアの処理はC/C++で書いて,PyQtでGUI,Pythonでそれをbind,というやり方も,あまりGUIの速度を要求しないアプリなら充分行けそうですね.

Core Image

話題としてはちょっと古いかもしれませんが. Developing with Core Image こういうの待ってました. リアルタイムレンダリングの3Dシェーダにはまだ相当の制限があるし,クオリティもソフトウエアにはまだ及ばないので,あまり自分には訴求する物が無いのですが,ハードウエアでのピクセルレンダリングには興味があって,compositeアプリのベンダーはなんでやらないのかなあ,と思っていたのです. 我々の扱う映像の解像度は普通で2K,camera shakeが入るショットだともっと大きくなる事もあります.このサイズの画像を20レイヤーくらい重ね,更にそれぞれのレイヤーに沢山のエフェクトがかかりますから,2Dイメージの処理とは言えどかなりの処理量になります.実際,デュアルCPUで計算してもかなり待たされます. GPUがピクセルのレンダリングをfloating pointで計算できるようになった時,compositeソフトでこれを使えば!と,真っ先に思いました.完全なfloating pointで計算できるならば,そのクオリティは理論上CPUと同じはずです.並列化が不可能なオペレーションもありますが,殆どの処理がGPUで処理できる訳で,激速になる事間違い無しです. このCore Imageで素晴らしいのは,compositeの一つのオペレータにあたる部分を,Image UnitとしてOpenGL SLから派生したCIKernel Languageという言語で簡単に記述できるようになっている所です.今までは,新しいオペレータを追加する場合,それぞれのアプリケーション独自のAPIを利用してC/C++で記述するのが普通でしたが,これが格段に楽になりますね. 上記のページにある”Quartz Composer”なんて,まさに自分が想像していたアプリその物です.これだけではどのくらいの事が出来るのか分かりませんが,本質的な部分はそのままで,UIのブラッシュアップとアニメーションに対応させれば,もうプロダクションで使えそうな勢いです. Mac欲しくなってきました.

google-perftools

以前,仕事で使える(使い物になる)profilerが欲しいと書きました. どうやらこれがうまく行くようです.こんな物から開発してるなんて,さすがはGoogle.更にソース公開とは. Google Code まだ少し不安定なようですが,callstackがgraphvizで書き出せたりとかなかなか気が利いている.大きなプログラムはまだ試していませんが,機会があったらしっかり検証してみようと思います. ちなみにライセンスはBSD 2.0 license. # ちなみにウソじゃありません.

Adobe Open Source

Adobeにこんな物が. Adobe Open Source overviewをさらっと読んだだけなのですが,どうやらGUIを楽に作成するためのフレームワーク,”Adobe Source Libraries”と,メタデータを扱うフレームワーク,”Adobe XMP”が,現在進行中のプロジェクトなようです. しかしまだGUIを描画する部分のライブラリは無い模様?ちゃんとソースを見ていないので分かりませんが… このフレームワークはどのくらいの自由度が得られるんでしょうね.洗練されたGUIは彼らの十八番といった印象がありますが,彼らの作成した独自のコントロールなんかも使えるようになるんでしょうか.まあ,これは期待できないか. XMPって知らなかったんですが,最近こういうファイルにメタデータを持たせるのって流行ってますね.次のMacOS XやWindowsには,メタデータを使ってファイルの検索や分類分けをintelligenceに行う機能が追加されるようです. これって物理的に必要な記憶領域が増えるって事なんだろうか.ファイルシステム上は変わらないんだろうけど.