Xcode openframeworks templates

CGといえば周りは「Python、ぱいそん」ゆーてますが、「openframeworks」です。

Beyond Interaction ―メディアアートのためのopenFrameworksプログラミング入門[amazon.co.jp]

書籍にはXCode用にプロジェクトテンプレートのインストーラをダウンロードするよう書いてあります。それを使いたくない場合、というか何をどこにインストールされてるか分からないのがイヤなら。
サンプルプロジェクトに「emptyExample」というフォルダがあるので、「v0061」って感じでバージョン名へ改名して「/Developer/Library/Xcode/Project Templates/」以下に「openFrameworks」フォルダを作り、コピーしておけばOKみたいです。

(追記)ごめんなさい、自分で解決できたーと思ったら、上に書いたことは巻末のAppendixに詳しく書いてありました。

さて、まずは今までProcessingで作ったコードを移植してみる事からですが、openframeworksに標準で備わってないクラスやメソッドを探し当てれるかどうかが挫折するかどうかの分かれ目かな?


OpenEXRの画像サイズ

聞かれたのでメモっ!ちゅーか、何で僕にこんなこと聞くの?

ターミナルから「hexdump -C file.exr | less」

「http://www.openexr.com/documentation.html」の「OpenEXRFileLayout.pdf」にデータの仕様が載ってます。

サイズはこのへん!先頭から179byte目。2byteごとにx.min, x.max, y.min, y.max。
上の例だとヨコが0x0000〜0x00FF、タテが0x0000〜0x00FF、つまり256×256。

「dataWindow」のサイズも少し前に記述されてますね、「dataWindow」と「displayWindow」の違いってなんでしょう?OpenEXRを使うことがないので分かりません。仕様をよく読めばわかるのかな?


htVRMapMerge.ms – merging Irradiance maps

大急ぎで作成です。複数のイラディアンスマップをマージします。実際にはV-Ray付属のimapviewer.exeを起動してマージ処理をさせるだけ、、、

突貫工事で

マクロスクリプトです。「#maxroot/ui/macroscript」へコピーし起動したら「ユーザインターフェースのカスタマイズ」です。「CANPLAIZE」カテゴリにあります。

0.) imapviewer.exeのパスを指定(初回のみ)
1.) マージしたい.vrmapをリストに追加(選択ダイアログではCtrlやShiftで複数選択可能です。)
2.) 出力ファイル名を指定

で「Merge」ボタンです。

エラーのチェック部分を作っていませ~ん。0~2の項目が設定されてなくても「Merge」ボタンは押せちゃいますし実行しようとします。また、imapviewer.exeへのパスは半角スペースが含まれていても動きますが、読み込みするvrmapや書き出すvrmapのパスにスペースがあると動かないんです。ダブルクォーテーションで囲ってみたりしましたけどダメ。

リストボックスに横スクロールがつかないとか、max9環境でつくりました、とか、、、

つまり僕以外にはガラクタですね。お好きにドーゾ、実行も改変も再配布もね。全て自己責任でお願いいたします。

htVRMapMerge.zip

最新版はhtVRMapMerge ver.1.1

初期設定を「htVRMapMerge.ini」というファイルへ保存します。場所は環境によって異なりますが、MAXScriptリスナーで

getdir #plugcfg

を実行すると分かります。


V-Ray: Irradiance map interpolation

似たようなタイトルで以前にも書いてますね。

今回の制作で初めてフレーム補間使ってみたのですが、昨日も書いたとおり問題が発生です。

テストシーン

ウォークスルーアニメをレンダリングする場合、アンチフリッカーのためにイラディアンスマップ(.vrmap)をあらかじめ計算して保存おき、それをフレーム間で補間させて本レンダリングします。

下はテスト用に出力したvrmapです。1ファイル2.5MB程度ですが、本制作で使用するvrmapのサイズは約30MBになります。

あらかじめ計算された.vrmapファイル

「Interp. frames」を「2」に設定しているので、前後2フレームと現在時のフレームとあわせて5フレーム150MBになります。10台のPCでネットワークレンダリングすると、vrmapを収めている共有ストレージは時間差はあるものの1.5GBものファイルの転送要求を受け付けることになります。

とまぁ計算が適当ですが、実際、ファイルの転送が追いつかなくって効率が落ちレンダリングが始まらない事態になっちゃいました。残念ながらvrmapの共有はあきらめ、各レンダリングPCのローカルへ配置してやる必要が出てきました、、、というお話です。

バッチファイルを書けば事足りるんですけどね。今後もこういうことがあるならGUI付のフォルダ同期ソフトを作る必要があるなと。同期ソフトはたくさん公開されていますが、動作が逆なのが必要なんですよね。

1つのサーバがあって複数が同期しにくれば同じ問題におちいります。1対1で順番にしかも『こちらから』同期をしてあげるそんなやつ。

どっかにないかなぁ。