little things of mine

from los angeles, california

Month: January, 2005

texture filtering

レンダリング時のtexture filteringを意識した事のある方はどのくらいいらっしゃるでしょうか. 偉そうに書いている自分もこちらで働き始めてから学んだ事なのですが,ペイントしたテクスチャ,proceduralなテクスチャを問わず,テクスチャを常に綺麗に見せるのは至難の業です.(これは先日書いた記事にも関係する事なので,リンクを) 今回はペイントしたテクスチャについて考えます. これは本質的には,レンダリングされる画像の解像度とテクスチャの解像度が一致しない事が原因です.これを常に一致させる事ができれば,ほぼ確実なアンチエイリアスが可能になり,アニメーションやカメラ位置に関わらず美しいレンダリング結果が得られるでしょう. しかしながら,テクスチャの一部しか画面に出ていなかったり,カメラとオブジェクトの距離が変化したり,オブジェクトの面積がdeformによって広がったりする限り,これらを一致させる事は不可能です.この解像度の不一致によるaliasingをある程度防ぐ為に,mipmappingやanisotropic filtering等が考案されてきました. これらの手法は基本的にフィルタによってaliasingを防ぐ事が目的であり,下手をすればディティールが死んでしまいます.そして,殆どの場合,これらの調整はユーザパラメータになっており,その場面に応じて調整する必要があります.レイトレーシングの場合は反射や屈折が起こり,更に問題が複雑になります. この調整がなかなか大変で,自分は以前,綺麗に見せるためにパラメータをアニメーションさせた事さえあります. 最近(と言っても’99ですが)になり,”ray differentials“と言う,現在の所最も有効と思われる手法が考案されました. これは大まかに言うと,あるサンプルレイと画面上でdx(若しくはdy)だけ異なるサンプルレイとの三次元空間上のdifferential(変化量)を計算し,それをフィルタ幅の指標に用いるという手法です.x方向y方向それぞれのdifferentialがあるのでdifferentialsと複数形になっています. ray differentialはレイが反射や屈折をしても計算可能であり,上記リンク先の論文中にあるテストレンダリングでもかなり良好な結果が得られている事が分かると思います.また,これは画面上での変化量を知る大変便利な指標となり,他にも色々と応用が利きそうです. こんなに素晴らしいray differentialですが,商用のレンダラで実装している物はまだ殆ど見かけません.(注:自分が知らないだけの可能性もあります) ところが,このtexture filteringの問題をもうずーっと前から解決している手法があります.それはPRManに代表される,Reyesです. Reyesではあるsplitされたprimitiveが画面上でどのくらいの解像度を持つか,シェーダを評価する前に知る事ができます.また,2のべき乗に整形されたテクスチャは,そのprimitiveにほぼ一致するテクスチャを探し出す事を可能にします.また,Reyesはレイトレーシングをしない事を仮定しているので,いつでもこの規則に従ってテクスチャの解像度を選ぶ事ができます. 最近のReyesレンダラはPRManを含め,こぞってレイトレーシングを実装していますが,恐らくレイトレーシングした先の解像度はかなり荒っぽい方法で求められており,一次レイの画像程美しくは無いでしょう. Reyesは間違いなく映画をレンダリングする為のレンダリング手法として編み出されており,全てのバランスを考えると,とても良く考えられた素晴らしいアーキテクチュアだと思います.これが二十年以上も前に考案された事にはただただ驚くばかりです. なんだか本題からずれてしまいましたが,フィルタの話はサンプリングの話と関わりが深く,基本的にpoint sampingなレイトレーシングでは色々と問題になる事が多いため,現在の所,人間が頑張って綺麗に見せていると言うのが実情です.

偽ファミコン

少し前の記事みたいですが,興味のある記事を読みました. シアトルで海賊版ゲームの販売を差し止める仮処分が下る – Nintendo iNSIDE 記事で問題になっているハードウエアは,Nintendo64やPlayStationのコントローラにそっくり(型番によって違う)な形のコントローラで,それに直接ビデオアウトと電源コネクタが付いている,何ともワイルドなゲーム機です.内蔵のメモリにファミコン時代の数百種類のゲームが内蔵されています. つまりコントローラ自身がゲーム機になっていて,テレビのビデオインプットにつなぐだけで即ファミコンという訳です. これ,アメリカだと普通にショッピングモールなんかで露店売りしてるんです.値段は大体$60前後.あんまりにもおおっぴらなので,法律的な問題は何らかの形で回避しているのかも,と思っていましたが,まんま海賊版だったんですね… 自分はゲームを全くやらないのですが,ファミコンという妙な懐かしさと,暇つぶしに丁度良いかなあと思って,何度か購入を考えたものの,洒落で買うには中途半端に高い値段に踏ん切りが付かないままでした. 上記の記事によると,ひとまずはシアトルだけみたいですが,他の州でもあれだけおおっぴらに売る事は近い内に無くなるでしょうね.買うなら今の内…?

ホイールカバー

愛車の右前輪ホイールカバーが無くなってしまいました… アメリカは道路の状態が悪いのが当たり前なのですが,夜に走っていたら,突然道路に大きなアスファルトの亀裂ができていて,それを踏んでしまいました. スピードが出ていたのと,その亀裂がタイヤに衝撃を与えるのに丁度良い大きさだったらしく,タイヤだけでなくホイールをぶつけた音がしたので,一瞬パンクしたかと思ったのですがそれは免れ,良かったと思って家に着いてみたら,亀裂を踏んだ右前輪のホイールカバーが無くなっていました.自分の車のホイールカバーはネジ止め式では無かったので,衝撃で外れてしまったのでしょう. もしかしてと思ってその亀裂のあった辺りに落ちていないか探しに行ってみましたが,見つかりませんでした. 一つだけ付いてないのはとてもみっともないので,どうしようかなあと考えているのですが,同じ車のホイールカバーがeBayに安く出ているようなので,それを落札しようかと思っています. この際アルミホイールに交換する手もあるんですが,やっぱり出費がねえ…

動くという事

趣味や仕事でCGを作っておられる方は,動画,静止画のどちらを主に制作されているでしょうか. 我々の作るCGは映画用なのでもちろん動画ですが,動画は基本的にはパラパラ漫画ですから,静止画を繋げて行けば動画になります.ところがCGの場合,絵が動くという事だけで静止画のやり方が通用しなくなる事が多々あります. 物量,マシンリソースや人的リソース,お金と時間の問題は,制作されている環境でそれぞれ条件が異なるでしょうから,ここでは触れません.今回はもう少し技術的な問題で過去自分が体験した事,主にレンダリングに関する事について書こうと思います.が,一つだけ. 映画用のCG制作というと,資金も設備も潤沢で,レンダリングパワーの掛け方も違うだろうと思われる事が多いのですが,実際はそうでもありません.確かに規模は大きいのですが,それはレンダリングする枚数が多いからであって,一枚の絵に裂く事ができるパワーはそれほど大きくありません.いくら映画産業でも,3GHzのCPUをデュアルで使って,2Kの画像一枚に十時間かけるような事はできないのです. さて,それでは技術的にはどんな問題が起こり得るか. 一番良く起こるのが,aliasingの問題です.静止画の場合,レンダリングする画像一枚だけが綺麗にアンチエイリアスされればそれで良いのですが,動画の時は前後のフレームと綺麗に繋がっている必要があります.テクスチャ,特にバンプマップに高周波なテクスチャ(ディティールの細かいテクスチャ)を使用すると,これがチラチラしてしまう事があり,レイトレーシング及びHDRIを使用したレンダリングの場合特に顕著です. これは本質的にはサンプリングの問題なので,Monte Calro法若しくはそれに近いサンプリング法を用いた場合にも付いて回る,非常に厄介な問題です.近年流行のglobal illuminationには必ず使われる手法ですから,同じ問題が生じるケースが少なく無いでしょう. 次にmotion blurです.映画CGの場合motion blurは必須ですが,ブラーをかけるにはmotion vectorが必要で,自分達で作るツール,プラグイン,シェーダ等はそれぞれがきちんとmotion vectorを生成できなければなりません.大抵の場合はレンダラ自身が生成するベクトルで十分なのですが,レンダリング時にジオメトリを生成するようなツールの場合,ベクトルを自前で生成する必要が生じます. それから,deformするオブジェクトのテクスチャが動いてしまう問題.単純なtransformationのみのアニメーションであれば起こらない事ですが,deformが無いアニメーションはまずあり得ませんから,ポーズによってはテクスチャが非常に伸びてしまったりします.また,procedural textureの場合も模様が流れてしまう事があります.これらはUVをシェーダ側で補正したり,riggingで補正したり,reference meshを持たせたりして防ぐ必要があります. この他にも,その時々で起こる小さな事は沢山あります.レンダリングでさえ静止画との違いでこれだけ問題が生じるのですから,animation/riggingの人達の苦労は計り知れません.

熱意

今日は思いがけず嬉しい事がありました. 以前紹介したブログ,港区赤坂四畳半社長のshi3zさんから突然メールを戴き,LAでお会いする事が出来ました. 出張でLAにいらしている事はブログで知っていましたが,まさかメールを戴けるとは思いもしませんでした.私のブログに興味を持って戴いたようで,嬉しい限りです. 仕事の記事に関して,もう少し具体的に書いて欲しい,とのお言葉を戴きました.守秘義務の関係であまり書けない事があるのですが,記事が不明瞭な時にはコメントを戴けると助かります. それとも,小さなBBSでも追加しましょうかねえ,その方が書きやすいかな?ちょっと検討してみます. さて,今日はshi3zさんと他の会社を経営されているCEOの方の,お二人にお会いし,一時間程おしゃべりをさせて戴いたのですが,自分は普段,経営側の人間と接する事は殆ど無いので,経営側の考え方を直接聞く機会を得られたのはとても良い経験でした. 経営側とは言え,彼らから強く感じたのは,ゲームがとても好きなんだなあと言う事でした.自分はゲームを殆ど(と言うか全く)やらないので,その世界の事は良く分からないのですが,熱意というか,思い入れというか,そう言う物は伝わってきました. 私が思うに,こういう気持ちはとても大事だと思います.同じ会社に働く人達の中には,仕事は生活の為と割り切っている人もいますが,我々のような仕事の場合,その仕事が好きである事が何よりも力になって,より良い次へのモチベーションになると思います. 経営側というのは,ともすれば現場から悪口を言われる立場になりがちですが,少なくとも彼らには現場と同じ情熱があるのではないかと感じました. 追記: shi3zさんのブログで記事にして戴いたようです.有難う御座いました. 港区赤坂四畳半社長:マトリックスリローデッドは次世代ゲーム画面のプレビューだ