一年の計は元旦に在り – 8
謹賀新年
2012年ですね.一説によると,今年で世界が滅びるそうです.すでに映像化もされています.
自分は今年で渡米10年になります.色々と区切りの年にしたいと思いますし,これから先に自分がどう在りたいかを考えたいと思っています.
本年もどうぞ宜しくお願い申し上げます.
謹賀新年
2012年ですね.一説によると,今年で世界が滅びるそうです.すでに映像化もされています.
自分は今年で渡米10年になります.色々と区切りの年にしたいと思いますし,これから先に自分がどう在りたいかを考えたいと思っています.
本年もどうぞ宜しくお願い申し上げます.
Today, Steve Jobs passed away.
Sad day, VERY sad day more than I had imagined.
R.I.P Steve Jobs.
あまりに更新が滞り過ぎなので,SIGGRAPH 2011の感想を.
今年はSIGGRAPHがアメリカ国外で開催された年でした.場所はカナダのVancouver.近年Vancouverは映像産業の誘致を積極的に進めていて,今では多くのスタジオが支社を置いています.メジャーどころでは,Imageworks,Digital Domain,Pixar,MPC.ILMがもうすぐできるし,あとImage Engineは本社があります.他にもMethodやRainmaker,Prime Focusと言った中規模のいい会社もあります.今現在で最もホットな求人エリアなのです.
さて,カンファレンスですが,今年も滞在期間が三日半と短かったのに加え,会社から聴講するように割り当てられたセッションが多くてあまり自由に動くことができず,何度も見たかったセッションを逃してしまいました.以下はその少ない中からどうにか拾ったものです.
[ Courses ]
“Production Volume Rendering 1” & “2“がとてもいいセッションでした.スピーカーは大手スタジオでボリュームレンダラを書いている開発者の面々で,基礎から実用の詳細まで語られていました.スピーカーの一人,Magnusのサイトからコースノートがダウンロードできます.TDは必見.
Production Volume Rendering (SIGGRAPH 2011) — Magnus Wrenninge
Magnusは更に本の出版を予定しているそうです.実際に動くレンダラのコード付きで,リリースは来年とか.こういう情報は今までほとんど表に出てこなかったで,自分も含め興味のある人はウハウハでしょう(笑).
[ Talks ]
“Facing Hairy Production Problems“と,”Fur and Feathers“のセッションで,大手数社がhairやfur,featherのスタイリングやインスタンスのパイプラインをどう構築したかが紹介されたのですが,各社ノードベースのコアエンジンを自前で開発したところが多いようです.同じエンジンをスタイリングとインスタンス処理の両方に使うことで,巨大なデータを受け渡すことなくレンダリング時に最終的なデータを生成する事ができるようになります.
こういうアプローチは今後いろんな所で進められると思います.うちらは”deferred pipeline”と呼ぶ事が多いのですが,要するにレンダリングされる直前まで実際のシーンを作るのはやめて,代わりに「そのシーンをどう作るか」を記述したレシピみたいなものを用意し,レンダリング時まで最終的なシーンの生成を先延ばしにしよう,という考え方です.Houdiniに代表されるようないわゆる”procedural”をより一般的な作業にまで広げた感じですね.
実はKatanaはまさにこういうパイプラインを構築するためのツールで,ライティングに必要な処理,例えばマテリアルやテクスチャのアサインなどを”deferred”にするためのものです.
[ Technical Papers ]
Paperはほとんど見れませんでした...これとか見たかったんだけどなあ.
このくらいですね.
Vancouverは以前にも何度か訪れた事があったのですが,やっぱりとてもいい場所です.自然が多くて街並みも綺麗.会場もLAのConvention Centerに比べるとだいぶオシャレでした.
来年はまたLAに戻るようですが,是非またVancouverで開催して欲しいと思います.
久々に開発ネタです.
最近仕事で必要になり,10年ぶりくらいにOpenGLを触っています.PythonからPyOpenGL経由です.GPU出現以降のmodern OpenGLは真面目に書いたことがなかったので,勉強すること盛り沢山.
PyOpenGL — The Python OpenGL Binding
PyOpenGLでHDRIを扱う時にちょっと引っかかった問題があったので,忘備録を兼ねてここにまとめます.数年前からリアルタイムでもHDRレンダリングが流行っていたので,知っている人には今更な話題ですが...
解決にあたって@K240さんに多大なる助言を戴きました.有難うございます.
さて,今時のVFXたるもの,ピクセル値はHDRがディフォルトです.[0, 1.0]ということはまずない.ライティングや反射マップにはほぼ必ずHDRIが使われるので,ハイライト部分は1.0を超えます.OpenGLでも普通に1.0を超える値は使えますし,GLSLシェーダでもfloating pointで計算ができます.
ところが,一度ディスプレイバッファに値が書き込まれてしまうと,どうやらピクセル値は[0, 1.0]にclampされてしまうようなのです.具体的には,glReadPixels()を使って得られる値がclampされています.glCopyTexImage2D()なんかも同じ.これは困る.
さらに調べを進めると,どうやらmodern OpenGLにはframe buffer object(FBO)という物があり,オフスクリーンの描画用バッファとして使え,更にデータタイプとして32-bit floating pointが指定できます.つまり,一度このFBOに描画することでシェーダを実行し,そこから値をコピーすることで生の計算結果を取得できます.ただしこのFBOはオフスクリーンなので,結果を画面に表示するには再度ディスプレイバッファに描画してやる必要があります.
計算結果をコピーするにはglGetTexImage()という関数を使うのですが,C言語ではこの関数は値を返さず,結果の書込み先としてポインタを渡すことになっています.しかしPythonにはポインタがありませんから,関数が値を返します.つまり次のように書きます.glGet*()やglGen*()系の関数は大抵こういう仕様になっています.
result = glGetTexImagef(GL_TEXTURE_2D, 0, GL_RGBA)
そして,ここでハマったのですが,上記で得たresultは三次元配列で,そのレイアウトは[y][x][c](cはチャンネル)となっています.てっきり[x][y][c]だと思い込んでいたので,場所が一致せずに悩んでしまいました...
以下にサンプルコードを置いておきます.これは@K240さんがC++で書いて下さったコードをPythonに移植したものです.実行して表示される画面を左クリックすると,その場所の生ピクセル値がコンソールに出力されます.
今回,GPUで色の計算(カラースペース変換とか)をやってみたのですが,さすがに速いですね.大きな画像だと普通にやるよりマジで何十倍も速いです.Pythonだと何百倍じゃないでしょうか.昔から3Dをリアルタイムでやる事にあまり興味はないのですが,2Dの画像処理を高速化するためにGPUを使うのは楽しそうだと思っています.コンプ作業が楽しくなりそう.
最近だとOpenCLとか使うんでしょうね?もう少し重たい計算もやってみたくなりました.
[2011/4/6 追記]
どうやらPyOpenGLのglGetTexImage()にはバグがあるようで,テクスチャが正方形でない時に関数が返す配列がおかしいです.ご注意下さい.
今日は米アカデミーの授賞式でした.
Winners for the 83rd Academy Awards
期待していた”Inception”はBest Pictureこそ逃しましたが,四冠でした.Visual Effectsを受賞したのはスバラシイ!ストーリーとDouble Negativeの仕事が見事に調和されて素晴らしかったです.Imageworksによる”Alice In Wonderland”のVFXもとても良かったですが,”Inception”は作品自体の魅力で引っ張り上げられた感じですね.”Alice”のArt DirectionとCostume Design受賞は納得.
Animated Feature Filmには”Toy Story 3″.自分の周りでは”How to Train Your Dragon”もかなり評価が高かったようですが,個人的にはどちらもそれほど印象的ではありませんでした.でもまあ順当だったでしょう.残るひとつの”The Illusionist“という作品は知らなかったのですが,絵がとても素晴らしいです.いつか是非観てみたい.
意外だったのがPixarの”Day & Night”を押さえてShort Film (Animated)を受賞した”The Lost Thing“.自分はこの作品をどこかの動画サイトで観たのですが,個人的に感じるものはあったものの,映像作品としてはアニメーションやその他荒い所があったし,”Day & Night”が良かったのもあってPixarで堅いだろう,と思っていました.Academyがこういう作品を選んだ事にちょっと驚きです.
技術者向けのアカデミー,Scientific & Technical Awards Winnersのリストはこちら.
Scientific & Technical Awards Winners
今年はファームのjob queuing systemが受賞してますね.シブイなあ...でもこういった縁の下の力持ちにスポットが当てられるのは嬉しい.こういう話はあまり表に出ないと思うので自分の知っている限りで少し紹介します.
“Rush”はDDで使われている”Race”というqueuing systemが前身となっていて,同じ開発者が書いたそうです.DDはまだRaceを使っています.
“Alfred”はPRManに付いてくるqueuing systemです.かなり長い間売られていましたが,最近は”Tractor”という次の世代の製品に変わりました.Pixar社内でも使われているようです.
“Queue”はImageworksで使われています.完全な内製ツールで,販売はされていません.
“ObaQ”はILMのqueuing systemだそうです.名前がサイコーです.これも内製.
こっちもInceptionが複数受賞,Animated FeatureはDragonばっかりですね.まあ,業界人の集まりですからこんなもんかな.