2013年3月23日土曜日

callback #preRender / #postRender スクリプトをBackburnerで実行する方法

以前もやってましたが、久しぶりにやってみようとしたら少し戸惑いました。
近年のMaxでは「シーンをレンダリング」ダイアログの下部にスクリプトの登録スロットがあるので、それでもいいかもしれません。

ポイント

preRenderスクリプトはシーンに保存されない
persistent:trueを使うとシーン内にコールバックイベントを保存できます。


まとめ
preRender.msとpostRender.msを用意し、callbacks.addscript filename:を用いてそのスクリプトファイルを登録すれば大丈夫です。これはローカルでもBackburner上でも動きます。
preRender.msとpostRender.msをコールバックとしてシーン内に登録するには、シーンを開いた状態でcallbacksRegister.msにより登録して保存しておきます。

以下の例は、レンダリング開始時(#preRender)にローカルの時間をINI形式でファイルに書き出します。
そしてレンダリング終了時(#postRenderローカルの時間をINI形式でファイルに書き出します。
 



preRender.ms
fn myPreRend = (
   iniFile = "H:\\max_Scripts\\preRender_PostRender\\preRender.ini"
   f = createFile iniFile
   setIniSetting iniFile "preRender" "localTime" (localtime as string)
   close f
)
myPreRend()


postRender.ms
fn myPostRend = (
   iniFile = "H:\\max_Scripts\\preRender_PostRender\\postRender.ini"
   f = createFile iniFile
   setIniSetting iniFile "postRender" "localTime" (localtime as string)
   close f
)
myPostRend()


callbacksRegister.ms
callbacks.removeScripts #preRender id:#myRendAuto
callbacks.removeScripts #postRender id:#myRendAuto


callbacks.addScript #preRender fileName:"H:\\max_Scripts\\preRender_PostRender\\preRenderScript_v001-001.ms" id:#myRendAuto persistent:true
callbacks.addScript #postRender fileName:"H:\\max_Scripts\\preRender_PostRender\\postRenderScript_v001-001.ms" id:#myRendAuto persistent:true


callbacks.show()

となると、Backburnerでいちいち手動で無いとレンダーレポートを保存できないあの面倒な部分、それをpostRenderFrameで行えばレポートを便利に出力できますね!

2012年8月27日月曜日

AIRアプリケーションのAPK変換と実機へのインストール

FlashDevelop+AIRSDK+FlexSDKなどのフリーウェア環境の場合、AIRアプリケーションのAPK変換と実機へのインストールなどは、FlashStudioなどの製品を使うより少しわかりにくいです。
しかしだからといってものすごく不便だ、というものではないと思います。

PackageAssistantなどのパッケージソフトを使うとGUI操作なので簡単なわけなのですが、AIR2.5でしか使えないので、今となっては最新のAIRSDKを使うためにはコマンドラインでやらねばなりません。
AIR2.5では画面の回転などでまだ未整備なところがあるとのことで、もちろん現在のAIR3.4ともなればその辺は整備されているようです、ってだいぶ古い話ですが・・・。

ちなみにコマンドラインは解説がわかりにくかったけど、一度通せばあとは毎回やること同じなので、とくに便利ではないが不便でもないです。
ひとまず生成物は、同じディレクトリに集まっているほうが文が短くてやりやすいと思います。


それではひとまず、基本のツールを確認します。
AIR-SDKに含まれているADL、ADT、ADB、そしてJava関係のJREまたはJDK(1.5 以降)です。
名前が似ていたりしてわかりにくく、ほかにも似た名前のツールがいろいろあってイライラします。
  • ADL(AIR Debug Launcher) AIRアプリケーションを実行します。
  • ADT(AIR Development Tool) AIR アプリケーションをパッケージ化、インストールなどする。 
  • ADB(Android Debug Bridge) AIR2.6以降ではAIRSDKに含まれている。 
  • JRE(Java Runtime Edition) Javaを動かすのに必要。エンドユーザー向け版。 
  • JDK(Java Development Kit) 同じくJavaを動かすのに必要、Java開発者向け版。 

さて、これらのツールで本体を作成しましたら(これが一番圧倒的に長いけど)、Android向けに仕立てましょう。


【カレント・ディレクトリ】
ではひとまず、swfのあるディレクトリをカレント・ディレクトリとして移動しましょう。
cd currentDirPath

【証明書の作成】
そして証明書を作成しますが、カレント・ディレクトリにp12証明書ファイルができます。
adt -certificate -cn SelfSigned 1024-RSA selfcert.p12 password
さらっと書いてありますが1024-RSAより2048-RSAのほうが強力な暗号なんだそうです。
とりあえず自分でテストするにはこれでいいと思いますが、弱い証明書を使っていると、アプリを改ざんされたりすることがあります。(つまり、成りすましたアプリを作成される恐れがある。)

【swfをapkに変換】
swfをapkに変換します、アイコンは規定の名前(icons\icon_72.png)にしておくと勝手に付きますので、それがいいと思います。
adt -package -target apk -storetype pkcs12 -keystore selfcert.p12 myApp.apk application.xml myApp.swf icons
実行すると"password:"と表示されますので、証明書のパスワードを打ち込みます、けれど文字は表示されませんので、それは気にしないでEnterします。ここはちょっと面倒ですね。

【apkを端末にインストール】
apkを端末にインストールします。
adb install myApp.apk
ちなみに、既に同じアプリケーションがインストールされている場合は、上書きでインストールしないとインストールに失敗します。上書きする場合は-rオプションをつけて
adb install -r myApp.apk
です。
あるいはINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES エラーが出ることがあります。
これはAIR-SDKのADTを使ってAndroid端末にアプリをインストールしたときに出るエラーです。 このエラーは同じ(名前の?)アプリなのに、違う証明書を使っている場合に、不正なアプリがインストールされるのを防ぎます。この場合は既にインストールされているアプリを実機でアンインストールした後、あらためてインストールすれば大丈夫のはずです。


--- それはそうと、GooglePlayにおけるAIRの評価を見ると、直近のレビューにおいても、Flashとは違って開発者以外にはAIRの認知度がとても低いのがわかります。 それはおそらくAIRを使用したAIRアプリケーションがまだとても少ないためだと思います。

2012年3月11日日曜日

N.Lab Node Grapher Alpha版デモビデオ


だいぶ以前に、AdobeとSonyのコンテストに出品したデモ映像を一般公開にしました。

こうしたタイプのソフトはたくさんありますけど、なかなか満足できる使い心地のものが無かったことや、独自のコンテンツを所有したかったので、作り始めました。
具体的な部分は書けませんが、最高の使い心地を追求していきます!

N.Lab 主席研究員 のぼる

アナログ映像とデジタル映像に関する書籍

もう、誰も教えてくれない 撮影・VFX/CG 「アナログ基礎講座I」
久しぶりに面白い本を手にしました。
ともすると、PCの前で、そしてインターネット検索で、ほとんど、あるいはすべて済ませてしまえる現在のCG映像製作、それは確かに便利で、とは言えどぜんぜん手軽ではないけど、でも便利であるけれど、やはりライブにおける緊張感や一期一会感はまた違った持ち味や強烈な出会いをもたらすことがあります。
この本ではデジタルの手法のよさを的確に認めたうえで、アナログの手法について教えてくれます。
もちろん私どものようなCG映像を手がけている者はそれをよく意識しているものですが、改めて言葉にまとまっているというのは、とても重要なことに感じます。値段も内容にくらべて安いし、ソフトカバーでカバー表紙が無いのも読みやすくて効率的、全部の本はこれでいい。

テクニカルアーティストスタートキット -映像制作に役立つCG理論と物理・数学の基礎-
こちらもとても面白い。もちろん役立つものです。値段はちょっと高いけど、まぁ仕方が無い。
私などは主にパーティクルをよく扱いますが、そうした局面ではこれらのことをよく知っていなければ、誰にでもできる表現にとどまってしまいます。ほかの誰にもできない表現を持つことは困難ですし、そこまでになる必要もあまり無いですが、誰にでもできることをやっていてもおもしろくは無いですね。でも僕は個人としてはこうした職業はほとんどの場合アーティストとは言わないと思います。アーティストとは、独自の企画・表現で立つ人のことであって、他人が考えた企画を手伝う立場の人を指すものではないと思うからです。私はアーティストではなくアニメーターです。

2012年3月10日土曜日

bitmapData

Spriteに描画するよりbitmapDataに描き込むほうが高速に処理できるようですが、
ポイントとして、
bitmapDataはbitmapスプライトにaddChildすることで表示できること、
当該bitmapDataを指すにはbitmapSprite.bitmapDataとなり、
bitmapSprite.bitmapData.setPixel(xPos,yPos,color)となります。
当該bitmapDataの指し方がちょっとわかりにくかったです。

2011年11月20日日曜日

落下

過去の写真をみていたら、2006年の珍しい写真が出てきました。これは渋谷駅に掲示されていたiPodの布製の広告が風で剥がれて落下したものです。幸いケガ人は無かったのでよかったですが、このように大きなものが落下してくるのはとても稀な出会いです。落下後は交番の警官が回収していました。
写真は過去を記録しているので時々見返すのはいいものですね。
今はEXIFがあるので日時もはっきりわかります。
(2003年03月19日 13時52分 / RICOH GR-Digital)

2011年9月11日日曜日

FlashDevelop adl.exe 画面サイズ

FlashDevelopでAIRアプリをデバッグするとき、画面サイズが標準を指定していないためか、変に縮小表示されて困っていましたが、これはadl.exeにscreensizeオプションを渡すことで解決できました。

Adobeによると以下のようになっていますが
http://help.adobe.com/ja_JP/air/build/WSfffb011ac560372f-6fa6d7e0128cca93d31-8000.html
-screensizeで具体的な数値を入れる方法と、文字列リテラルを渡す方法があります。

FlashDevelopではProject->ProjectProperty->Output->TestMovie->Run custom command
で指定します。

ただ、FlashDevelopのOutput->General->Dimentionsで480x760などのようにで縦に長いとかいうことで、screensize画面指定より大きい辺があると、縮小表示されますので、ScreenSize=800x600:1280x760ならばここも800x600といった具合にします。
ちょっとわかりにくいですね。

なお、次のようにすると、起動時に選べます。
C:\flex_sdk_4_android\bin\adl.exe; -screensize $$(ScreenSize=480,Droid,iPad,800x600:1280x760) application.xml

制作・©:のぼる/N.Lab