【開発日記】コンソール開発日記 #3

プレイヤーの皆さん、こんにちは!

コンソール開発日記の第3話をお送りいたします!

今週は、AnimNodel LODについての内容になります。

LODLevel of Detail)とは前回でも説明したものですが、簡単に説明するとレンダリングなどのグラフィック表現の精密度を意味します。例えば、パラシュートから降下する場合に、遠い所を眺めるとLODが低く粗く見えますが、地上に近づくにつれてLODが高くなっていきます。LODには、0、1、2と3つのレベルがあり、LOD0のディテールが最も高いです。

キャラクターを構成するLODの中には、Mesh LODBone LODAnimNode LODがあります。まずは、Mesh LODBone LODについて、簡単に説明いたします。

Mesh LODBone LOD

Mesh LODはキャラクターレンダリングのディテール精度を表します。プレイヤーがすぐ近くにいる場合には、LOD0としてレンダリングされ、距離が遠くなるほどディテールが低くなります。同様にBoneLODによって、距離が遠くなるほど影響を受ける(動く)Boneの個数も減ります。即ち、LODが低いほど処理すべきグラフィク表現及びBoneのデータが少なくなる為、できるだけ早く高くLODのデータレベルを切り替えた方がパフォーマンス面では有利になります。 但し、CPU性能の確保を考慮すると、LOD3、4…などのデータレベルがあった方が役に立ちますが、そのためにはメモリの使用、IO使用などの高い追加コストがかかります。(特にコンソールにおいては)

AnimNode LOD

アニメーションにおいても、LODが存在しますが、前述の様にパフォーマンスの為に近い距離では低いLODと切り替えまが、アニメーションの場合は、目立つ様な動作が多い為、LODを幅広く提供することは困難です。

PUBGのゲームプレイの特性上、プレイヤーが見えないところに隠れているか、非常に遠い所から小さく表現される場合がほとんどです。ですので画面に表現される割合で追加的な適用されるLODを導入し、AnimNode LODの最適化を行いました。

AnimNode LODとは、プレイヤーのBoneの動きに関する精度を意味します。走る、右側を見る、ADSするなど、全てのアニメーションが含まれます。足、腕、首などの体の各パートの動きがそれぞれに計算され、AnimNode LODが低いと、プレイヤーのアニメーション品質が低くなり、LODがオフになるとプレイヤーのアニメーションが表現されなくなります。

上記の画像の様に、AnimNodeLODがオフになると(左がオン、右がオフ)、該当のAnim Nodeに属するアニメーションが処理されなくなり、CPUの処理量が減ることで性能の上昇を図ることができます。しかし、下半身のAnimNode LODは、プレイヤーが座っている状態を維持するために必ずオンになっていないといけません。

下は、AnimNode LODが画面比率が10%になるとオフになる様に設定した後のイメージになります。

では、スコープでズームするとどうなるのでしょうか?

ズームにより、プレイヤーの画面比率が大きくなる為、Anim Node LODがオンになり、普段通りにプレイヤーのアニメーションが表現されます。

下記の10%の比率を適用したAnim Node LODのスコーピングの映像をご覧になるともっと理解しやすいかと思います。

実際のゲームにおいては、視覚的な差を感じられないぐらいの比率で適用される予定です

パフォーマンス

下のグラフは、10人のプレイヤーがいる時に、AnimNode LODがオンの時(青色)とオフの時(赤色)のリソース使用量を比較したものです。AnimNode LODを制御することにより、パフォーマンスが約10%ほど改善できたことが分かります。プレイヤーが多ければ多いほど更なるパフォーマンスの向上が見込めます。

*グラフは、Xbox One Sの環境下で測定されたもの。

結論としては、特定の距離に到達した時にプレイヤーのアニメーション効果が一部非表示になります。非表示となるアニメーション効果は遠い所からは見えないぐらいのもので、これによって計算されるリソースが減少し、パフォーマンスを改善することができました。

 

いつもPUBGを応援して頂きまして、誠にありがとうございます。

それでは、また2週間後にお会いしましょう。

 

『PUBG』チーム一同。

この記事を議論する
この記事を共有する