Unity LOD groupの不一致について

 ====   『LOD groupの不一致について』====
LOD groupを久しぶりに使ったら
previewとcluster本番が違うのでびっくりしました
これではLOD%の微調整作業がしにくいですね
症状は 「previewの見た目の大きさと
 cluster本番の見た目の大きさが
 あまりに一致しない」ということです
最初はUnity純正の問題ではなくClusterの運用の問題かと疑いました
添付画像は 単純なOBJで実験測定してみたものです
図1 

 


今まで曖昧だった点を調べて
3点ほど注意点がみつかったので 備忘録としてかき残します

1つ目は
 ====   『LODBIAS値の警告』====
「Active LOD  is 2.0.  Distances are adjusted accordingly」
LODBIAS値の警告です
とにかく 2.0から1.0に変更すると大幅に解消しました
根拠は以下の通り
https://docs.unity3d.com/ja/2021.3/Manual/class-LODGroup.html
ノート:「 Lod Bias プロパティが 1 に設定されていない場合、カメラ位置は、
    各 LOD レベルが実際に遷移する位置と一致しない場合があります。
    この場合、選択バーの下に警告メッセージが表示されます」

図2,3

この警告を放置したままのtutorialが多いのが不思議です
Project setting 「bias」で検索して
 LOD Bias=2(デフォルト) を 1にします
指定値%と previewの 見た目%がほぼ同じになりました


原因のひとつはUnity本家だったようです
このBias値の働きや意味が未消化のままですが
とりあえず、症状が解消しました

2つ目は
 ====   『Recalculate Bounds 』====
OBJECT size の再計算です
Recalculate Bounds すると 矩形が見えてきます
(微調整しながらせっかく設定した%が
変わることがあるので押すのが億劫になりがちですが 
 ObjectSizeがデフォルト=1のままでは運用できるのは
1mぐらいのものに限られるでしょう)
デフォルトでは小さくて気づかなかった正方形の枠です
バウンディングボリュームサイズのデフォルトは1mなので
画面では見落としがちです
スザンヌを取り囲む枠が見えてきました 
これは物体に外接する2Dの正方形のようですがどんな計算なのでしょうか
円や球体でもいいのではないでしょうか
わかりやすくするために半透明球をおいてみました(後述の工夫参照)

LODはポリゴンモデルのバウンディングボックスとは別に
LOD専用のバウンディングボリュームという数値を算定していると推理しています
バウンディングボックスはX,Y,Zの3つの値を持っていますが
LOD専用のバウンディングボリュームはobject size 一つだけですので
きっと、球体だろうと推測しました
おそらく、物体にできるだけ近い球体に代表させていると推理しています

図はスザンヌを10x10=100個ならべたLODを作るケースです
このような 扁平な物体はめだって症状が現れるため
今回のトラブルを追求することになりました


3つ目は測定のしかたです

 ====   『測定のしかた 半透明球の工夫』====

「高さを基準に判断する」とうろ覚えな記憶がありましたが
これで 自分は混乱していました。
どこを測定するかで%数値と実際の精度が変わってきます
LOD%の割り算を分母と分子にわけて考えますと
分母は画面の高さ方向の長さのようです
これは デバイスによって画面のアスペクト比がかわるので

高さ方向を基準にしているようです
それに対して分子は ちょっと難解です。資料がないので推測になります
物体が縦長だったり 扁平だったしても
物体の高さだけで判断するという単純な話しではないようです

バウンディングボックスXYZの最大値に近いと思いますが
正確な計算の仕方がわかりませんでした。
「物体にできるだけ近い球体で代表する」と仮定して話しを進めます

そこで、わかりやすくするために半透明球をおいてみました
正方形もしくは球で考えるなら 縦でも横でも同じですね
それが割り算の分子になります

 

勘違いしないための工夫として半透明球をおきました
バウンディングボリュームのサイズを球体のスケールに入力しています
矩形の1辺と球の直径が同じということです
Recalculate Bounds で算出した値です
どの角度からみても矩形と球体がほぼピッタリはまりました 
推論は概ねあたっているようです
(文献が見当たらないので 実験と推論で経験を書いています
 どこか間違っていたらごめんなさい)
LOD0,1,2に置いた物体によっては 再計算によって
ObjectSizeの値がかわることがあります
そしてせっかく設定した%も動いてしまうことがあります
なので、球体のようなダミーを置いてメドをきめたら
後は 再計算しないという手順もありえます

以上の3点に注意して作成すると
 「LOD指定%と previewの見た目の大きさと
  cluster本番の見た目の大きさの3者はほぼ一致して
  作業がはかどる」ということになります
・・・以上、創作の参考になれば幸いです。
ただし、LODの仕組みの仮説推論についての責任は負いかねます
間違いの指摘や補足資料ありましたらご連絡ください
環境 win10 Unity2021.3    CCK2.3.1
            ではまた    2023.08    #Cluster #Unity

追記
Unity2019に比べてUnity2021ではLOD groupが少し便利になっています
Unity2019では Object sizeの数値が表示されてなかったようです
cluster公式「テンプレートワールド」のprojectでは

LOD Bias値が1に設定されていました
他にも謎の設定が多数あります。最初からこれを使えばよかった

・・・がっくし orz  ○| ̄|_ 

追記2
Cluster本番のcameraはLOD Bias機能に対応していないと思われます
実験したところそのようです BIAS=1と同じ結果になりました