syoyoさんとのメール1

syoyo大先生からメールが届きました。ゲーム業界の常識?みたいなものを返信してみました。間違った返事をしているかも知れないんですが、こういった情報ってWeb上に無いと思うので、載せたいと思います。
とりあえず、4通ぐらいを「大人の事情を考慮」して載せます。
(syoyoさんの了承は得ました。)

※以後PS2の話ばかりをしますが、僕はPS2でのプログラマー経験は少ない(1週間のみ)ため伝聞情報です。間違っている可能性が多分にあります。ご容赦ください。

    • -

■syoyo 大先生からのありがたいメール

いまさらですが、SBR 幹事ありがとうございました。
良い感じのお店でしたので、これからもちょくちょく利用させていただこうかと思います。
 ところで、ポリゴンモデルのキャラクタアニメーションの手法でいいのってありますか?
ふつーにボーン(パーツごとに行列)変換が主流なのでしょうか?
ただふつーのボーンだと、よくあるように、ひじとかの変形がおかしくなりますよね。
(それとも頂点ウェイトをつければだいたい解決するのでしょうか)
なるべく 3ds max とかでアニメーション付けできて、collada で出力できて、頂点シェーダで計算できるようなのを希望しています。
それかなんかキャラクタアニメーション手法でこれは読んどけみたいな書籍とかあったらそっちがんばって読むんで、あればぜひ教えてください。


■不肖 &o の全力回答

> ふつーにボーン(パーツごとに行列)変換が主流なのでしょうか?

はい。
みんな、結局は、それで、ウェイトをがんばってつけて、
カメラでおかしいところがばれないように試行錯誤するのが、
「デファクトスタンダード」です。

一応、
回転しかないのであれば、ご存じかと思いますが、
クォータニオンボーンが知られています。

Game Programming Gems 4の5.12 Hardware Skinning with Quaternions
が、参考文献となります。

http://cyberloonies.com/gameprogramminggems.html

■syoyo 大先生からのありがたいメール

なるほど、やはりそうなのですか...

ただ、キングダムハーツとかのアメコミ調のモーションだと、
スキニングというか、ひじひざなどはうまく引きのばしとか
やっているっぽい気がするんですが、そう見えるだけで
そんなことはないのかな?

そうそう、ワンダちょっとやりました。

空間とかの出来がよいですね。
安藤さんもオンラインゲーで広大なマップ処理とかやっていると
思いますが、ああいうのって

o マップをグリッドに切る
o LOD を用意して距離で切り替え
  (Continuous LOD とか今の PS2 レベルで処理できるの?)
o グリッドの先読み

で処理するのがギョーカイのデファクトスタンダード
なのでしょうか?それともほかの手法が使われていたりしますか?


■不肖 &o の全力回答

(ここから僕の暴走が始まったというか、めちゃくちゃ長い返事を書くようになってしまいました。)

> ただ、キングダムハーツとかのアメコミ調のモーションだと、
> スキニングというか、ひじひざなどはうまく引きのばしとか
> やっているっぽい気がするんですが、そう見えるだけで
> そんなことはないのかな?

(諸事情により、ここにあった段落を削除)

アメコミ調の伸びですが、ウチの社内だと、
クォータニオンスキンに拡縮に対応させるための機能拡張を行えば、
モーションを作る人の創意工夫で何とかなっていますよ。

> そうそう、ワンダちょっとやりました。

僕は今日クリアーしました。

> o マップをグリッドに切る
> o LOD を用意して距離で切り替え
>   (Continuous LOD とか今の PS2 レベルで処理できるの?)
> o グリッドの先読み

はい。広大なマップを小さなメモリで表現する方法は、
これしか聞いたことがありません。

(以下、脱線)

まあ、正確には、

> ギョーカイのデファクトスタンダード

は、「そんな仕様はあきらめる」です。
マップの途中で他のゲームのようにやや間を開けて
読み込んでやるようにしたら、ワンダは、
あと1年早くできたのでは!?と思ってしまいます。
ゲーム屋としては、どちらの方がよりよい判断かは、
難しいですが...。

加えて言うと、

> o マップをグリッドに切る

仮に、これはやったとしても、

> o LOD を用意して距離で切り替え

これを用意する前にマスターを迎えてしまいます。
PS2だと満足のいくLODデータは手で作るしかないようです。
どうせ、ワンダも荒く自動で生成した後は、延々と人が直したと思いますよ。

> o グリッドの先読み

これはPS2だと非常に難しいと思います。
ワンダは偉大です。
仮にワンダが名馬アグロではなく、
超高速旅客機に乗ってマップを移動すると、
マップの読み込みが間に合いません。
おわかりかと思いますが、
グリッドの先読みは、

・メモリ容量(PS2の場合、絶望的)
・DISC速度(PS2の場合、絶望的)
・ゲーム中のカメラの最大速度(ゲーム性に依存)
・グリッド分割後の容量(ゲーム性とその案件の画像品質に依存)

に依存します。
これは、ゲーム性にも影響を与える重要な問題です。
特にマップの場合は、コリジョンも問題となるため、
普通のモデルと比べて1.2〜1.5倍程度の容量が必要です。
やはり、

・ゲーム性
 ・カメラ移動速度
 ・必要なコリジョン精度
・モデル制作のコスト
・マップの画質
・ツールチェーンを含むシステム構築にかかるコスト
・場合によってはランタイムプログラム自体のサイズ

の総合的なバランスから、ゲームに特化した形で、
実装されています。
どろくさ〜い世界です。

長々と失礼しました。

(続きは次回の更新で)