2015年8月30日日曜日

描画の負荷の高いアバターを描画しないようにする「Avatar Complexity」プロジェクト

「アバターの複雑さ(Avatar Rendering Complexity)」機能は、公式ビュアー バージョン 4.0.5 でサポートされました。
こちらのページの内容は古くなっている部分もありますので、新しい情報もご覧ください。

天使になりたくて: セカンドライフ公式ビュアー バージョン 4.0.5 が公開されました
http://sakuranoelfayray.blogspot.jp/2016/05/officialviewer405.html
天使になりたくて: 描画の負荷の高いアバターを表示しないようにする「アバターの複雑さ(Avatar Rendering Complexity)」機能
http://sakuranoelfayray.blogspot.jp/2016/05/avatar-rendering-complexity.html


セカンドライフのビュアーは、リアルタイムに 3D 表示を行なっていますので、CPU や GPU(ビデオカード/グラフィックボード)に大きな負荷が掛かります。

その中でも特に重いと言われているのが、アバターの描画です。


セカンドライフでは、クラシックアバターに何も装着しない状態でも、そのポリゴン数は1体、7000 〜 1 万ポリゴンくらいはあるそうです。

クラシックアバターのポリゴン
また、よりきれいに見せるために調整されたメッシュアバターの場合は、1体、数万ポリゴンになっていることもあるようです。

メッシュアバターのポリゴン
さらに、セカンドライフでは様々なアイテムをアバターに自由に装着出来ますので、そのオブジェクトのポリゴン数も加算されていきます。

クラシックアバターにメッシュの服などを装着した状態のポリゴン
合計すると、アバター1体だけで、数万〜数十万ポリゴンになっているかもしれません。


家庭用や PC 用のゲームでは、衣装や装備を身に付けた状態のモデルが1体 5000 ポリゴン〜数万ポリゴンくらいで作成されるそうです。

描画の負荷の軽減のためにそういった作りにしているそうですので、セカンドライフはアバターだけでも、通常の 3D ゲームの数倍〜数十倍重くなっていると思われます。

さらにセカンドライフでは、そういうアバターが何十人も表示されますので、その負荷はゲームの比ではありません。


もちろんセカンドライフビュアーでも、描画の負荷を減らすための技術は、これまでにもいくつか導入されていました。

Object-Object Occlusion物陰にあるものは描画しないようにして、描画の負荷を減らす技術
LODカメラからの距離に応じた品質のモデルを用意して、遠くのものは低品質のものに切り替えることで描画の負荷を減らす技術
Avatar impostors指定した数以上のアバターが視界にある場合は、そのアバターの表示を簡略化して描画の負荷を減らす技術

ただこれらの技術を使っても、元々のアバター1体の描画の負荷が大きいですので、人が増えると重くなる…という状況は現在も続いています。

特に高品質なメッシュアバターやメッシュの服が主流になってからは、その傾向が顕著です。


そこで、

重いアバターは、そもそも表示しないようにしちゃいましょう!

という画期的な方法が導入されることになりました。

それが、
Avatar Complexity(アバターの複雑度)
です。


Avatar Complexity では、これまでにもありましたアバターの描画の負荷を表す値「アバターの描画ウェイト」と同じ値を使って、

アバターの描画の負荷が一定の値以上のアバターは、描画しない

ということを行ないます。

Avatar Complexity 機能対応のビュアーの環境設定のグラフィックに追加された、「Maximum complexity」という項目で設定された値を越える描画の負荷があるアバターは、ビュアー上に表示されなくなります。

全く描画されないと誰がどこにいるのか分からなくなりますので、実際にはアバターのシルエットが単色で表示されるようになります。

海外では、この単色のアバターのことを“Jelly Babies”と呼んでいます。
赤ん坊形のゼリー菓子の名称から、そう呼んでいるみたいです。

これにより、アバターの描画の負荷を根本的に減らすことが出来ます。

低スペックのパソコンを使われている方には、すごく優しい機能です^^


ただし、アバターのディテールが表示されなくなってしまいますので、どんなに着飾っても全く見えなくなってしまうという問題が発生します。

お友達と記念撮影したら、自分だけ単色になってた…という悲しいことになってしまうかもしれません><

そうならないようにするためには Avatar Complexity の値を、誰でも見えるような値に抑えつつ、おしゃれをする必要が出てきます。


Avatar Complexity の値は、着替えをするたびにビュアー内のポップアップ通知でお知らせされます。


また、「アバターの描画ウェイト」の時と同様に、アドバンスメニューの「パフォーマンスツール」から見ることが出来ます。

パフォーマンスツールの「Show avatar comlpexity information」の項目です
一番上の値(「20131 Complexity」の部分)が、Avatar Complexity の値です

Maximum Complexity の値は、現在は「19999」〜「No Limit(無制限)」の範囲で設定出来ます。

この値は今後調整される可能性がありますが、最低値よりも小さい値でアバターを作れば誰でも見ることが出来ますので、そういうアバター作りを意識した方がいいと思います。


自分のアバターは、Maximum Complexity の設定値に関わらず、必ず「No Limit(無制限)」の状態で表示されます。
自分のアバターが Avatar Complexity の影響を受けた状態を確認したい場合は、別アカウントで同時にログインして見る必要があります。


ちなみに、わたしが現在使用しているアバターでも Avatar Complexity は 20131 ですので、Maximum Complexity が最低の設定になっていると、このアバター程度の装飾でも、単色に見えてしまいます><

今の値のまま正式にリリースされるような感じだと、結構シビアな感じになりそうですね…

“描画の負荷が少ない商品探し”というのが、今後は重要になってくると思います。


そうなると今後は、

どんなに見た目がよくても、描画の負荷が高いアイテムは売れなくなってしまう

ということになってしまうと思いますので、洋服やアクセサリーなどを作られているお店の方は、そういう部分にも配慮をして物づくりをしていく必要があると思います。


「アバターの描画ウェイト」と「Avatar Complexity」の値は同じものです。

名称を「Avatar Complexity(アバターの複雑度)」とより分かりやすいものに変えただけで、その値の内容は「アバターの描画ウェイト」と同じだそうです。

(2015/8/31 に開催された「Open Development」のオフィスアワーにて、Oz Linden さんに直接確認しました)

「Avatar Complexity」および「アバターの描画ウェイト」の値は、下記の条件で加算されます。

ベースアバター(クラシックアバター)

1000 ポイント
(baked texture が非表示の場合、それぞれのテクスチャー毎に -200 ポイントされます)

ベースコスト

プリム、スカルプテッドプリム、メッシュは、ポリゴン数に応じてベースのコストが設定されます。
LOD 用のモデル全てのポリゴン数が考慮されます。

プリム毎の倍率

下記の設定がある場合、プリムの毎にそれぞれの倍率が加えられます。

グロー1.5 倍
凸凹1.25 倍
フレキシ5.0 倍
輝き1.6 倍
インビジブルプリム1.2 倍
リグドメッシュ1.2 倍
テクスチャーマッピング1.0 倍(影響なし)
アニメーションテクスチャー1.4 倍
透明度4.0 倍

追加

パーティクルプリム毎に 100 ポイント追加
ライトが設定されたプリムプリム毎に 500 ポイント追加
メディアテクスチャー面毎に 1500 ポイント追加
リンクセットの中にユニークなテクスチャーがある場合(スカルプテッドテクスチャー含む)256 + 16 * (resX / 128 + resY / 128) の値を追加

Mesh/Rendering weight - Second Life Wiki

ベースコストがどういう値になっているかは、公開されていないようです。
また、「アバターの描画ウェイト」の値はサーバー側で計算が行なわれていますので、その計算方法を知ることは出来ないようです。

ただ、実際に取得出来る値は上の情報通りに変化していますので、この情報に基づいて作成を行なえば大丈夫だと思われます。


ポリゴン数が多いオブジェクトや、フレキシやアルファが適用されたプリムは特に描画の負荷が高くなります。

また、これは最近のメッシュ製品だけの話ではなくて、古いプリム製の製品でも起きることですので、その辺にも注意が必要です。

特に古い髪などの製品では、アルファが適用されたプリムが多用されていますので、見た目以上に Avatar Complexity の値が大きいことがあります。


上記ページはアバターの描画の負荷について書かれていますが、“ビュアーでの表示の負荷”という意味では他のオブジェクトにも当てはまる内容ですので、建物などアバター以外のものを作られる際にも参考になる内容だと思います。


Avatar Complexity の機能は、現在はプロジェクトビュアー(Second Life Project QuickGraphics Viewer)という形で公開されています。

Linden Lab Official:Alternate Viewers - Second Life Wiki

プロジェクトビュアーは、今後導入される予定の新しい機能を先行で公開している“実験版のビュアー”のことです。

まだ実験的な機能ですので、いつごろ正式に導入されるかはまだ未定ですけれど、今後セカンドライフに導入される予定になっている機能ですので、気になる方はぜひ試してみてください。


もちろん、Avatar Complexity の機能が導入されていない現行のビュアーでも、「アバターの描画ウェイト」の値を小さくしておくことで、アバターの描画の負荷は小さくなります。


そこは今も今後も変わりませんので、今のうちから、描画の負荷が少ない物づくりや着こなしなどを準備しておくと、Avatar Complexity 機能を使った重いアバターの描画の制限が導入された際に慌てなくて済むと思います。

少しでも快適な世界になるように、今日からでも始めてみましょう!^^

※2015/9/1:Oz Linden さんに「アバターの描画ウェイト」と「Avatar Complexity」の値の違いについて確認してみましたところ、“値に関してはどちらも同じもので、名称を分かりやすく変更しました”ということでしたので、それに基づいて内容を加筆修正しました
このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿