« OpenSky 2.0 | トップページ | トロ・ステーションの紹介 »

2007年2月 9日 (金)

トロの質感への挑戦

P1030114.JPG

先日のGAME Watch の記事「ロストプラネットグラフィクス講座」にはすごくシビれました。スゴイスゴイという噂は聞いていたのですが、あそこまで頑張って実現されていたとは、本当に感心しました。スゴイです。まだ、読んでいないという人はゼヒ、読んでみてください。

ところで、ウチの会社では、あそこまで大規模な開発は出来ないのですが、それでも「まいにちいっしょ」では、次世代機である PS3 の性能を引き出してやろうと、気合いを入れてこだわっている部分があります。どこかというと、それは「トロ」の質感なんです。まさに、ウチならではですネ

ウチの会社では、プレス用のCG素材など非リアルタイムのCG制作の際には、3DMAX の「スカイライト」というレンダラを使用して画像を作成しています。この「スカイライト」はレンダリングも凄く時間がかかるのですが、凄くイイ質感をトロ達に出してくれるので、それでも採用していました。

で、今回、PS3 でトロを表現するにあたって、次世代機なんだしリアルタイムでスカイライトの様な表現ができないかという話しがでてしまい、この無謀とも思える課題にウチのプログラマが取り組んだのです。その際に取りれられたのが、「アンビエント隠蔽(遮蔽ともいう。英語表記は Ambient Occlusion)」というアルゴリズムです。

詳しく書くと長くなるので、簡単に書きますが、アンビエント隠蔽というアルゴリズムは、物体に当たる光が同じ空間にある物体同士で、どのくらい遮られるかという情報を計算し、影を演出する手法です。このアルゴリズムを使用すると、とても柔らかい影を物体につけることができるんですね。だたし、その代わり、計算量は膨大になってしまうという欠点があります。実際、3DMAX のスカイライトも似たような処理をおこなっており、レンダリングに時間がかかってしまう一因でもあります。ただ、一応、アンビエント隠蔽をリアルタイムに実現しているプログラムも、すでにありまして、どうやっているかというと、膨大な計算を事前にすませておくことによって実現しているというわけです。このやり方なら、普通のパソコンで十分、実現できるレベルです。

しかし、その「事前に計算する」という手法が使えるのは、「物体が動かない・変形しない」という前提条件が必須なのです。動いたり、変形したりすると光の遮られ方がかわってしまいますから、事前に計算していた値がつかえなくなってしまうのです。これでは、まったくゲームに使えません。

しかし、次世代機 PS3 なら、その計算もなんとかリアルタイムでやれるのではと考えました。

まずは、普通にCPUだけでアンビエント隠蔽の計算をするテストプログラムをつくり、アルゴリズムの検証をおこないました。そして、予想どうり、十分な品質の画像が得られることが分かったので、次に、高速化に取り組んだわけです。当初は、この計算を RSX( PS3 の GPU) にやらせて高速化を試みたのですが、全然、計算速度が足りませんでした。ぎゃふん

そして、最後の砦、真打ち CELL の登場です!

CELL には SPU というベクトル演算なら、バリバリこなす CPU が7つもついています。そこに白羽の矢がたちました。これまで RSX 用に書いていたコードをイチから SPU で並列計算出来るように書き直して最適化を進めていきました。その結果、SPU を4個使用することで、毎秒30フレームを維持しながら、リアルタイムにアンビエント隠蔽の処理を行えるところまでこぎつけることができたのです。CELL ばんざい。SPU 最高!

ちなみにその後も、最適化はつづけていて、現在のバージョンではさらに処理が高速になっていっています。

実験っぽいテストプログラムはネット上にも多々ありますが、実際に、ここまで全面的にリアルタイムのアンビエント隠蔽の処理を導入したゲームは他に無いと思うので、これはちょっとした自慢なのです。単純に計算量だけを考えると、現状では PS3 以外では、ちょっと厳しいかもしれません。あ、でも先日、発表された NVIDIA CUDA なら全然、可能かもしれないですね。

ま、というわけで、まいにちいっしょのトロの質感は、CELL の SPU を4個も使って実現されている、次世代機ならではモノだという話しでした。まぁ、一見、地味に見えるまいにちいっしょですが、こういうこだわりもあるのです。

|

« OpenSky 2.0 | トップページ | トロ・ステーションの紹介 »

トラックバック


この記事へのトラックバック一覧です: トロの質感への挑戦:

» アンビエント堂島ホテル [アンビエント堂島ホテル情報]
アンビエント堂島ホテルに関する情報のご案内です [続きを読む]

受信: 2007年2月 9日 (金) 14時04分

« OpenSky 2.0 | トップページ | トロ・ステーションの紹介 »