質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.83%

  • Unity

    3248questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • CPU

    25questions

ポリゴン数とフレームレートの関係について

解決済

回答 3

投稿

  • 評価
  • クリップ 4
  • VIEW 985

kaz2zak

score 19

分からないいこと

①ポリゴン数を減らすと、フレームレートが上がるのは明白ですが、指数関数的に増加する理由がわかりません。
②ProfilerのCPU Usageの測定図と、Hierarchy右横のCPU(ms)に表示される値からの計算値とが異なるのはなぜでしょうか。

①について

病院にあるCTでファントムを撮影し、臓器ごとに三次元化したものを、Virtual Reality(Gear VR)内で観察できるよにしています。
CTのデータからそのまま三次元化したデータでは、頸骨~鼠径部の範囲の骨のデータだけで約56MBあります。
このままでは、目標レートの60fpsは達成できないため、ポリゴン数を減らし、最適化することにしました。

他の条件を一定にし、ポリゴン数のみ元のデータから削減率90%までは10%刻み、90~99%までは1%刻み、加えて99.5%,99.9%で処理を行い、その時のfpsをUnityのProfilerを利用し、連続する10フレームのCPU(ms)から平均fpsを計測しました。
結果は、次のグラフの通りです。

削減率とフレームレートの関係

98%削減した際に60 fpsを達成し、そこからは60 fpsで頭打ちとなったので、今回の条件では98%削減することで最適化されると考えています。
なぜ指数関数的に増加するのでしょうか。。
 

②について

次の図は20%削減した時のものです。(実測値ではないものが混ざっており、見にくくなり申し訳ありません)
この時、CPU:200.20 ms = 4.995 fpsとなりますが、CPU Usageでは50fps程出ているように見えます。

20%reduction
 

99%削除した際は、CPU:16.49 ms = 60.64 fpsですが、80~90 fpsくらいあるように見えます。
99% reduction

このグラフと測定からの計測値で相違が見られる理由としては何が考えられるでしょうか。
スマホのためスペックが低く計測値では遅いが、スペックに余裕があればCPU Usageのグラフのようになるということでしょうか!?

初歩的な質問かもしれませんが、ご教示頂けると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+6

①だけ。
なぜポリゴン削減量vsフレームレートでグラフを描こうと思ったのでしょうか。
「ポリゴン総数」が「処理時間」に比例すると考えるのが自然です。
お示しのグラフから適当に読み取った数値で処理時間vsポリゴン数のグラフを書いてみましたが、一定量までは綺麗に比例するグラフになりました。
また、これはすなわち元のグラフは指数でなく反比例だったことになります。不用意に指数関数的などと厳密な数学用語を使わないほうがよいでしょう。
処理時間vsポリゴン数

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/29 08:37

    ikadzughi様
    回答ありがとうございます。

    縦軸を処理時間に取れば良かったんですね!横軸をポリゴン総数、縦軸を処理時間にすることで回答者様が提示して頂いたようなグラフになりましたし、削減率を横軸にとることで負の一次関数になりました。

    よくよく考えれば、フレームレートは処理時間で割っているので、反比例のグラフになりますよね。
    急激にフレームレートが上がったので何かからくりがあるのかと思いましたが、グラフの取り方の問題だったとは恥ずかしい限りです。
    ①については解決しました。ありがとうございます。

    キャンセル

0

CTデータから三次元データへ変換した時に、どのようなデータになっているか、わかりますでしょうか?
というのも、消費されているリソースがCPUでありGPUではないというところから、ボトルネックになっているのは単なるポリゴン数ではなさそうです。

Unity公式の以下が参考になると思います。
https://docs.unity3d.com/ja/current/Manual/OptimizingGraphicsPerformance.html

また、ポリゴン数や使用しているCPU、GPUの情報はありますでしょうか?環境によってどの程度のポリゴン数なら適正なのかかなり変わりますので。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/28 21:46

    gesyutapo 様
    回答頂きましてありがとうございます。
    CTのデータはDICOMであり、3D Slicerというソフトを使用し3次元データにし、objファイルで一度保存します。(stlかobjしか選択肢がないため)
    その後、blenderを用いてポリゴン数を削減し、このときはfbxファイルで保存しています。


    なるほど。ポリゴン数を削減することで、フレームレートも上昇したので、ポリゴン数由来かと思っていました。
    https://unity3d.com/jp/learn/tutorials/temas/performance-optimization/diagnosing-performance-problems-using-profiler-window
    にもありますが、GPUに対応していないデバイスですが、GPUバウンドにはなってないので、gesyutapo様が仰られるようにボトルネックは別のところにあるのですかね。。

    ポリゴン数は骨が一番多いのですが削減前は2991640という膨大な数で構成されています。

    CPU,GPUは自分の使用しているGalaxy S8に依存しております。

    キャンセル

0

②について解決できたのでこちらに記載します.

unity プロファイラーウィンドウを使ってパフォーマンスの問題を診断する
にVSyncは無視できると記載があったので,VSyncを非表示にしていたのが,グラフとCPU(ms)の差異の原因でした.
しっかりと,上の診断するの内容の中に「Vertical Synchronization(VSync)は、ゲームのフレームレートを、表示される画面のリフレッシュレートに一致させるために使用されます。」と記載されていました.
VSyncを表示させてprofilerを確認したところしっかりと一致していました.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Blender Game Engineでマテリアルを透過したい

    Blenderでゲーム開発をしようとしているものです。 Blender Renderで透過処理したマテリアルをBlender Gameに反映させたいと思っているのですが、透過でき

  • 解決済

    jupyter notebookで起動したWEBインターフェース上に実行ボタンなどが現れない

    質問内容 jupyter notebookで起動したWEBインターフェース上に実行ボタンなどのツールバーが表示されないので、表示されるようにしたい。 詳細は下にあります。

  • 解決済

    UIScrollViewのStoryboards上でのY座標がおかしい

    UIScrollViewの設定値が、どうしても最上部がマイナス値になってしまいます。 contentOffsetの値を、実行中に y:-56 とかにするとうまく表示されるので

  • 解決済

    Xcodeアプリファイル生成先

    Xcodeでアプリをbuildした際に、生成されるアプリファイル(.app)はどこに保存されるのでしょうか。 buildを行った後、findで検索をかけても見つからず困っておりま

  • 受付中

    ER図について

    つぶやきアプリを作っているのですが、 ER図を作るとする例えばどんなものがありますか?? サンプル程度でいいので教えていただきたいです

  • 解決済

    pycharmのpython console部分の色の変更

    プログラムには関係ないんですが・・・ 長時間PCの画面を見てると目が疲れてしまうので、色を変えてみようと思って 色を変更してみたのですが、python consoleの部分の色

  • 解決済

    vb2017でexcel2016操作

    vb2017を使っています。 communityです。 excel2016を開いてセルのデータを読み込みたいと思っています。 参考にしているサイトです。 http://d.

  • 受付中

    Warning: Parameter 2 to mysqli_stmt::bind_param() ...

    以下のコードを実行すると表題のエラーメッセージが出ます。サイトによっては$paramsの前に'&'を加えるとのことですが他のエラーメッセージが出てしまいます。ちなみにcodeはアル

同じタグがついた質問を見る

  • Unity

    3248questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • CPU

    25questions