
1プリメッシュのコツ
2013年04月29日
すっかり暖かくなってきまして、もう昼間だと暑いぐらいですねー^^
そんな訳で、1プリを狙ったメッシュの作り方をざっとまとめて
おこうかと思います。
とりあえずなんとか1に収めたい、、あたりの部分です。
【 仕上がり寸法の設計 】
2x2x2mぐらいの立方体はすでに厳しいと思います。
ある程度の大きさから換算値がどんどん上がってしまうため、
大物は基本無理。。というのが現実だと思います。
【 リンク数 】
サーバ負荷に起因し、最大2プリムまでの構造が考えられます。
3になるとサーバ負荷が0.5×3=1.5となり、
換算値2以上が確定してしまいます。
2プリム構造の場合であってもサーバ負荷の制約があり、
スクリプト数が1以下でなければなりません。
スクリプト数1: 0.5*2 + 0.3 = 1.3
スクリプト数2: 0.5*2 + 0.3 + 0.2 = 1.5
各負荷は小数点第一位の四捨五入であり、DL、物理、サーバ、
いずれかの負荷が1.5に達した時点でアウトです。
ポリゴン1枚であっても、1万頂点のオブジェクトであっても、
一律0.5ってのはいささか詐欺臭い感じがしないでもないですが、
オブジェクトレコードの数で言えばまぁ同じなので、完全な詐欺とも
言い切れない感もありますので、神ことリンデン様の仰せに従う他
なさそうですw
もちろん各プリムの頂点数が多すぎるとかは論外ですので、
2個合わせて多すぎにならないように作らないといけません。
【 UP時の調整 】
多少の崩れは覚悟して、LOD1、0にはできるだけ
頂点数を割り当てないようにします。
できるだけゼロに近いほうが良いですが、Generateで
0を指定してもあまり小さくならない場合は、代替オブジェクトを
作って、それをアップロード時に指定します。
代替オブジェクトはマテリアルの構造がオリジナルと同一でないと
ビューアがバグったりするため、元のオブジェクトをコピーして
各マテリアルから1ポリゴンずつ使うようにして作るのが間違いありません。
バウンドボックスがオリジナルと同じサイズになるようにスケーリング
されるため、法線を反転して裏向きにすると良いです。
物理負荷が1.5以上になる場合は、「最低」で自動生成すると
まずOKです。
たまにえらく大きい値が見える場合がありますが、実際にUPして
Rezしてみると0.4とかで、なーんだw ってのが多いです。
(つまり、アップロード画面はまだバグってます)
【 番外編 スカルプは重いのか? 】
スペック的な部分に注目して、色々な観点からメッシュと
スカルプを比較してみましょう。
・シミュレータによる頂点データの保持
スカルプ: なし
メッシュ: あり(形状定義用に展開されたメッシュを保持)
保持するメモリ、デコードに使うCPU、どちらもメッシュのみに
存在する負荷であり、比較的にはメッシュは重いと言えます。
・当たり判定
スカルプ: 形状に関係なく球体固定
メッシュ: データに依存し、havokのメッシュコライダを使用
CPU的に、メッシュのほうが遥かに重いです。
・DLサイズ
スカルプ: 平均3KB程度
メッシュ: ものにもよりますが、圧縮状態で200KBなど
メッシュは60倍も大きいですね。
・テクスチャの転送量
スカルプ: 1画像
メッシュ: 最大8画像
メッシュだと最大8倍の負荷を生み得ます。
・1プリあたりの頂点数
スカルプ: 1024固定
メッシュ: 軽く4000以上
メッシュのほうが数倍重いです。
恐ろしく明白ですが、どっちが重そうでしょうか?
誰が見てもメッシュのほうが重そうですよねw
そりゃそうです。
メッシュになって表現の質が格段に上がったのは事実ですので、
それなりに重くないとバランス的におかしいですよねw
では、これだけメッシュが重い要因が満載であるにも関わらず、
メッシュは軽くてスカルプは重いという現実はどこから来ている
のでしょうか?
64x64ピクセル程度のpng画像のダウンロードがサーバにとって
致命的な負荷でないのは明白であり、遅い現実があるならそれは
仕様や作り的なレベルに問題があると考えるのが自然です。
一切視界に入らないオブジェクトを必死でダウンロードしておいて
遅いとか、ほとんどジョークの域ですw
現代のWEB系技術では細かい大量のダウンロードを的確に捌く
手法はいくらも確立されており、スケーラビリティの確保に成功
している事例はたくさんあります。
それらをやらずして スカルプ=悪 メッシュ=良 のようにアピールした
リンデンの狙いは何でしょう?
僕自身はズバリ、
・プリム消費の安定化を図り、利益構造を確実なものとする
であろうと考えています。
まぁ普通の営利企業ですし問題ないですけどw
まぁそうは言いましてもデータ由来でスカルプが極端な負荷を生む
ケースもない訳ではなく、その顕著な例はサイズ詐称によるものです。
見た目は数mのオブジェクトであっても、実はバウンドボックスが
256mもあったり。。とかその類ですね。
これは古典的にLODが落ちるのを防ぐ手段であり、崩れ耐性を
上げることが目的でしたが、遠くからでも視界に入ったことに
なってしまう訳で、重さの観点では非常によろしくないです。
LODの判定アルゴリズムが理想的なレベルまで煮詰められなかった
結果がこんな形で皺寄せとして現れています。
とは言っても、これはあくまで一部です。
あらゆるスカルプが64mだったりはしませんし、ヒュージプリムに
貼り付けた構造物も割合で言えばごく僅かでしょう。
長くなったので終わりますw
そんな訳で、1プリを狙ったメッシュの作り方をざっとまとめて
おこうかと思います。
とりあえずなんとか1に収めたい、、あたりの部分です。
【 仕上がり寸法の設計 】
2x2x2mぐらいの立方体はすでに厳しいと思います。
ある程度の大きさから換算値がどんどん上がってしまうため、
大物は基本無理。。というのが現実だと思います。
【 リンク数 】
サーバ負荷に起因し、最大2プリムまでの構造が考えられます。
3になるとサーバ負荷が0.5×3=1.5となり、
換算値2以上が確定してしまいます。
2プリム構造の場合であってもサーバ負荷の制約があり、
スクリプト数が1以下でなければなりません。
スクリプト数1: 0.5*2 + 0.3 = 1.3
スクリプト数2: 0.5*2 + 0.3 + 0.2 = 1.5
各負荷は小数点第一位の四捨五入であり、DL、物理、サーバ、
いずれかの負荷が1.5に達した時点でアウトです。
ポリゴン1枚であっても、1万頂点のオブジェクトであっても、
一律0.5ってのはいささか詐欺臭い感じがしないでもないですが、
オブジェクトレコードの数で言えばまぁ同じなので、完全な詐欺とも
言い切れない感もありますので、神ことリンデン様の仰せに従う他
なさそうですw
もちろん各プリムの頂点数が多すぎるとかは論外ですので、
2個合わせて多すぎにならないように作らないといけません。
【 UP時の調整 】
多少の崩れは覚悟して、LOD1、0にはできるだけ
頂点数を割り当てないようにします。
できるだけゼロに近いほうが良いですが、Generateで
0を指定してもあまり小さくならない場合は、代替オブジェクトを
作って、それをアップロード時に指定します。
代替オブジェクトはマテリアルの構造がオリジナルと同一でないと
ビューアがバグったりするため、元のオブジェクトをコピーして
各マテリアルから1ポリゴンずつ使うようにして作るのが間違いありません。
バウンドボックスがオリジナルと同じサイズになるようにスケーリング
されるため、法線を反転して裏向きにすると良いです。
物理負荷が1.5以上になる場合は、「最低」で自動生成すると
まずOKです。
たまにえらく大きい値が見える場合がありますが、実際にUPして
Rezしてみると0.4とかで、なーんだw ってのが多いです。
(つまり、アップロード画面はまだバグってます)
【 番外編 スカルプは重いのか? 】
スペック的な部分に注目して、色々な観点からメッシュと
スカルプを比較してみましょう。
・シミュレータによる頂点データの保持
スカルプ: なし
メッシュ: あり(形状定義用に展開されたメッシュを保持)
保持するメモリ、デコードに使うCPU、どちらもメッシュのみに
存在する負荷であり、比較的にはメッシュは重いと言えます。
・当たり判定
スカルプ: 形状に関係なく球体固定
メッシュ: データに依存し、havokのメッシュコライダを使用
CPU的に、メッシュのほうが遥かに重いです。
・DLサイズ
スカルプ: 平均3KB程度
メッシュ: ものにもよりますが、圧縮状態で200KBなど
メッシュは60倍も大きいですね。
・テクスチャの転送量
スカルプ: 1画像
メッシュ: 最大8画像
メッシュだと最大8倍の負荷を生み得ます。
・1プリあたりの頂点数
スカルプ: 1024固定
メッシュ: 軽く4000以上
メッシュのほうが数倍重いです。
恐ろしく明白ですが、どっちが重そうでしょうか?
誰が見てもメッシュのほうが重そうですよねw
そりゃそうです。
メッシュになって表現の質が格段に上がったのは事実ですので、
それなりに重くないとバランス的におかしいですよねw
では、これだけメッシュが重い要因が満載であるにも関わらず、
メッシュは軽くてスカルプは重いという現実はどこから来ている
のでしょうか?
64x64ピクセル程度のpng画像のダウンロードがサーバにとって
致命的な負荷でないのは明白であり、遅い現実があるならそれは
仕様や作り的なレベルに問題があると考えるのが自然です。
一切視界に入らないオブジェクトを必死でダウンロードしておいて
遅いとか、ほとんどジョークの域ですw
現代のWEB系技術では細かい大量のダウンロードを的確に捌く
手法はいくらも確立されており、スケーラビリティの確保に成功
している事例はたくさんあります。
それらをやらずして スカルプ=悪 メッシュ=良 のようにアピールした
リンデンの狙いは何でしょう?
僕自身はズバリ、
・プリム消費の安定化を図り、利益構造を確実なものとする
であろうと考えています。
まぁ普通の営利企業ですし問題ないですけどw
まぁそうは言いましてもデータ由来でスカルプが極端な負荷を生む
ケースもない訳ではなく、その顕著な例はサイズ詐称によるものです。
見た目は数mのオブジェクトであっても、実はバウンドボックスが
256mもあったり。。とかその類ですね。
これは古典的にLODが落ちるのを防ぐ手段であり、崩れ耐性を
上げることが目的でしたが、遠くからでも視界に入ったことに
なってしまう訳で、重さの観点では非常によろしくないです。
LODの判定アルゴリズムが理想的なレベルまで煮詰められなかった
結果がこんな形で皺寄せとして現れています。
とは言っても、これはあくまで一部です。
あらゆるスカルプが64mだったりはしませんし、ヒュージプリムに
貼り付けた構造物も割合で言えばごく僅かでしょう。
長くなったので終わりますw
Posted by Yuji at 03:12│Comments(2)
Comments
物理シェイプを一々自動で生成するのは面倒なの上、大概のものは物理シェイプに拘らなくてもいいので、最低の6面で出来てる直方体か立方体を用意してそれを被せれば楽勝です。単純だとアップ代も安いのでお得です。
これだと物理判定負荷もスカプリより遥かに軽いでしょう。
既定で作成すると不必要にでかい物理値ものができてアップ代が上がるのは、リンデンの陰謀でしょうw。
ご記述の通り2メートル以下のものならはるかにプリム数が従来より少なくて済む場合も多いですし、
「・プリム消費の安定化を図り、利益構造を確実なものとする」
というのは考えすぎだと思いますよ
何を考えてるのか謎なのがリンデン・・・w
これだと物理判定負荷もスカプリより遥かに軽いでしょう。
既定で作成すると不必要にでかい物理値ものができてアップ代が上がるのは、リンデンの陰謀でしょうw。
ご記述の通り2メートル以下のものならはるかにプリム数が従来より少なくて済む場合も多いですし、
「・プリム消費の安定化を図り、利益構造を確実なものとする」
というのは考えすぎだと思いますよ
何を考えてるのか謎なのがリンデン・・・w
Posted by 太郎 at 2013年05月22日 02:23
> 物理判定負荷もスカプリより遥かに軽いでしょう
それはないでしょう。
3Dの当たり判定で一番軽いのは球同士の判定だと思います。
> 不必要にでかい物理値ものが
これはありますねーw
置物であるにもかかわらず、物理負荷がDL負荷を超えてて
それが原因で換算値が+1になってる製品とかたまに見かけます^^;
> というのは考えすぎだと思いますよ
そうですー?
普通の企業なら至極真っ当な経営戦略だと思いますけどねー。
まぁわざとイヤミっぽく書きはしましたけどw
それはないでしょう。
3Dの当たり判定で一番軽いのは球同士の判定だと思います。
> 不必要にでかい物理値ものが
これはありますねーw
置物であるにもかかわらず、物理負荷がDL負荷を超えてて
それが原因で換算値が+1になってる製品とかたまに見かけます^^;
> というのは考えすぎだと思いますよ
そうですー?
普通の企業なら至極真っ当な経営戦略だと思いますけどねー。
まぁわざとイヤミっぽく書きはしましたけどw
Posted by Yuji
at 2013年05月22日 04:51
