Upgrade to Pro — share decks privately, control downloads, hide ads and more …

clusterでLOD対応したときの話 / cluster LOD

clusterでLOD対応したときの話 / cluster LOD

2021年3月31日(水) @第5回VRM勉強会 by xyx (@xanxys_)

LOD全体の裏話は↓にて
Cluster Tech Talk https://youtu.be/WyC76fzzzCA?t=7629

9e32efa81b675ecd55c166fb7b0a1890?s=128

Cluster Inc.

March 31, 2021
Tweet

Transcript

  1. clusterでLOD対応したときの話 クラスター株式会社 xyx

  2. Cluster, Inc. All Rights Reserved. 誰? xyx clusterでTech Leadやってます たまに調香とか作曲もしてます

    @xanxys_
  3. 今日する話

  4. cluster 大加速祭2021 Keynote https://youtu.be/wRErhyoT70c?t=1261

  5. モデルの自動変換 & LODでモバイル環境でもVRM50体表示できるようになった 開発したVRM minifierの(めっちゃ)技術的な話をします glTF-2.0 spec を手元にご用意ください LOD全体の裏話は↓で見れます Cluster

    Tech Talk https://youtu.be/WyC76fzzzCA?t=7629
  6. 10分で理解するVRM minifier

  7. Cluster, Inc. All Rights Reserved. 概要 VRMを2種類に変換して クライアントに配信 変換は1secぐらいで終わる (が、システム全体でキャッ

    シュは3階層ぐらいある) 今日は積極的なminify (VRM minifier)の話をします
  8. Cluster, Inc. All Rights Reserved. VRM minifier 20,301 verts /

    23,387 tris / 9.8MB 
 7 static mesh + 4 skinned mesh 
 100 nodes
 1,998 verts / 1,526 tris / 0.2MB 
 1 skinned mesh
 18 nodes

  9. Cluster, Inc. All Rights Reserved. VRM minifier 出力仕様 • bone:

    VRM必須ボーンのみ • mesh: Δ~2K, ~2K頂点 skinned mesh ひとつ • material: unlit (opaque or alphacut), ~256px ひとつ 実装 • go • qmuntal/gltf + 数千行の独自コード 設計思想 • 出力VRMの使用メモリの上限保証 • 小ささの限界追求: プロダクト設計のベースラインとして機能させる ◦ 非表示やプレースホルダのぎりぎり手前
  10. Cluster, Inc. All Rights Reserved. minifier データフロー

  11. Cluster, Inc. All Rights Reserved. マテリアル変換 Standard/MToon/Unlit → Unlitに •

    base textureとemissive textureの統合 • transparent → alpha cut • 透明部分のmesh消去 VRoid Studioの服は 透明テクスチャ多用してるので 簡略化前に削らないと 見えないメッシュに貴重なポリゴン が吸われてしまう
  12. Cluster, Inc. All Rights Reserved. メッシュ変換 I ひとつの空間に正規化してから統合 skinningはjoint nodeとinverse

    bind matrixが大事 • node(skinとskeleton)のtransformは不要 glTF仕様では珍しく(?)skinは解釈が難しい書き方になってる https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutori al/gltfTutorial_020_Skins.md 大変そうにしてる人たち https://github.com/KhronosGroup/glTF-Tutorials/issues/17 https://github.com/KhronosGroup/glTF/issues/1270 https://github.com/KhronosGroup/glTF/pull/1195
  13. Cluster, Inc. All Rights Reserved. メッシュ変換 II メッシュ簡略化: ↓の論文を実装するだけ 高速化にコツがいる

    • 部分的にpriorityが更新されるpriority queue ファンシーな簡略化アルゴリズムより、 実データ・要望に合わせたコスト関数の設計が肝 Surface Simplification Using Quadric Error Metrics (1997) doi.org/10.1145/258734.258849 https://www.cs.cmu.edu/~./garland/Papers/quadrics.pdf
  14. Cluster, Inc. All Rights Reserved. 学び 実データで地道に改善していくのが大事 存在する仕様はすべて使われる 例 skin

    meshのbone hierarchyのネスト構造・スケーリング • アバター改変勢のデータ構造の特徴 opaqueの場合alphaは無視しなければならない(MUST) • 透明なテクスチャをopaqueで使ってる人がいる UVのrepeat mode textureが存在しない(flat colorな)mesh などなど…
  15. Cluster, Inc. All Rights Reserved. 学び こういう(Web-basedな) 比較ツールをつくると 圧倒的に捗る •

    手動+CI ここに数日掛けても 絶対に工数のもとが取れる
  16. Cluster, Inc. All Rights Reserved. me/v 元になってるのはme/v • Web VRM

    viewer • 編集もちょっとできる • glTFデバッグに便利 これは個人でやってて オープンソース https://xanxys.github.io/mev/
  17. 宣伝

  18. Cluster, Inc. All Rights Reserved. 宣伝 採用加速中! 🔍「Wantedly cluster」で検索 https://speakerdeck.com/clusterinc/we-are-hiring

    社員インタビュー記事 会社説明記事