ブログトップ 記事一覧 ログイン 無料ブログ開設

ゲームの花園 このページをアンテナに追加 RSSフィード

2012-02-23

「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


講師

概要

  • セガさんで走っている、Unityを使ったiPhoneアプリのプロジェクトから出てきた、グラフィック最適化のノウハウの総括

レジュメ

環境

  • Maya 2012
  • Unity3.5
  • iPhone4(4Sではない)
    • 4で30fpsを保てれば、4S・iPad2では60fps出るくらいの感覚

はじめに

  • Unityのマニュアルに書いてある事は正しい
    • ただし具体例がちょっと少ない
    • マニュアル自体、iPhone3をベースに書かれているので少し古い

iPhone4の特徴

大きなサイズのテクスチャが使える!沢山?
  • ライトマップが普通に使える
  • むしろ頂点カラーに焼くのが駄目
    • 頂点カラーのシェーダ自体が無い
    • しかも作っても遅かった
  • レイヤーテクスチャよりも1枚のテクスチャ
  • テクスチャ設定のAniso Level(異方性フィルタ)を上げても、ほとんどコストがかからない
    • そもそもMipmapの設定が無いのでAniso Levelで調整
    • ライトマップを焼くと、デフォルトで「3」が入る。
    • 「6」くらいにしてもほとんど描画コストが変わらない
Retinaディスプレイ

最適化

  • どのくらい重い?
    • Draw Call : 200以上
      • 15fps 近辺
    • Draw Call : 100以上
      • 30fps
    • Draw Call : 50あたり
      • 60fps
  • メッシュの確認方法
  • 「In Summary Combine, Combine, Combine…」
    • マニュアルの中で太字で書かれている一文
    • ハイエンド向けのTipsとして書かれているが、まとめればまとめるだけiPhone4上でも速くなる
      • Draw Callが減る
  • ただし、アーティストが管理しにくくなってしまうと問題
  • 頂点数
    • マニュアル通り、50000頂点くらいが望ましい
    • "Tris(ポリゴン)"ではなく、"Verts(頂点数)"が重要
    • Hard Edgeを使うと、ポリゴンが分けられ、頂点数が増えてしまう
    • Normal Mapを利用するモデルならば法線の情報が焼かれているので、全てソフトエッジにした方が良い
  • またライトマップを焼き付けた後のポリゴンメッシュは”Normal”のパラメータを"None"にして法線を破棄すると、少しパフォーマンスが上がる
何が処理を重くするのか?
  • リアルタイムライティング
    • 描画面積が小さければ問題ない
  • フォグは重くなる?
    • 使っても問題ない
    • iPhone3時代の話?iPhone4では問題にならない
    • それよりも、無いと絵作りが破綻する
      • またフォグを利用しつつ、距離でカリングをする事も重要
  • フィルレートが低い
    • フィルレートが高かったハードには出会った事ないが・・・。
    • 半透明は相変わらず危険!
    • 面積がそれほど大きくなければ、エフェクトは結構出る
    • パンチスルー(cut out シェーダー)が重い
    • アルファテスト苦手
処理を速くするための対処
  • まずはカリング
    • 表示しないのが一番
    • カメラの視錐体でカリング
    • 3.5から入ったLODも使える
    • 距離に応じてカリングする処理をスクリプトで実装
    • ゲームデザインでの工夫
      • 一直線で遠方まで見渡せる地形を極力避ける
      • 壁を設け、視線を遮る
  • スキニングオブジェクトを少なく
    • ジョイント数も少なく
    • ただし、動く親子構造のメッシュより、スキニングのメッシュが良い事もある
    • 例:クレーンなどの機械的なオブジェクトで、土台・アーム1・アーム2・爪本体・爪(右)・爪(左)などを分けてアニメーションさせると、Draw Callが「6」かかる
    • Draw Call 100以下を目指す時に「6」取られるのは危険。10個配置すると「60
    • そういう場合はスキニングして1メッシュ化する方が高速。Draw Callが「1
  • 1Skin Cluster, 1マテリアルが理想
    • コンバイン、コンバイン、コンバイン
  • ライトマップは低ポリゴンに都合が良い
    • 地形(Terrain)に家などをブッ刺しても、ライトマップは良い感じに焼けてくれる
      • 頂点カラーに焼く場合は、頂点の流れを考慮しないと行けなかったが
    • 大きなテクスチャが使える事と相性が良い
  • Unity標準のスカイボックスに問題がある
    • テクスチャの圧縮が汚い
    • 立方体でレンダリングするのでDraw Call が「」かかる
    • 従来ながらの半球(全球)が効率が良い
      • Far Clip問題
      • 半球用のカメラを用意し、半球を写しておけば、Far Clipで消え無いようにできる
  • 出来るだけまとめる
    • 配置されている同一オブジェクトは出来る限りまとめる
    • 半透明を使っているオブジェクトは、ソートで問題が出る場合がある
      • ソートはオブジェクトのセンターから行われる
      • レイヤーが見ない方向に留意しセンター位置を編集
      • 360度見る可能性があればまとめないのも手
iPhone4を大まかにまとめる
  • iPhone4以降のモデルなら、ひとまず3Dモデルを表示してしまう
  • 最適化は常識的な範囲で行えば十分!

ドンドン出してみれば良いのだ

シーンの管理

f:id:Aqu:20120224003138j:image:w360

エディター・エンジンとは何なのか?

  • 効率アップには絶対に重要な事
    • 繰り返し試せる
    • 作業中と最終結果の見た目が同じであればあるほど良い
    • 似た作業は同じ様に出来る
  • これらの事はコンテンツ工学で決まっている
コンテンツ工学の現状

f:id:Aqu:20120224005034j:image:w360

  • 日本の開発には、コンテンツ工学の部分が抜けている
    • なんとなくツールを使ってそれなりのデータを作成は出来るが、効率的ではない

コンテンツ工学

    • 職人技を一般化。誰でも出来るように
      • 勘に頼る部分を数値化
      • 実際にどういうテクノロジーなのか、どういう手順なのか調べる
      • 客観的な分析
      • 学びやすいように体系的な情報にする
    • これらを工学面でまとめ、コンテンツに応用したもの
  • ゲームに置けるアーティストやプログラマの行っている作業をどうしたら効率が良くなるかを考えて、考えて、考えたものがゲームエンジン

おすすめ書籍

  • 映像コンテンツの作り方:コンテンツ工学の基礎
映像コンテンツの作り方―コンテンツ工学の基礎

映像コンテンツの作り方―コンテンツ工学の基礎

餅は餅屋で

  • Unityには様々なミドルウェアが内包されている
  • 専門部分は専門家に任せて、日本人には日本人の得意分野で戦えば、まだまだいけるはず

以上。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証