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

提供: ディーズガレージ wiki
移動先: 案内検索
(具合)
 
(同じ利用者による、間の855版が非表示)
1行目: 1行目:
{| style="font-weight:100;float:right;margin-right:-3px;"
+
{| style="font-weight:100;float:right;"
 
|__TOC__
 
|__TOC__
 
|}
 
|}
Project PLATEAU データセットを最適化、軽量化してみます。
 
  
[https://dz.plala.jp/plateau/viewer/ Viewer]<br />
+
PLATEAU LOD2データ最適化とビューアを作成してみます。
[https://dz.plala.jp/plateau/viewer/index_lod.html Viewer LOD付き]
+
 
 +
[https://dz.plala.jp/plateauv/ PLATEAUV[プラトービューア]]
  
 
[[ファイル:qr_PLATEAU.png|240px|border]]
 
[[ファイル:qr_PLATEAU.png|240px|border]]
  
 
=='''具合'''==
 
=='''具合'''==
GLB L: 8192x8192<br />
+
[[ファイル:PLATEAUV_thumb.jpg|540px|border]]
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
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394535
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394535
 
| 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;" | 53394577
 
| 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;" | 1,830
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,180
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,180
| style="padding-left:10px;padding-right:10px;text-align:right;" | 2,190
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 2,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;" | 1,860
| style="padding-left:10px;padding-right:10px;text-align:right;" | 7,060
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 432
| 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,487
| style="padding-left:10px;padding-right:10px;text-align:right;" | 453
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 453
| 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,012
| 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,042
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3,994
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,866
| 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;color:#ccc;" | FBX L (MB)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 30
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 36
| style="padding-left:10px;padding-right:10px;text-align:right;" | 21
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 24
| style="padding-left:10px;padding-right:10px;text-align:right;" | 34
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 42
| style="padding-left:10px;padding-right:10px;text-align:right;" | 29
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 37
| style="padding-left:10px;padding-right:10px;text-align:right;" | 115
+
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 49
| 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;" | FBX M (MB)
| 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;" | 13
+
| 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;" | 18
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 18
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 12
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 22
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 19
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 25
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB S Draco (MB)
+
| style="padding-left:10px;padding-right:10px;text-align:left;" | FBX S (MB)
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4 (6)
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 14
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3
+
| 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;" | 9
 
| style="padding-left:10px;padding-right:10px;text-align:right;" | 9
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 17
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 16
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 16
 
|-
 
|-
| 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;" | 6
| style="padding-left:10px;padding-right:10px;text-align:right;" | 67,094
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 4
| style="padding-left:10px;padding-right:10px;text-align:right;" | 126,598
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 6
| style="padding-left:10px;padding-right:10px;text-align:right;" | 130,902
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
| style="padding-left:10px;padding-right:10px;text-align:right;" | 440,176
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 10
| style="padding-left:10px;padding-right:10px;text-align:right;" | 180,153
+
|}
 +
 
 +
{| class="wikitable" style="width:540px;"
 +
!
 +
! colspan="4"| 新宿
 +
! 池袋
 
|-
 
|-
| style="padding-left:10px;padding-right:10px;text-align:left;" | geometries 最大
+
| style="padding-left:10px;padding-right:10px;text-align:left;width:120px;" |  
| style="padding-left:10px;padding-right:10px;text-align:right;" | 798
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394525
| style="padding-left:10px;padding-right:10px;text-align:right;" | 492
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394526
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,131
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394535
| style="padding-left:10px;padding-right:10px;text-align:right;" | 1,054
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394536
| style="padding-left:10px;padding-right:10px;text-align:right;" | 3,427
+
| style="padding-left:10px;padding-right:10px;text-align:right;" | 53394577
| 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:left;color:#ccc;" | FBX (MB)
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,830
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,180
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 2,190
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,860
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 432
 +
|-
 +
| style="padding-left:10px;padding-right:10px;text-align:left;color:#ccc;" | texture (枚)
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,487
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 453
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,012
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,042
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,866
 +
|-
 +
| style="padding-left:10px;padding-right:10px;text-align:left;color:#ccc;" | GLB L (MB)
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 29
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 20
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 33
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 29
 +
| style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 41
 +
|-
 +
| 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;" | 7
 +
| 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;" | 16
 +
|-
 +
| style="padding-left:10px;padding-right:10px;text-align:left;" | GLB S (MB)
 +
| 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;" | 6
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 5
 +
| style="padding-left:10px;padding-right:10px;text-align:right;" | 7
 +
|-
 +
| style="padding-left:10px;padding-right:10px;text-align:left;" | texture (枚)
 
| 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;" | 10
 
| 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
 
 
|}
 
|}
 +
 +
※ <del>LL: 16384x16384</del><br />
 +
※ L: 8192x8192 ゲーミングPC向け<br />
 +
※ M: 4096x4096 一般PC向け<br />
 +
※ S: 2048x2048 スマホ・タブレット向け
 +
 +
PLATEAUV[プラトービューア]<br />
 +
澁谷・池袋・大丸有地区: スマホ動作テスト目的で中央から15万ポリゴン範囲外を削除<br />
 +
全て: Lサイズの初期表示処理が重く感じMサイズで様子見
 +
 +
最適化データ
 +
[https://dz.plala.jp/plateauv/_data_wiki/53394525_shinjuku_bldg_L.FBX 53394525_shinjuku_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/53394526_shinjuku_bldg_L.FBX 53394526_shinjuku_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/53394535_shinjuku_bldg_L.FBX 53394535_shinjuku_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/53394536_shinjuku_bldg_L.FBX 53394536_shinjuku_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/533935_shibuya_bldg_L.FBX 533935_shibuya_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/533945_ikebukuro_bldg_L.FBX 533945_ikebukuro_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/533935_shinagawa_bldg_L.FBX 533935_shinagawa_bldg_L.FBX]
 +
[https://dz.plala.jp/plateauv/_data_wiki/533946_daimaruyu_bldg_L.FBX 533946_daimaruyu_bldg_L.FBX]
 +
新宿地区全部+DEM
 +
[https://dz.plala.jp/plateauv/_data_wiki/533945_shinjuku_bldg_L.FBX 533945_shinjuku_bldg_L.FBX]
 +
 +
類似コンテンツ<br />
 +
[http://dz.plala.jp/wiki/index.php/Multiverse_XR_Viewer Multiverse XR Viewer - wiki]
 +
データ作成の考え方や構造が全く同じなので最適化データはAR,VR,XRに流用可
 +
ただしテーブルに置ける建築模型サイズに変更しないと見てられない
  
 
メモ
 
メモ
----
+
*ガラス材質の反射マテリアル作成できないだろうか?
距離​LOD有効分岐処理ほしい 15万程度以下無効<br />
+
*夜景マテリアル作成できないだろうか?
距離​LODでなく見かけの大きさでLOD or アスペクト比でLOD距離変更?<br />
+
*植生分布の色分けDEM画像があれば樹木を自動生成できる
ジオメトリ名で操作する場合lodグループは信用できない mainとlod紐付けしたい > 名前の一括変更スクリプトは?
+
*カメラからの距離で表示ポリゴン数制限にすれば全国対応できるかも
 +
*複数の設定済みバードビューのランダム再生の方が気持ちいいかも
 +
*設定済みデータで太陽光源の位置を推定しマイナスライトを当てると影を消せるかも
 +
*設定済みデータでAOマップを作成し除算すると環境光の陰影を消せるかも
  
地形<br />
+
=='''変換'''==
[https://github.com/domlysz/BlenderGIS GitHub - domlysz/BlenderGIS]<br />
+
===方向性===
<!--[https://github.com/eliemichel/MapsModelsImporter GitHub - eliemichel/MapsModelsImporter]<br />
+
bldg, LOD2のFBX1個につきオブジェクトとオブジェクト名は変更せず、
[https://github.com/felixpalmer/procedural-gl-js GitHub - felixpalmer/procedural-gl-js]<br />
+
テクスチャとマテリアルを数個にまとめる
[https://github.com/w3reality/three-geo GitHub - w3reality/three-geo]<br />
+
"建物200棟のUVテクスチャ"を"1枚のUVテクスチャにベイク"を目安にしてみる
[https://github.com/tentone/geo-three GitHub - tentone/geo-three]-->
+
  
3D Tiles<br />
+
Unityの頂点結合は恐ろしく最適化が見込める
[https://github.com/NASA-AMMOS/3DTilesRendererJS GitHub - NASA-AMMOS/3DTilesRendererJS]
+
テクスチャ1000枚が5枚にまとまるのでファイルアクセス200倍最適化見込み
 +
更に最適化なら1枚毎にメッシュマージでdraw call 200倍最適化見込み
 +
マルチサブオブジェクトならdraw call 最大1000倍最適化見込み
 +
プロオプティマイザー頂点結合でさらに5倍最適化見込み
 +
draco採用でさらに50~60%程度容量削減の見込み
 +
glTF採用でマテリアルを保持できる
  
CityGML<br />
+
Lサイズを作成し、M, Sサイズが必要な場合はテクスチャサイズ変更で対応
https://ascii.jp/elem/000/004/044/4044198/
+
Lサイズ: 8192x8192
 +
Mサイズ: 4096x4096
 +
Sサイズ: 2048x2048
  
XR<br />
+
以下とりあえず不採用
[https://threejs.org/docs/#manual/en/introduction/How-to-create-VR-content How to create VR content - three.js docs]<br />
+
LLサイズ: 16384x16384
[https://developer.mozilla.org/ja/docs/Web/API/WebXR_Device_API/Startup_and_shutdown#webxr_polyfill WebXR ポリフィル - MDN - Mozilla]
+
  
AI<br />
+
[https://cesium.com/blog/2018/04/09/draco-compression/#cesium-3d-tiles Draco Compressed Meshes with glTF and 3D Tiles – Cesium]
[https://www.4gamer.net/games/999/G999905/20210601027/ スペースデータ]
+
gzip採用でさらに20%削減?
  
SameSite Cookie 警告出てる
+
[https://knowledge.shade3d.jp/kb9795 glTFエクスポート時のDraco圧縮.... &#8211; Shade3D Knowledge Base]
 +
メッシュマージでさらに90%削減?
  
=='''環境'''==
+
===環境===
{| class="wikitable" style="width:480px;"
+
{| 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区 - データセット]
 
|-
 
|-
 
| 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
 
|}
 
|}
  
141行目: 198行目:
 
  Unity 2018.3.6f1 FBX Exporter UVの欠落あり
 
  Unity 2018.3.6f1 FBX Exporter UVの欠落あり
  
  3dsmax 2017 FBX Import 一部がマルチタイル(3dsmax 2017新機能)は都合悪い
+
  3dsmax 2017 FBX Import 一部がマルチタイル(3dsmax 2017新機能)に自動変換 都合悪い
 
  3dsmax 2014 FBX Import 全てビットマップ
 
  3dsmax 2014 FBX Import 全てビットマップ
  
 
  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]
   [https://gist.github.com/fumobox/555a25524a32a847f0cc5c87d134940e PlateauLod2FbxImporterWindow.cs]
+
   install FBX Exporter
  FBX Exporter
+
  2.fbxをインポート
  2.fbxとfbmディレクトリを同時にドラッグアンドドロップでインポート
+
  texture付きFBXなので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行目: 226行目:
 
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行目: 271行目:
 
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]]
  
===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]]
[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を作成しているのでMSサイズが必要な場合フォルダで管理<br />
グローバル値の場合、鏡面反射色とレベルが乗算されて、Babylonで結果の鏡面反射色が得られます。
+
LサイズフォルダをコピーしてMSサイズをリサイズ アセットトラッキングで分岐
  
[[ファイル: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ビューワ向けに最適化、軽量化してみます。
  
  親がダミーの子ジオメトリはグローバル座標計算コストが高い
+
  距離に応じてmainとlodを表示切替え
 
+
 
  モデル(main)にリダクションモデル(lod)を追加
 
  モデル(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]]
 +
 
 +
=='''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>
 +
$ cd /home/xxx/デスクトップ/tmp
 +
$ bash merge.sh
 +
</pre>
  
=='''データ'''==
+
<br />
[http://dz.plala.jp/plateau/533945_shinjuku_fbx.zip 533945_shinjuku_fbx.zip]<br />
+
combined.sh
[http://dz.plala.jp/plateau/533945_shinjuku_glb_draco.zip 533945_shinjuku_glb_draco.zip]
+
<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.14 見直し 澁谷、品川、大丸有地区 追加
* 2021.06.05 Dracoに変更
+
 
* 2021.05.21 見直し
 
* 2021.05.21 見直し
 
* 2021.04.04 公開
 
* 2021.04.04 公開

2022年8月16日 (火) 10:03時点における最新版

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

PLATEAUV[プラトービューア]

Qr PLATEAU.png

具合

PLATEAUV thumb.jpg

新宿 池袋
53394525 53394526 53394535 53394536 53394577
FBX (MB) 1,830 1,180 2,190 1,860 432
texture (枚) 1,487 453 1,012 1,042 1,866
FBX L (MB) 36 24 42 37 49
FBX M (MB) 18 12 22 19 25
FBX S (MB) 14 9 17 16 16
texture (枚) 6 4 6 5 10
新宿 池袋
53394525 53394526 53394535 53394536 53394577
FBX (MB) 1,830 1,180 2,190 1,860 432
texture (枚) 1,487 453 1,012 1,042 1,866
GLB L (MB) 29 20 33 29 41
GLB M (MB) 11 7 12 11 16
GLB S (MB) 5 3 6 5 7
texture (枚) 6 4 6 5 10

LL: 16384x16384
※ L: 8192x8192 ゲーミングPC向け
※ M: 4096x4096 一般PC向け
※ S: 2048x2048 スマホ・タブレット向け

PLATEAUV[プラトービューア]
澁谷・池袋・大丸有地区: スマホ動作テスト目的で中央から15万ポリゴン範囲外を削除
全て: Lサイズの初期表示処理が重く感じMサイズで様子見

最適化データ

53394525_shinjuku_bldg_L.FBX
53394526_shinjuku_bldg_L.FBX
53394535_shinjuku_bldg_L.FBX
53394536_shinjuku_bldg_L.FBX
533935_shibuya_bldg_L.FBX
533945_ikebukuro_bldg_L.FBX
533935_shinagawa_bldg_L.FBX
533946_daimaruyu_bldg_L.FBX
新宿地区全部+DEM
533945_shinjuku_bldg_L.FBX

類似コンテンツ
Multiverse XR Viewer - wiki

データ作成の考え方や構造が全く同じなので最適化データはAR,VR,XRに流用可
ただしテーブルに置ける建築模型サイズに変更しないと見てられない

メモ

  • ガラス材質の反射マテリアル作成できないだろうか?
  • 夜景マテリアル作成できないだろうか?
  • 植生分布の色分けDEM画像があれば樹木を自動生成できる
  • カメラからの距離で表示ポリゴン数制限にすれば全国対応できるかも
  • 複数の設定済みバードビューのランダム再生の方が気持ちいいかも
  • 設定済みデータで太陽光源の位置を推定しマイナスライトを当てると影を消せるかも
  • 設定済みデータでAOマップを作成し除算すると環境光の陰影を消せるかも

変換

方向性

bldg, LOD2のFBX1個につきオブジェクトとオブジェクト名は変更せず、
テクスチャとマテリアルを数個にまとめる
"建物200棟のUVテクスチャ"を"1枚のUVテクスチャにベイク"を目安にしてみる
Unityの頂点結合は恐ろしく最適化が見込める
テクスチャ1000枚が5枚にまとまるのでファイルアクセス200倍最適化見込み
更に最適化なら1枚毎にメッシュマージでdraw call 200倍最適化見込み
マルチサブオブジェクトならdraw call 最大1000倍最適化見込み
プロオプティマイザー頂点結合でさらに5倍最適化見込み
draco採用でさらに50~60%程度容量削減の見込み
glTF採用でマテリアルを保持できる
Lサイズを作成し、M, Sサイズが必要な場合はテクスチャサイズ変更で対応
Lサイズ: 8192x8192
Mサイズ: 4096x4096
Sサイズ: 2048x2048

以下とりあえず不採用

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

環境

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

配慮が必要

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

Mesh

Unity 2020.1.13f1

1.新規project
  install MeshOptimizerWindow.cs
  install FBX Exporter
2.fbxをインポート
  texture付きFBXなので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を作成しているのでMSサイズが必要な場合フォルダで管理
LサイズフォルダをコピーしてMSサイズをリサイズ アセットトラッキングで分岐

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


combined.sh

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
$ sudo bash combined.sh

更新履歴

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