「PLATEAU 最適化」の版間の差分

提供: ディーズガレージ wiki
移動先: 案内検索
(LOD)
(GLB改修)
 
1行目: 1行目:
{| style="font-weight:100;float:right;margin-right:-3px;"
+
{| style="font-weight:100;float:right;"
|__TOC__
+
|__NOTOC__
 
|}
 
|}
Project PLATEAU データセットを最適化、軽量化してみます。
 
  
[https://dz.plala.jp/plateau/viewer/ Viewer]<br />
+
PLATEAU LOD2データ最適化とビューアを作成してみます。
[https://dz.plala.jp/plateau/viewer/index_lod.html Viewer LOD付き]
+
  
[[ファイル:qr_PLATEAU.png|240px|border]]
+
[https://dz.plala.jp/plateauv/ PLATEAUV[プラトービューア]]
 +
 
 +
[[ファイル:qr_PLATEAU.png|240px|border|link=]]
  
 
=='''具合'''==
 
=='''具合'''==
GLB L: 8192x8192<br />
+
[[ファイル:PLATEAUV_thumb.jpg|540px|border|link=]]
GLB M: 4096x4096<br />
+
 
GLB S: 2048x2048<br />
+
{| class="wikitable" style="width:540px;"
(*): LOD付き
+
{| class="wikitable" style="width:680px;"
+
 
!  
 
!  
! colspan="5"| 新宿
+
! colspan="4"| 新宿
! 池袋
+
! 品川
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;width:140px;" |  
+
| style="padding-left:10px;padding-right:10px;text-align:left;width:120px;" |  
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394525
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394525
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394526
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394526
25行目: 23行目:
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394536
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394536
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | ALL
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | ALL
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394577
 
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | FBX (MB)
+
| style="padding-left:10px;padding-right:10px;text-align:left;color:#ccc;" | FBX (MB)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,830
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 337
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,180
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 99
| style="padding-left:10px;padding-right:10px;text-align:right;" | 2,190
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 190
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,860
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 178
| style="padding-left:10px;padding-right:10px;text-align:right;" | 7,060
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 116
| style="padding-left:10px;padding-right:10px;text-align:right;" | 432
+
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | FBX テクスチャ (枚)
+
| style="padding-left:10px;padding-right:10px;text-align:left;color:#ccc;" | texture (枚)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,487
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,714
| style="padding-left:10px;padding-right:10px;text-align:right;" | 453
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 465
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,012
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,032
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,042
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,053
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3,994
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 808
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,866
+
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB L Draco (MB)
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | FBX L (MB)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 30
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 35
| style="padding-left:10px;padding-right:10px;text-align:right;" | 21
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 24
| style="padding-left:10px;padding-right:10px;text-align:right;" | 34
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 41
| style="padding-left:10px;padding-right:10px;text-align:right;" | 29
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 36
| style="padding-left:10px;padding-right:10px;text-align:right;" | 115
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 27
| style="padding-left:10px;padding-right:10px;text-align:right;" | 42
+
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB M Draco (MB)
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB L (MB)
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 28
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 20
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 32
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 28
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 20
 +
|-
 +
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB M (MB)
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 11
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 11
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 8
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 8
| style="padding-left:10px;padding-right:10px;text-align:right;" | 13
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 12
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 11
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 11
| style="padding-left:10px;padding-right:10px;text-align:right;" | 45
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 8
| style="padding-left:10px;padding-right:10px;text-align:right;" | 18
+
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB S Draco (MB)
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB S (MB)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4 (6)
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 6
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4
| style="padding-left:10px;padding-right:10px;text-align:right;" | 21
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 9
+
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | triangles 最大
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | texture (枚)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 115,582
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 67,094
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 126,598
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 130,902
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 440,176
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 180,153
+
|-
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | geometries 最大
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 798
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 492
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,131
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,054
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3,427
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,866
+
|-
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | textures 最大
+
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 6
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 6
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 6
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 6
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
| style="padding-left:10px;padding-right:10px;text-align:right;" | 21
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4
| style="padding-left:10px;padding-right:10px;text-align:right;" | 10
+
|-
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | draw calls 最大
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 786
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 480
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,119
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,042
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3,427
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,866
+
 
|}
 
|}
  
メモ
+
L: ゲーミングPC向け<br />
----
+
M: 一般PC向け<br />
距離​LOD有効分岐処理ほしい 15万程度以下無効<br />
+
S: スマホ・タブレット向け
距離​LODでなく見かけの大きさでLOD or アスペクト比でLOD距離変更?<br />
+
ジオメトリ名で操作する場合lodグループは信用できない mainとlod紐付けしたい > 名前の一括変更スクリプトは?
+
  
地形<br />
+
最適化エリア
[https://github.com/domlysz/BlenderGIS GitHub - domlysz/BlenderGIS]<br />
+
<!--[https://github.com/eliemichel/MapsModelsImporter GitHub - eliemichel/MapsModelsImporter]<br />
+
[https://github.com/felixpalmer/procedural-gl-js GitHub - felixpalmer/procedural-gl-js]<br />
+
[https://github.com/w3reality/three-geo GitHub - w3reality/three-geo]<br />
+
[https://github.com/tentone/geo-three GitHub - tentone/geo-three]-->
+
  
3D Tiles<br />
+
[[ファイル:13100_indexmap_op.jpg|240px|border]]
[https://github.com/NASA-AMMOS/3DTilesRendererJS GitHub - NASA-AMMOS/3DTilesRendererJS]
+
  
CityGML<br />
+
最適化データ<br />
https://ascii.jp/elem/000/004/044/4044198/
+
https://dz.plala.jp/plateauv/data/fbx/<br />
 +
https://dz.plala.jp/plateauv/data/
  
XR<br />
+
最大解像度の確認
[https://threejs.org/docs/#manual/en/introduction/How-to-create-VR-content How to create VR content - three.js docs]<br />
+
[https://developer.mozilla.org/ja/docs/Web/API/WebXR_Device_API/Startup_and_shutdown#webxr_polyfill WebXR ポリフィル - MDN - Mozilla]
+
  
AI<br />
+
[[ファイル:UV200.jpg|404px|border|link=]]
[https://www.4gamer.net/games/999/G999905/20210601027/ スペースデータ]
+
  
SameSite Cookie 警告出てる
+
L: 8192x8192 丁度いい<br />
 +
LL: 16384x16384 必要ない<br />
  
=='''環境'''==
+
不具合<br />
{| class="wikitable" style="width:480px;"
+
Uncaught RangeError: WebAssembly.Memory(): could not allocate memory
 +
 
 +
=='''変換'''==
 +
===方向性===
 +
LOD2のFBX1個につきオブジェクトとオブジェクト名は変更せず、
 +
テクスチャとマテリアルを数個にまとめる
 +
「建物200棟のUVテクスチャ」を「1枚のUVテクスチャにベイク」を目安にしてみる
 +
 
 +
Lサイズを作成し、M, Sサイズが必要な場合はテクスチャサイズ変更で対応
 +
Lサイズ: 8192x8192
 +
Mサイズ: 4096x4096
 +
Sサイズ: 2048x2048
 +
見込み
 +
Unityの頂点結合は恐ろしく最適化が見込める
 +
テクスチャ1000枚が5枚にまとまるのでファイルアクセス200倍最適化見込み
 +
更に最適化なら1枚毎にメッシュマージでdraw call 200倍最適化見込み
 +
マルチサブオブジェクトならdraw call 最大1000倍最適化見込み
 +
プロオプティマイザー頂点結合でさらに5倍最適化見込み
 +
draco採用でさらに50%程度容量削減の見込み
 +
glTF採用でPBRマテリアルを保持
 +
 
 +
以下とりあえず不採用
 +
LLサイズ: 16384x16384
 +
 
 +
[https://cesium.com/blog/2018/04/09/draco-compression/#cesium-3d-tiles Draco Compressed Meshes with glTF and 3D Tiles – Cesium]
 +
gzip採用でさらに20%削減?
 +
 
 +
[https://knowledge.shade3d.jp/kb9795 glTFエクスポート時のDraco圧縮.... &#8211; Shade3D Knowledge Base]
 +
メッシュマージでさらに90%削減?
 +
 
 +
===環境===
 +
{| class="wikitable" style="width:540px;"
 
| style="padding-left:10px;padding-right:10px;"| データセット
 
| style="padding-left:10px;padding-right:10px;"| データセット
| style="padding-left:10px;padding-right:10px;"| [https://www.geospatial.jp/ckan/dataset/plateau-tokyo23ku-fbx-2020 3D都市モデル 東京都23区(FBX 2020年度)]
+
| style="padding-left:10px;padding-right:10px;"| [https://www.geospatial.jp/ckan/dataset/plateau-tokyo23ku 3D都市モデル(Project PLATEAU)東京都23区 - データセット]<br />FBXをダウンロード
 
|-
 
|-
 
| style="padding-left:10px;padding-right:10px;"| DCCツール
 
| style="padding-left:10px;padding-right:10px;"| DCCツール
| style="padding-left:10px;padding-right:10px;" | unity, 3dsmax, photoshop
+
| style="padding-left:10px;padding-right:10px;" | unity, 3dsmax, photoshop, blender
 
|}
 
|}
  
140行目: 136行目:
 
  Unity 2020.1.13f1 FBX Exporter UVの<strike>欠落なし</strike> まれにあり
 
  Unity 2020.1.13f1 FBX Exporter UVの<strike>欠落なし</strike> まれにあり
 
  Unity 2018.3.6f1 FBX Exporter UVの欠落あり
 
  Unity 2018.3.6f1 FBX Exporter UVの欠落あり
 +
読込みだけ
 +
Unity 2020.1.13f1以上?使用
  
  3dsmax 2017 FBX Import 一部がマルチタイル(3dsmax 2017新機能)は都合悪い
+
  3dsmax 2017 FBX Import 一部がマルチタイル(3dsmax 2017新機能)に自動変換 都合悪い
 
  3dsmax 2014 FBX Import 全てビットマップ
 
  3dsmax 2014 FBX Import 全てビットマップ
 +
読込みだけ
 +
3dsmax 2014使用
  
 
  3dsmax 2017 ジオメトリ226個目のベイク処理でエラー
 
  3dsmax 2017 ジオメトリ226個目のベイク処理でエラー
 
  3dsmax 2014 ジオメトリ219個目のベイク処理でエラー
 
  3dsmax 2014 ジオメトリ219個目のベイク処理でエラー
 +
200個はOK
  
 
  photoshop script ファイルをレイヤーとして読み込み
 
  photoshop script ファイルをレイヤーとして読み込み
  200枚は途中でエラー 50枚程度はOK メモリ容量の問題?
+
  200枚は途中でエラー 処理能力の限界
 +
50枚はOK
  
=='''変換'''==
+
===Mesh===
FBX1個につきオブジェクト数とオブジェクト名は変更せず、<br />
+
メッシュの頂点連結とテクスチャとマテリアルを数個にまとめる<br />
+
建物200棟を1枚にベイクを目安にしてみる
+
 
+
===メッシュ===
+
 
Unity 2020.1.13f1
 
Unity 2020.1.13f1
 
  1.新規project
 
  1.新規project
   [https://gist.github.com/fumobox/6b6411c0a27693279d8294dd5366ee66 MeshOptimizerWindow.cs]
+
   install [https://gist.github.com/fumobox/6b6411c0a27693279d8294dd5366ee66 MeshOptimizerWindow.cs · GitHub]
   [https://gist.github.com/fumobox/555a25524a32a847f0cc5c87d134940e PlateauLod2FbxImporterWindow.cs]
+
   install FBX Exporter
  FBX Exporter
+
  2.fbxをインポート
  2.fbxとfbmディレクトリを同時にドラッグアンドドロップでインポート
+
  ダウンロードしたデータセットの\bldg\lod2フォルダ
 +
  FBXはtexture付きなのでtextureとmaterialを設定
 
   Hierarchyに配置
 
   Hierarchyに配置
 
  3.PLATEAU Mesh Optimizer
 
  3.PLATEAU Mesh Optimizer
  4.Hierarchyに作成される変換データ
+
  適用
 +
  4.Hierarchyに作成される変換データを選択
 
   Export to FBX
 
   Export to FBX
 
   同名になるので末尾に_newなど名前変更
 
   同名になるので末尾に_newなど名前変更
171行目: 170行目:
 
3dsmax 2014
 
3dsmax 2014
 
  5._newのfbx読込み
 
  5._newのfbx読込み
  アセットトラッキング修正
 
 
   MAX保存
 
   MAX保存
  
 
3dsmax 20xx
 
3dsmax 20xx
 
  6.MAX読込み
 
  6.MAX読込み
   目立つUVの欠落修正
+
7.全て親階層に移動
  7.バウンディングボックス修正
+
   ダミーオブジェクト削除
 +
  8.バウンディングボックス修正
 
   ジオメトリ全て選択
 
   ジオメトリ全て選択
 
   基点調整 > 基点にのみ影響 > 位置合わせ: 中心オブジェクト
 
   基点調整 > 基点にのみ影響 > 位置合わせ: 中心オブジェクト
 +
9.全てのメッシュを選択
 +
  最適化 > 自動エッジ
 +
  まれにUVが壊れる 壊れるメッシュだけ最適化に入れない
 
   MAX保存
 
   MAX保存
  
===テクスチャ===
+
===Texture===
 
3dsmax 20xx
 
3dsmax 20xx
 
  1.MAX読込み
 
  1.MAX読込み
  2.ジオメトリ200個でグループ分け
+
  2.ジオメトリ200個でグループ分けと名前変更
   533945**_bldg_6677_001
+
   5339****_bldg_001
   533945**_bldg_6677_002
+
   5339****_bldg_002
   533945**_bldg_6677_003
+
   5339****_bldg_003
 
   ...
 
   ...
 
  3.グループ1つ選択
 
  3.グループ1つ選択
213行目: 215行目:
 
photoshop
 
photoshop
 
  8.50枚でフォルダ分け
 
  8.50枚でフォルダ分け
  9.ファイル > スクリプト > ファイルをレイヤーとして読み込み
+
  処理能力限界の為
   表示レイヤを結合
+
  9.8192x8192 新規作成
  全て合成
+
  ファイル > スクリプト > ファイルをレイヤーとして読み込み
   背景レイヤ黒追加
+
   PNG アルファ付 保存
   FBXと同名保存
+
10.グループ分け全てのPNG配置
 
+
   ファイル > スクリプト > ファイルをレイヤーとして読み込み
 +
   背景黒追加
 +
  グループ名と同名JPG保存
 
作成グループで繰り返し
 
作成グループで繰り返し
  
===マテリアル===
+
具合
 +
 
 +
[[ファイル:53393585_bldg_6677_001.jpg|160px]]
 +
[[ファイル:53393585_bldg_6677_002.jpg|160px]]
 +
[[ファイル:53393585_bldg_6677_003.jpg|160px]]
 +
 
 +
===Material===
 
3dsmax 20xx
 
3dsmax 20xx
 
  1.グループ1つ選択
 
  1.グループ1つ選択
 
  2.UVWアンラップ > チャネル 2 > 1(移動)
 
  2.UVWアンラップ > チャネル 2 > 1(移動)
  3.新規マテリアル グループと同名 ベイク画像設定
+
  3.新規マテリアル
  4.頂点連結 0.0cm
+
  グループと同名 同名ベイク画像設定
  5.グループ解除
+
  グループに適用
6.MAX保存
+
グループ全てで繰り返し
  7.クリーニング
+
  4.全てグループ解除
 +
  5.全て頂点連結 0.0
 +
  6.クリーニング
 
     FBX書き出し
 
     FBX書き出し
 
     FBX読込み
 
     FBX読込み
 +
7.MAX保存
 +
 +
===頂点===
 +
3dsmax 20xx<br />
 +
処理が重いのでジオメトリ200個程度でグループ分け<br />
 +
グループ1つを選択し、グループにプロオプティマイザー適用<br />
 +
全てのグループで設定完了後、全てのグループを解除
 +
 +
[[ファイル:3dsmax_pro_optimizer.jpg|border|link=]]
  
===GLB===
+
===書き出し===
 
3dsmax 20xx<br />
 
3dsmax 20xx<br />
[https://github.com/BabylonJS/Exporters GitHub - BabylonJS/Exporters]<br />
+
全てのマテリアル修正<br />
[https://doc.babylonjs.com/extensions/Exporters/3DSMax 3DS MAX Plugin | Babylon.js Documentation]<br />
+
[[ファイル:babylon_exporter01.jpg|border|link=]]
[https://doc.babylonjs.com/extensions/Exporters/3DSMax_to_glTF#draco-compression Draco compression | Babylon.js Documentation]<br />
+
Node.js<br />
+
gltf-pipeline
+
  
マテリアル修正<br />
+
MAX保存<br />
スペキュラカラーとスペキュラレベルは、3dsMaxで2つの属性に分割され、Babylonでマージされます。
+
Lサイズ8192x8192を作成しているのでM, Sサイズが必要な場合フォルダで管理<br />
グローバル値の場合、鏡面反射色とレベルが乗算されて、Babylonで結果の鏡面反射色が得られます。
+
LサイズフォルダをコピーしてM, Sサイズをリサイズ アセットトラッキングで切り替え
  
[[ファイル:babylon_exporter01.jpg|320px|border]]
+
FBX書き出し
  
Babylon Exporter
+
GLB書き出し<br />
 +
[https://github.com/BabylonJS/Exporters GitHub - BabylonJS/Exporters]
 
  Output format: glb
 
  Output format: glb
 
  Model path: *****
 
  Model path: *****
 
  ✓ Export Materials
 
  ✓ Export Materials
 
  ✓ Export Textures
 
  ✓ Export Textures
Texture quality: 50
+
    Texture quality: 50
 
  ✓ Use Draco compression
 
  ✓ Use Draco compression
 
  ✓ Write Textures
 
  ✓ Write Textures
 
  ✓ Overwrite Textures
 
  ✓ Overwrite Textures
 
+
<!--
 
===LOD===
 
===LOD===
 
WebGLビューワ向けに最適化、軽量化してみます。
 
WebGLビューワ向けに最適化、軽量化してみます。
263行目: 282行目:
 
  モデル(main)にリダクションモデル(lod)を追加
 
  モデル(main)にリダクションモデル(lod)を追加
 
  テクスチャとマテリアルは共有
 
  テクスチャとマテリアルは共有
  親がダミーの子ジオメトリはグローバル座標計算コストが高い
+
  親がダミーの子がジオメトリはグローバル座標計算コストが高い
  
 
3dsmax 20xx<br />
 
3dsmax 20xx<br />
 
[[ファイル:babylon_exporter02.jpg|260px|border]]
 
[[ファイル:babylon_exporter02.jpg|260px|border]]
  1.全てのジオメトリを親に変更 ダミー削除
+
  1.全てのジオメトリを選択 親に変更
  2.全てのジオメトリを複製しグループmainとlod作成
+
  2.ダミーオブジェクト削除
  3.lodの処理が重いのでlod下層で100個にグループ分け
+
  3.全てのジオメトリを選択
  4.lod下層グループ1つ選択
+
  4.グループmain作成
  5.プロオプティマイザー
+
  5.グループmainをクローン
 +
  オブジェクト: コピー
 +
  コントローラー: コピー
 +
  名前: lod
 +
6.lodの処理が重いのでlodグループを開き100個にグループ分け
 +
7.グループ1つ選択
 +
8.プロオプティマイザー
 
   ✓マテリアル境界を保持
 
   ✓マテリアル境界を保持
 
   ✓テクスチャを保持
 
   ✓テクスチャを保持
 
   □UV境界を保持
 
   □UV境界を保持
 
   > 計算 > 頂点34% 新宿ALLの場合 15万÷44万
 
   > 計算 > 頂点34% 新宿ALLの場合 15万÷44万
  6.lod下層グループで繰り返し
+
  9.グループで繰り返し
  7.max保存
+
  10.max保存
  8.lod下層グループ解除 mainとlodに
+
  11.グループ解除 mainとlodに
  9.GLB書き出し
+
  12.GLB書き出し
 +
-->
 +
 
 +
=='''GLB改修'''==
 +
Blender<br />
 +
glb読込み > texture付きfbxで書き出し
 +
 
 +
[[ファイル:blender_fbx_export.jpg|border|link=]]
 +
 
 +
=='''DEM'''==
 +
[https://qiita.com/yoshikawa-hiroyuki/items/6935a9705b3144774fd1 PLATEAUのDEMファイルに空中写真のテクスチャを貼りたい - Qiita]
 +
 
 +
Ubuntu<br />
 +
デスクトップにtmpディレクトリ作成<br />
 +
テキスト作成 > 貼り付け<br />
 +
<pre>
 +
for x in {232787..232807}; do
 +
  for y in {103210..103226}; do
 +
    url=https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/18/${x}/${y}.jpg
 +
    curl -o ${y}-${x}.jpg ${url}
 +
  done
 +
done
 +
montage *.jpg -tile 2x2 -geometry 512x512+0+0 combined.jpg
 +
</pre>
 +
 
 +
名前変更 > merge.sh<br />
  
=='''データ'''==
+
<pre>
[http://dz.plala.jp/plateau/533945_shinjuku_fbx.zip 533945_shinjuku_fbx.zip]<br />
+
$ cd /home/xxx/デスクトップ/tmp
[http://dz.plala.jp/plateau/533945_shinjuku_glb_draco.zip 533945_shinjuku_glb_draco.zip]
+
$ bash merge.sh
 +
</pre>
 +
<!--
 +
combined.sh
 +
<pre>
 +
for x in {232784..232806}; do
 +
  for y in {103227..103210}; do
 +
    url=https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/18/${x}/${y}.jpg
 +
    curl -o ${y}-${x}.jpg ${url}
 +
  done
 +
done
 +
montage *.jpg -tile 23x18 -geometry 512x512+0+0 combined.jpg
 +
</pre>
 +
$ sudo bash combined.sh
 +
-->
  
 
=='''更新履歴'''==
 
=='''更新履歴'''==
* 2021.06.16 バウンディングボックス修正
+
* 2022.08.16 見直し 澁谷、品川、大丸有地区 追加
* 2021.06.05 Dracoに変更
+
 
* 2021.05.21 見直し
 
* 2021.05.21 見直し
 
* 2021.04.04 公開
 
* 2021.04.04 公開

2022年9月2日 (金) 20:56時点における最新版

PLATEAU LOD2データ最適化とビューアを作成してみます。

PLATEAUV[プラトービューア]

Qr PLATEAU.png

具合

PLATEAUV thumb.jpg

新宿 品川
53394525 53394526 53394535 53394536 ALL
FBX (MB) 337 99 190 178 116
texture (枚) 1,714 465 1,032 1,053 808
FBX L (MB) 35 24 41 36 27
GLB L (MB) 28 20 32 28 20
GLB M (MB) 11 8 12 11 8
GLB S (MB) 5 3 6 5 4
texture (枚) 6 4 6 5 4

L: ゲーミングPC向け
M: 一般PC向け
S: スマホ・タブレット向け

最適化エリア

13100 indexmap op.jpg

最適化データ
https://dz.plala.jp/plateauv/data/fbx/
https://dz.plala.jp/plateauv/data/

最大解像度の確認

UV200.jpg

L: 8192x8192 丁度いい
LL: 16384x16384 必要ない

不具合
Uncaught RangeError: WebAssembly.Memory(): could not allocate memory

変換

方向性

LOD2のFBX1個につきオブジェクトとオブジェクト名は変更せず、
テクスチャとマテリアルを数個にまとめる
「建物200棟のUVテクスチャ」を「1枚のUVテクスチャにベイク」を目安にしてみる
Lサイズを作成し、M, Sサイズが必要な場合はテクスチャサイズ変更で対応
Lサイズ: 8192x8192
Mサイズ: 4096x4096
Sサイズ: 2048x2048

見込み

Unityの頂点結合は恐ろしく最適化が見込める
テクスチャ1000枚が5枚にまとまるのでファイルアクセス200倍最適化見込み
更に最適化なら1枚毎にメッシュマージでdraw call 200倍最適化見込み
マルチサブオブジェクトならdraw call 最大1000倍最適化見込み
プロオプティマイザー頂点結合でさらに5倍最適化見込み
draco採用でさらに50%程度容量削減の見込み
glTF採用でPBRマテリアルを保持

以下とりあえず不採用

LLサイズ: 16384x16384
Draco Compressed Meshes with glTF and 3D Tiles – Cesium
gzip採用でさらに20%削減?
glTFエクスポート時のDraco圧縮.... – Shade3D Knowledge Base
メッシュマージでさらに90%削減?

環境

データセット 3D都市モデル(Project PLATEAU)東京都23区 - データセット
FBXをダウンロード
DCCツール unity, 3dsmax, photoshop, blender

配慮が必要

Unity 2020.1.13f1 FBX Exporter UVの欠落なし まれにあり
Unity 2018.3.6f1 FBX Exporter UVの欠落あり
読込みだけ
Unity 2020.1.13f1以上?使用
3dsmax 2017 FBX Import 一部がマルチタイル(3dsmax 2017新機能)に自動変換 都合悪い
3dsmax 2014 FBX Import 全てビットマップ
読込みだけ
3dsmax 2014使用
3dsmax 2017 ジオメトリ226個目のベイク処理でエラー
3dsmax 2014 ジオメトリ219個目のベイク処理でエラー
200個はOK
photoshop script ファイルをレイヤーとして読み込み
200枚は途中でエラー 処理能力の限界
50枚はOK

Mesh

Unity 2020.1.13f1

1.新規project
  install MeshOptimizerWindow.cs · GitHub
  install FBX Exporter
2.fbxをインポート
  ダウンロードしたデータセットの\bldg\lod2フォルダ
  FBXはtexture付きなのでtextureとmaterialを設定
  Hierarchyに配置
3.PLATEAU Mesh Optimizer
  適用
4.Hierarchyに作成される変換データを選択
  Export to FBX
  同名になるので末尾に_newなど名前変更
  off: Compatible Naming

3dsmax 2014

5._newのfbx読込み
  MAX保存

3dsmax 20xx

6.MAX読込み
7.全て親階層に移動
  ダミーオブジェクト削除
8.バウンディングボックス修正
  ジオメトリ全て選択
  基点調整 > 基点にのみ影響 > 位置合わせ: 中心オブジェクト
9.全てのメッシュを選択
  最適化 > 自動エッジ
  まれにUVが壊れる 壊れるメッシュだけ最適化に入れない
  MAX保存

Texture

3dsmax 20xx

1.MAX読込み
2.ジオメトリ200個でグループ分けと名前変更
  5339****_bldg_001
  5339****_bldg_002
  5339****_bldg_003
  ...
3.グループ1つ選択
4.UVWアンラップ > チャネル 2(移動)
5.UVエディタ > マッピング > フラッテンマッピング
6.テクスチャレンダリング
  保存先 グループ同名フォルダ作成
  一般設定 > 出力 > パス > グループ同名フォルダ指定
  off: レンダリングフレームウインドウ
  マッピング座標 > 既存チャネルを使用 > チャネル 2
  出力 > 追加 > DiffuseMap
  ターゲットマップスロット 空を選択
  8192x8192
  画像形式の指定
    A."選択オブジェクト" > "個別設定" に変更
    B.ファイル名とタイプの設定が可能
       PNG アルファ付 保存
    C.ベイク処理するオブジェクト > "プリセットを保存"
    D."個別設定" > "選択オブジェクト" に戻す
    E.ベイク処理するオブジェクト > "プリセット選択"
  レンダリング
7.MAX保存

photoshop

8.50枚でフォルダ分け
  処理能力限界の為
9.8192x8192 新規作成
  ファイル > スクリプト > ファイルをレイヤーとして読み込み
  PNG アルファ付 保存
10.グループ分け全てのPNG配置
  ファイル > スクリプト > ファイルをレイヤーとして読み込み
  背景黒追加
  グループ名と同名JPG保存

作成グループで繰り返し

具合

53393585 bldg 6677 001.jpg 53393585 bldg 6677 002.jpg 53393585 bldg 6677 003.jpg

Material

3dsmax 20xx

1.グループ1つ選択
2.UVWアンラップ > チャネル 2 > 1(移動)
3.新規マテリアル
  グループと同名 同名ベイク画像設定
  グループに適用

グループ全てで繰り返し

4.全てグループ解除
5.全て頂点連結 0.0
6.クリーニング
   FBX書き出し
   FBX読込み
7.MAX保存

頂点

3dsmax 20xx
処理が重いのでジオメトリ200個程度でグループ分け
グループ1つを選択し、グループにプロオプティマイザー適用
全てのグループで設定完了後、全てのグループを解除

3dsmax pro optimizer.jpg

書き出し

3dsmax 20xx
全てのマテリアル修正
Babylon exporter01.jpg

MAX保存
Lサイズ8192x8192を作成しているのでM, Sサイズが必要な場合フォルダで管理
LサイズフォルダをコピーしてM, Sサイズをリサイズ アセットトラッキングで切り替え

FBX書き出し

GLB書き出し
GitHub - BabylonJS/Exporters

Output format: glb
Model path: *****
✓ Export Materials
✓ Export Textures
   Texture quality: 50
✓ Use Draco compression
✓ Write Textures
✓ Overwrite Textures

GLB改修

Blender
glb読込み > texture付きfbxで書き出し

Blender fbx export.jpg

DEM

PLATEAUのDEMファイルに空中写真のテクスチャを貼りたい - Qiita

Ubuntu
デスクトップにtmpディレクトリ作成
テキスト作成 > 貼り付け

for x in {232787..232807}; do
  for y in {103210..103226}; do
    url=https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/18/${x}/${y}.jpg
    curl -o ${y}-${x}.jpg ${url}
  done
done
montage *.jpg -tile 2x2 -geometry 512x512+0+0 combined.jpg

名前変更 > merge.sh

$ cd /home/xxx/デスクトップ/tmp
$ bash merge.sh

更新履歴

  • 2022.08.16 見直し 澁谷、品川、大丸有地区 追加
  • 2021.05.21 見直し
  • 2021.04.04 公開