「UnityでiPhone向け3Dゲームを作る」レポート
本日「3DCGツールとUnityによるゲーム開発実践セミナー」に参加してきました。
そこで講演されたセガさんのUnityを使ったiPhoneアプリのグラフィックの最適化の話が、大変濃かったのでレポートします。
2012 / 02 / 24 07:40 追記
Game Watchさんにレポートが上がりました。写真が豊富でわかりやすいです!
http://game.watch.impress.co.jp/docs/news/20120223_514183.html
講師
- 株式会社SEGA
- チーフデザイナー
- 築島智之
レジュメ
- iPhone4で3Dを快適に動かす方法
- iPhone4の特徴
- 最適化の方法
- シーンの管理方法
- ゲームエンジンとコンテンツ工学
環境
- Maya 2012
- Unity3.5
- iPhone4(4Sではない)
- 4で30fpsを保てれば、4S・iPad2では60fps出るくらいの感覚
はじめに
- Unityのマニュアルに書いてある事は正しい
- ただし具体例がちょっと少ない
- マニュアル自体、iPhone3をベースに書かれているので少し古い
iPhone4の特徴
大きなサイズのテクスチャが使える!沢山?
- ライトマップが普通に使える
- むしろ頂点カラーに焼くのが駄目
- 頂点カラーのシェーダ自体が無い
- しかも作っても遅かった
- レイヤーテクスチャよりも1枚のテクスチャ
- テクスチャ設定のAniso Level(異方性フィルタ)を上げても、ほとんどコストがかからない
- そもそもMipmapの設定が無いのでAniso Levelで調整
- ライトマップを焼くと、デフォルトで「3」が入る。
- 「6」くらいにしてもほとんど描画コストが変わらない
Retinaディスプレイ
- アンチエイリアシングしなくても綺麗
- ほとんどドットがわからない
- Unity上でちょっとボケたテクスチャでも、iPhone4上では綺麗に見えるレベル
- 逆に言うと、Unity上で綺麗に見えているテクスチャは豪華すぎる可能性もある
最適化
- 注意すべきはDraw Call数
- マテリアル数を少なくする
- テクスチャ数を少なくする
- アトラス
- テクスチャをまとめる
- Batch数
- メッシュの確認方法
- Unity上でオブジェクトメッシュを選択すると、オブジェクト毎の形状がサムネイル(右下)で見れる
- ゲームを再生した状態で同じ項目を見ると「Combined Mesh」となり、実際にまとめられたオブジェクトが確認できる
- 「In Summary Combine, Combine, Combine…」
- マニュアルの中で太字で書かれている一文
- ハイエンド向けのTipsとして書かれているが、まとめればまとめるだけiPhone4上でも速くなる
- Draw Callが減る
- ただし、アーティストが管理しにくくなってしまうと問題
- 従来通りMayaでレイアウトする方が良いかも
- 頂点数
- マニュアル通り、50000頂点くらいが望ましい
- "Tris(ポリゴン)"ではなく、"Verts(頂点数)"が重要
- Hard Edgeを使うと、ポリゴンが分けられ、頂点数が増えてしまう
- Normal Mapを利用するモデルならば法線の情報が焼かれているので、全てソフトエッジにした方が良い
- またライトマップを焼き付けた後のポリゴンメッシュは”Normal”のパラメータを"None"にして法線を破棄すると、少しパフォーマンスが上がる
何が処理を重くするのか?
- リアルタイムライティング
- 描画面積が小さければ問題ない
- 多くのテクスチャを参照している
- 3枚以上は重い
- レイヤーテクスチャより、むしろ大きい1枚テクスチャ
- カラー・スペキュラなどを分けて使うとパフォーマンスが下がる
- Unityの標準のテクスチャでは、カラーのα成分にスペキュラが入っている
- 極力枚数を減らす
- フォグは重くなる?
- 使っても問題ない
- iPhone3時代の話?iPhone4では問題にならない
- それよりも、無いと絵作りが破綻する
- またフォグを利用しつつ、距離でカリングをする事も重要
- フィルレートが低い
- フィルレートが高かったハードには出会った事ないが・・・。
- 半透明は相変わらず危険!
- 面積がそれほど大きくなければ、エフェクトは結構出る
- パンチスルー(cut out シェーダー)が重い
- アルファテスト苦手
処理を速くするための対処
- まずはカリング
- スキニングオブジェクトを少なく
- ジョイント数も少なく
- ただし、動く親子構造のメッシュより、スキニングのメッシュが良い事もある
- 例:クレーンなどの機械的なオブジェクトで、土台・アーム1・アーム2・爪本体・爪(右)・爪(左)などを分けてアニメーションさせると、Draw Callが「6」かかる
- Draw Call 100以下を目指す時に「6」取られるのは危険。10個配置すると「60」
- そういう場合はスキニングして1メッシュ化する方が高速。Draw Callが「1」
- 1Skin Cluster, 1マテリアルが理想
- コンバイン、コンバイン、コンバイン
- ライトマップは低ポリゴンに都合が良い
- 地形(Terrain)に家などをブッ刺しても、ライトマップは良い感じに焼けてくれる
- 頂点カラーに焼く場合は、頂点の流れを考慮しないと行けなかったが
- 大きなテクスチャが使える事と相性が良い
- Unity標準のスカイボックスに問題がある
- テクスチャの圧縮が汚い
- 立方体でレンダリングするのでDraw Call が「6」かかる
- 従来ながらの半球(全球)が効率が良い
- Far Clip問題
- 半球用のカメラを用意し、半球を写しておけば、Far Clipで消え無いようにできる
- 出来るだけまとめる
- 配置されている同一オブジェクトは出来る限りまとめる
- 同じテクスチャ・マテリアルを使っているもの
- 半透明を使っているオブジェクトは、ソートで問題が出る場合がある
- ソートはオブジェクトのセンターから行われる
- プレイヤーが見ない方向に留意しセンター位置を編集
- 360度見る可能性があればまとめないのも手
iPhone4を大まかにまとめる
- iPhone4以降のモデルなら、ひとまず3Dモデルを表示してしまう
- 最適化は常識的な範囲で行えば十分!
- テクスチャを大きくできる点を活かす
ドンドン出してみれば良いのだ
エディター・エンジンとは何なのか?
- 効率アップには絶対に重要な事
- 繰り返し試せる
- 作業中と最終結果の見た目が同じであればあるほど良い
- 似た作業は同じ様に出来る
- これらの事はコンテンツ工学で決まっている
コンテンツ工学
おすすめ書籍
- 映像コンテンツの作り方:コンテンツ工学の基礎
- 作者: 金子満
- 出版社/メーカー: ボーンデジタル
- 発売日: 2007/04/01
- メディア: 単行本
- 購入: 16人 クリック: 223回
- この商品を含むブログ (5件) を見る
餅は餅屋で
- Unityには様々なミドルウェアが内包されている
- 専門部分は専門家に任せて、日本人には日本人の得意分野で戦えば、まだまだいけるはず
以上。