リアルタイムできれいなレンダリングが魅力のTwinmotionですが、作り込んでライトをポンポン増やしていくとどんどん動作が重くなっていってしまいます。本記事では、どの種類のライトがどのくらいの描画負荷になるのか、その特徴を調べました。
※ 本記事で使用しているTwinmotionのバージョンは2021.1.2です。
検証方法
ボックスの単純な部屋に同じライトを100個インスタンス配置して、描画速度(fps)がどれくらい下がるかを調べます。検証PCのグラフィックはQuadro P2000、Twinmotion用としてはすごく良いとは言えないフツーの環境です。
負荷が分かりやすいよう、描画品質は最高(Ultra)で検証します。(ちなみに描画品質は Edit > Preference > QUALITY から設定します。LowやMediumに下げると、操作ビューの見た目はかなり変わってしまいますが、操作は軽くスムーズになります。)
まず最初に、ライト無しの状態では42fpsでした。ここからOmnidirectional light, Spot light, Neon light, Area lightの4種類をそれぞれ100個ずつ表示して、どれぐらいfpsが下がるかを調べます。
結果
Omnidirectional light
- デフォルト ・・・ 22fps
- Intensity, Colorを変更 ・・・ 変化なし
- Radiusを5m→50mに変更・・・13fps
- Shadow On ・・・ 10fps
- 部屋から出たとき ・・・ 38fps
「部屋から出たとき」というのは、下図のように部屋の外に移動してライトがほとんど見えていない状態のことです(やや光漏れは見えていますが)。この状態でも多少ライトがパフォーマンスに影響を与えているようです。
Spot light
- デフォルト ・・・ 38fps
- Intensity, Colorを変更 ・・・ 変化なし
- Angleを88°→180°に変更・・・16fps
- Attenuationを10.0m→100.0mに変更・・・25fps
- Shadow On ・・・ 22fps
- 部屋から出たとき ・・・ 40fps
Omnidirectional lightと比べると全方位じゃない分、負荷もやや軽いようですが、パラメーターによっては負荷が上がりやすくなります。
Neon light
※検証はライト100個で行っていますが、上図は見やすいようライトの個数を減らしています。
- デフォルト ・・・ 12fps
- Intensity, Color, Lengthを変更 ・・・ 変化なし
- Shadow On ・・・ 5fps
- 部屋から出たとき ・・・ 13fps
少し意外かもしれませんが、Lengthはパフォーマンスに影響しません。私の推測ですが、線光源の厳密な計算をしているわけではなく、一つの点光源を引き伸ばすような計算をしているからだと考えています。
もう一つ注意したいのは、部屋から出たときでもかなりパフォーマンスに影響を与えるということです。複数部屋のCGを作る際、見えていないNeon lightは非表示にした方が良いのかもしれません(自分も普段そこまではやってなかったですが・・・)。
Area light
※検証はライト100個で行っていますが、上図は見やすいようライトの個数を減らしています。
- デフォルト ・・・ 18fps
- Intensity, Color, Length, Widthを変更 ・・・ 変化なし
- Attenuationを5.0m→100.0mに変更・・・11fps
- Shadow On ・・・ 9fps
- 部屋から出たとき ・・・ 39fps
面光源だから一番計算負荷が高そうと思いきや、Neon lightよりも負荷が軽いという結果でした。またNeon lightと同様、Length, Widthはパフォーマンスに影響しないようです。
まとめ
結果を抜粋して表にしました。(ライト無しの状態では42fps)
Omnidirectional light | Spot light | Neon light | Area light | |
デフォルト | 22fps | 38fps | 12fps | 18fps |
Shadow ON | 10fps | 22fps | 5fps | 9fps |
部屋から出たとき | 38fps | 40fps | 13fps | 39fps |
- 大まかな計算負荷の高さは Neon > Area > Omnidirectional > Spot の順です。
- Neon lightは壁などに遮られて見えていなくても、見えている時と同じくらい計算負荷がかかります。
今回は単純な直方体の部屋で検証しましたが、シーンのポリゴンの複雑さなどによっても結果は変わってくるのかもしれません。
以上.