一年の計は元旦に在り - 5

January 1st, 2009

謹賀新年

ブログ開始から丸四年経ち,五年目に入りました.

昨年は働く環境が代わったせいか,一年が早かったように感じました.今年は年の境目がちょうどプロジェクトの境目にあたるので,充実した仕事ができればと思っています.

本年もどうぞ宜しくお願い申し上げます.

The Day The Earth Stood Still

December 24th, 2008

“The Day The Earth Stood Still”を観てきました.

20th Century Fox: The Day The Earth Stood Still

久しぶりに劇場に足を運んだのですが… ツマンネー!これだけ面白くない作品も久しぶりでした(笑).話の展開とかデザインとかもチープ過ぎじゃ?

VFXも微妙に安定していなかった感じがしましたね.いい所とそうでない所の差が大きかったように思います.Wetaが殆どをやったのだと思っていましたが,エンドロールには結構色んなスタジオがクレジットされていたので,そのせいかも知れません.

トレイラーにも出ている,スタジアムが破壊されるシーンは凄かったです.

….. >> VFXWorld / Feature Articles << .....
….. >> VFXWorld / Feature Articles << .....

The Dark Knight

October 27th, 2008

ついでなので連投します.”The Dark Knight”を観て来ました.

The Dark Knight

この作品が遺作となってしまったHeath Ledgerの演技が話題でしたが,いやー,ワルい!The Jokerワル過ぎ!ストーリーもタイトル通りめちゃダークでした.日本ではイマイチヒットしなかったのも分かります.ダーク過ぎだったんじゃないでしょうか.

自分も人に感想を聞かれたら,「良かった」「凄かった」と答えると思いますが,じゃあ好きか,と聞かれたら,うーん,という感じですね.あまりに暗過ぎて,後味が悪く,「楽しんだ」という感じではなかった.これはある意味作り手の術中に嵌まっているわけですから,作品としては成功だとも言えます.

アメリカでは超がつく大ヒットで,”Titanic”を越えるか,と言われていましたが,さすがに頂点の座は厳しそうです.まあ,この暗さではね…

All Time Domestic Box Office Results

VFXはほぼイギリス中心で作られたようです.Double Negative,Framestore CFC,BUFが主なスタジオでした.この辺のスタジオはここ数年でどんどん力を付けてきていますね.アメリカ西海岸大手ものんびり構えていられません.

fxguide - visual effects school - Dark Knight : Imax, Effects and That Bike
….. >> VFXWorld / Feature Articles << …..

しらせ - 3

October 27th, 2008

残念な結果になってしまったようです.

asahi.com(朝日新聞社):南極観測船「しらせ」解体へ 引き取り手見つからず - 社会

物が物だけに,ただ置いておくってわけにもいかないのでしょうが,維持費ってそんなに高いんですねえ.

RSL 2.0

September 2nd, 2008

久しぶりに技術系の話題を書きます.とは言え,かなり現場寄りな話ですが.

PixarのPhotorealistic RenderMan(PRMan)は,13.5からRenderMan Shading Language(RSL)が大改良され,後方互換性はあるものの,今までとはまるで違うshading systemが構築できるようになりました.以下ではこれをRSL 2.0と呼ぶ事にします.

ネットにはまだあまり情報がないようですが,以下で概要を知る事ができます.

RSL - Introduction to Shader Objects

最も大きな変更点は,シェーダをクラスとして記述できるようになった事です.クラスのメソッドとしてsurface()やdisplacement()などを実装してやると,マテリアルとして機能するようになります.pre-definedなメソッドは他にもいくつかあり,それぞれ適切なタイミングでレンダラから呼ばれます.つまり,カスタムシェーダを定義するには,これらのpre-definedなメソッドをoverrideすれば良い,と言うことになりますね.

また,シェーダクラスはメンバ変数を持つ事もできます.このメンバ変数は同じクラス内のメソッドからは等しくアクセスする事ができるので,シェーダ間での値の受け渡しが非常に楽になります.分かりやすい例としては,surfaceシェーダとdisplacementシェーダで同じノイズの値を使いたい場合,今まではmessage passingやoutput変数でやりとりしていましたが,これを単純なメンバ変数へのアクセスで行えます.

クラスですから,もちろん独自のメソッドも定義できます.ただし,これらのメソッドはレンダラから自動的には呼ばれず,明示的に呼んでやる必要があります.これだと今までの関数とあまり変わりなさそうに思えますが,これは次に紹介する新機能で生きてきます.

クラスとして記述されたシェーダは,.rib内で”Shader”という新しいstatementでインスタンスされます.C++で言う所のオブジェクトですね.シェーダオブジェクトです.RSL 2.0では,新しく”shader”という型と,shader型の値を返すgetshader()関数が導入されました.これは.rib内でインスタンスされた任意のシェーダオブジェクトに,別のシェーダ内からアクセスするための仕組みで,更に”->”演算子を使う事でそのシェーダオブジェクトのメソッドを呼ぶ事ができます.アクセス権が許せば,メンバ変数へのアクセスも可能です.

RSLをガッツリ書いた事のある人ならもう気づいたでしょう.これらの仕組みを使うと,簡易的なshading networkを組むことができるのです!Yay!

今までmonolithicなシェーダしか書くことができず,ルーチンの関数化はできても,テクスチャ一枚,ノイズ一つ足すのにコードから変更しなければならなかったRSL 1.0に比べると,これは革命です.dynamic arrayと合わせれば,任意の数のマテリアルをレイヤーすることもできます.

他の大きな利点としては,これらの仕組みによってarealightを楽に記述できるようになりました.PRManはarealightをサポートしておらず,illuminance()ループ内では一つの光源につき一つの(L,Cl)しか返ってこないので,RSL 1.0では全てのlight sampleをmessage passingで無理矢理渡し,自前のlight loopを書く必要があったのですが,RSL 2.0では全てを素直に実装する事ができます.

PixarのプレスリリースでILMのChristophe Heryがこんな事言ってますが,もうまさにその通り!です.

But for us, the most important feature is the modernization of the shading language, allowing us to produce cleaner, yet more efficient shader code, in particular, area light shaders and the layering of complex surface materials.

正直,やっと…という感じですが,上で「簡易的な」と書いたように,RSL 2.0で複雑なshading networkを組むことはできません.一番の理由は,color型やvector型のoutputを持つシェーダを書いたり,それらの型のパラメータに直接つなげる事はできないからです.ただ,RSL 2.0のシェーダはmental rayやMayaのようなinput/outputを使ったshading networkとは少し違ったデザインにすべきかも知れません.この辺についてはまだ自分も悩んでいる所です.

問題は他にもあります.現場にはRSL 1.0で書かれたシェーダが山のようにあり,それがたくさんのプロジェクトで常用されています.RSL 2.0には多くの利点がありますが,あまりにも違いが大きいので,移行するのは簡単ではなさそうです.もちろんRSL 1.0も引き続きサポートされていますから,直ぐに移行する必要はありませんが,シェーダを書いて管理する側からすると,直ぐにでも移行したい気分です.

それに,今のところ,RSL 2.0をサポートするGUI付きのshading network editorはありません.MTORのSlimを含め,RSL 2.0に対応した製品はまだないと思いますから,artistに使ってもらうには新しい製品を待つか,自前で書く必要があります.まあ,RSL 1.0の物に比べれば楽に作れそうですけど.

ここまで来ると,.sloを実行するエンジン部分だけを外部ライブラリとして用意して欲しくなりますね.それがあればRSL 2.0と合わせて色々な事がレンダリングの外でできるようになって,最高にイイ感じなんですけどねー.

今のところ,RSL 2.0はPRManの独自拡張です.RenderMan Interfaceとして規定されているわけではないので,他のRenderMan-compliantなレンダラに組み込まれるかどうかは怪しいですし,何かしらのpatentが絡んでいる可能性もあります.調べてませんが.

PRManのドキュメントには他にも詳しい事が書いてありますので,読める環境にある方は是非一読してみてください.