Ptex

DisneyからPtexのコードがリリースされました. Ptex Overview PRMan 15.0でPtexがサポートされたので,その他の新機能を含めてまとめて書こうと思っていたのですが,思ったよりも早くDisneyからソースコードがリリースされたので個別に紹介したいと思います. texture mappingは,現在広く使われているUVベースの物が開発されてから,恐らく40年以上,基本的なアイディアは変わらずに来ました.逆に言えばそれだけrobustなものであったとも言えるわけですが,実用レベルでの様々な問題を長年解決できていなかった事も事実です.それらはこのブログでも何度が取り上げた事がありますが,アンチエイリアス,UV空間と実モデルのボリュームの違い,どんなモデルでもUVをきちんと作らなければならない事,などです. Ptexは,Disneyが2008年にEurographicsで発表した,新しいtexture mappingに関する手法およびデータフォーマットで,上記で挙げたような実作業上の問題をできるだけ解決すべく,Disney内部で開発された技術です.Ptexはper-face texture mappingの応用にあたる物と言えるので,細かい事を言えば「UVテクスチャ以来の新技術」というのは言い過ぎかも知れませんが,実用可能なレベルまで改良を施し,きちんと作品に還元できている点で,非常に評価できると思っています.元論文はこちらあります. Ptex: Per-Face Texture Mapping for Production Rendering 特徴を挙げると: – UVフリー – seam問題の解決を含む高品質なアンチエリアス – 部分ごとに解像度を調整可能 – 効率的なデータストレージ 詳しい仕組みは論文を読んでいただいた方が良いと思いますが,乱暴に言えば,ポリゴンフェイス毎に個別なUVを持ち,それぞれ違う解像度のテクスチャを充てている,と想像してもらえれば分りやすいと思います.全ポリゴンがそれぞれ個別なUVを持っているわけですから,テクスチャ座標を人間が作ってやる必要はありません.ポリゴンモデルができた時点で,全てtexture readyになるわけです.(それぞれのフェイスのUVは頂点ループの順番で固定できます) Ptexではそれぞれのper-face textureを全て一つにファイルに保持し,加えてメッシュの繋がり情報を保存しておく事で,複数のフェイスに跨がったフィルタを解決しています.それぞれのフェイスが別の解像度を持つ事は,必要な部分だけ解像度を高くする事ができるわけで,ファイルサイズの節約になりますし,アンチエリアスもディティールを殺さずに済みます. Disneyではprocedural patternもPtexに焼いているようです.個人的にこれはとてもいいアイディアだと思います.焼いてしまうとシェーダレベルで変更ができなくなるので逆行しているように見えますが,procedural patternは,voronoi diagramなど,物によって非常にアンチエリアスの難しい物があるので,むしろテクスチャに焼いてしまった方が問題が少なくなるケースも少なくないのです. さて,とても良さそうなPtexですが,スタジオレベルでの大きな問題が一つあって,それは「Ptexをどうやって作るか」という事です. Ptexの利点を最大限利用するには,フェイス毎にテクスチャをペイントする必要があります.Disneyでは自前の3D paintプログラムを開発してこれを解決したようですが,これはどこでもできる事ではありません. しかし,個人的にはこれには楽観視していて,PRManがすでにPtexをサポートしている事と,今回DisneyがPtexのライブラリとそのソースコードを公開した事で,比較早い時期にZBrushやmodo,BodyPaintのようなツールがPtexをサポートするのではないかと思っています.そうなれば普及は早そうです. 最近のVFX業界は,技術がどんどん(有償無償問わず)オープンになってきていますね.技術の均一化によって値段が更に下がり,単純作業はコストの安い海外へアウトソースされて行きます.これからは単一の技術が生き残る要因にならず,パイプラインのコア技術や優秀な人材など,スタジオの地力みたいなものが効いてくる時代になって行くのでしょう. なかなか厳しい時代になりそうです.