「PLATEAU 最適化」の版間の差分
(→LOD) |
(→具合) |
||
1行目: | 1行目: | ||
− | {| style="font-weight:100;float:right | + | {| style="font-weight:100;float:right;" |
|__TOC__ | |__TOC__ | ||
|} | |} | ||
− | |||
− | [https://dz.plala.jp/ | + | PLATEAU LOD2データ最適化とビューアを作成してみます。 |
+ | |||
+ | [https://dz.plala.jp/plateauv/ PLATEAUV[プラトービューア]] | ||
[[ファイル:qr_PLATEAU.png|240px|border]] | [[ファイル:qr_PLATEAU.png|240px|border]] | ||
=='''具合'''== | =='''具合'''== | ||
− | + | [[ファイル:PLATEAUV_thumb.jpg|540px|border]] | |
− | + | ||
− | + | {| class="wikitable" style="width:540px;" | |
− | + | ||
− | + | ||
− | {| class="wikitable" style="width: | + | |
! | ! | ||
− | ! colspan=" | + | ! colspan="4"| 新宿 |
− | ! | + | ! 品川 |
|- | |- | ||
− | | style="padding-left:10px;padding-right:10px;text-align:left;width: | + | | 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: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;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 337 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | 1, | + | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 99 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 190 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | 1, | + | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 178 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 116 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | |- |
+ | | 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,714 | ||
+ | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 465 | ||
+ | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,032 | ||
+ | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 1,053 | ||
+ | | style="padding-left:10px;padding-right:10px;text-align:right;color:#ccc;" | 808 | ||
|- | |- | ||
− | | style="padding-left:10px;padding-right:10px;text-align:left;" | FBX | + | | style="padding-left:10px;padding-right:10px;text-align:left;" | FBX L (MB) |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 35 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 24 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 41 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 36 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 27 |
− | + | ||
|- | |- | ||
− | | style="padding-left:10px;padding-right:10px;text-align:left;" | GLB L | + | | style="padding-left:10px;padding-right:10px;text-align:left;" | GLB L (MB) |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 28 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 20 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 32 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 28 |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 20 |
− | + | ||
|- | |- | ||
− | | style="padding-left:10px;padding-right:10px;text-align:left;" | GLB M | + | | 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;" | | + | | 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;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 8 |
− | + | ||
|- | |- | ||
− | | style="padding-left:10px;padding-right:10px;text-align:left;" | GLB S | + | | style="padding-left:10px;padding-right:10px;text-align:left;" | GLB S (MB) |
− | | style="padding-left:10px;padding-right:10px;text-align:right;" | | + | | 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;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 4 |
− | + | ||
− | + | ||
|- | |- | ||
− | | style="padding-left:10px;padding-right:10px;text-align:left;" | | + | | 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;" | | + | | style="padding-left:10px;padding-right:10px;text-align:right;" | 4 |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|} | |} | ||
− | + | L: ゲーミングPC向け<br /> | |
− | + | M: 一般PC向け<br /> | |
− | + | S: スマホ・タブレット向け<br /> | |
− | + | 澁谷・池袋・大丸有地区: スマホ動作テスト目的で中央から15万ポリゴン範囲外を削除 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | 最適化エリア | |
− | + | ||
− | + | [[ファイル:13100_indexmap_op.jpg|240px|border]] | |
− | + | ||
− | + | 最適化データ<br /> | |
− | + | https://dz.plala.jp/plateauv/data/fbx/<br /> | |
− | + | https://dz.plala.jp/plateauv/data/ | |
− | + | 最大解像度の確認 | |
− | + | ||
− | + | [[ファイル:UV200.jpg|404px|border]] | |
− | ==''' | + | L: 8192x8192 丁度いい<br /> |
− | {| class="wikitable" style="width: | + | LL: 16384x16384 必要ない<br /> |
+ | original: ボケてる | ||
+ | *ワークフローにphotoshopシャープ処理必要 | ||
+ | |||
+ | メモ<br /> | ||
+ | データ最適化 | ||
+ | *設定済みデータで太陽光源の位置を推定しマイナスライトを当てると影を消せるかも | ||
+ | *設定済みデータでAOマップを作成し除算すると環境光の陰影を消せるかも | ||
+ | *ガラス材質の反射マテリアル作成できないだろうか? | ||
+ | *夜景マテリアル作成できないだろうか? | ||
+ | *DEM1枚に建つ建物平均数から逆算(現状200棟でUV1枚)で最適なDEM解像度出せる | ||
+ | *植生分布の色分けDEM画像があれば樹木を自動生成できる | ||
+ | *FBX階層と原点は変更しない方がよさげ バウンディングボックスは修正 | ||
+ | *DDS, KTX辺りの具合未確認 | ||
+ | *LOD2フォルダのファイル数は80 データ構築範囲索引図のマス目は673 | ||
+ | PLATEAUV[プラトービューア] | ||
+ | *クリック操作でカメラターゲットをバウンディングボックスに移動していいかも | ||
+ | *カメラターゲットからの距離で表示ポリゴン数制限にすれば全国対応できるかも | ||
+ | *複数の設定済みバードビューのランダム再生の方が気持ちいいかも | ||
+ | |||
+ | 類似コンテンツ<br /> | ||
+ | [http://dz.plala.jp/wiki/index.php/Multiverse_XR_Viewer Multiverse XR Viewer - wiki]<br />Googleとデータ作成の考え方が同じ<br /> | ||
+ | 少しの調整でAR,VR,XRに流用可 | ||
+ | |||
+ | =='''変換'''== | ||
+ | ===方向性=== | ||
+ | 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圧縮.... – 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- | + | | 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 |
|} | |} | ||
136行目: | 156行目: | ||
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枚は途中でエラー | + | 200枚は途中でエラー 処理能力の限界 |
+ | 50枚はOK | ||
− | == | + | ===Mesh=== |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
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] |
− | + | install FBX Exporter | |
− | + | 2.fbxをインポート | |
− | 2. | + | ダウンロードしたデータセットの\bldg\lod2フォルダ |
+ | FBXはtexture付きなのでtextureとmaterialを設定 | ||
Hierarchyに配置 | Hierarchyに配置 | ||
3.PLATEAU Mesh Optimizer | 3.PLATEAU Mesh Optimizer | ||
− | 4. | + | 適用 |
+ | 4.Hierarchyに作成される変換データを選択 | ||
Export to FBX | Export to FBX | ||
同名になるので末尾に_newなど名前変更 | 同名になるので末尾に_newなど名前変更 | ||
167行目: | 190行目: | ||
3dsmax 2014 | 3dsmax 2014 | ||
5._newのfbx読込み | 5._newのfbx読込み | ||
− | |||
MAX保存 | MAX保存 | ||
3dsmax 20xx | 3dsmax 20xx | ||
6.MAX読込み | 6.MAX読込み | ||
− | + | 7.全て親階層に移動 | |
− | + | ダミーオブジェクト削除 | |
+ | 8.バウンディングボックス修正 | ||
ジオメトリ全て選択 | ジオメトリ全て選択 | ||
基点調整 > 基点にのみ影響 > 位置合わせ: 中心オブジェクト | 基点調整 > 基点にのみ影響 > 位置合わせ: 中心オブジェクト | ||
+ | 9.全てのメッシュを選択 | ||
+ | 最適化 > 自動エッジ | ||
+ | まれにUVが壊れる 壊れるメッシュだけ最適化に入れない | ||
MAX保存 | MAX保存 | ||
− | === | + | ===Texture=== |
3dsmax 20xx | 3dsmax 20xx | ||
1.MAX読込み | 1.MAX読込み | ||
− | 2. | + | 2.ジオメトリ200個でグループ分けと名前変更 |
− | + | 5339****_bldg_001 | |
− | + | 5339****_bldg_002 | |
− | + | 5339****_bldg_003 | |
... | ... | ||
3.グループ1つ選択 | 3.グループ1つ選択 | ||
209行目: | 235行目: | ||
photoshop | photoshop | ||
8.50枚でフォルダ分け | 8.50枚でフォルダ分け | ||
− | 9.ファイル > スクリプト > ファイルをレイヤーとして読み込み | + | 処理能力限界の為 |
− | + | 9.8192x8192 新規作成 | |
− | + | ファイル > スクリプト > ファイルをレイヤーとして読み込み | |
− | + | PNG アルファ付 保存 | |
− | + | 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. | + | グループと同名 同名ベイク画像設定 |
− | 5. | + | グループに適用 |
− | + | グループ全てで繰り返し | |
− | + | 4.全てグループ解除 | |
+ | 5.全て頂点連結 0.0 | ||
+ | 6.クリーニング | ||
FBX書き出し | FBX書き出し | ||
FBX読込み | FBX読込み | ||
+ | 7.MAX保存 | ||
+ | |||
+ | ===頂点=== | ||
+ | 3dsmax 20xx<br /> | ||
+ | 処理が重いのでジオメトリ200個程度でグループ分け<br /> | ||
+ | グループ1つを選択し、グループにプロオプティマイザー適用<br /> | ||
+ | 全てのグループで設定完了後、全てのグループを解除 | ||
+ | |||
+ | [[ファイル:3dsmax_pro_optimizer.jpg|border]] | ||
− | === | + | ===書き出し=== |
3dsmax 20xx<br /> | 3dsmax 20xx<br /> | ||
− | + | 全てのマテリアル修正<br /> | |
− | [ | + | [[ファイル:babylon_exporter01.jpg|border]] |
− | [ | + | |
− | + | ||
− | + | ||
− | + | MAX保存<br /> | |
− | + | Lサイズ8192x8192を作成しているのでM, Sサイズが必要な場合フォルダで管理<br /> | |
− | + | LサイズフォルダをコピーしてM, Sサイズをリサイズ アセットトラッキングで切り替え | |
− | + | FBX書き出し | |
+ | GLB書き出し<br /> | ||
+ | [https://github.com/BabylonJS/Exporters GitHub - BabylonJS/Exporters] | ||
+ | Output format: glb | ||
+ | Model path: ***** | ||
+ | ✓ Export Materials | ||
+ | ✓ Export Textures | ||
+ | Texture quality: 50 | ||
+ | ✓ Use Draco compression | ||
+ | ✓ Write Textures | ||
+ | ✓ Overwrite Textures | ||
+ | <!-- | ||
===LOD=== | ===LOD=== | ||
WebGLビューワ向けに最適化、軽量化してみます。 | WebGLビューワ向けに最適化、軽量化してみます。 | ||
+ | 距離に応じて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. | + | 2.ダミーオブジェクト削除 |
− | 3. | + | 3.全てのジオメトリを選択 |
− | 4.プロオプティマイザー | + | 4.グループmain作成 |
+ | 5.グループmainをクローン | ||
+ | オブジェクト: コピー | ||
+ | コントローラー: コピー | ||
+ | 名前: lod | ||
+ | 6.lodの処理が重いのでlodグループを開き100個にグループ分け | ||
+ | 7.グループ1つ選択 | ||
+ | 8.プロオプティマイザー | ||
✓マテリアル境界を保持 | ✓マテリアル境界を保持 | ||
✓テクスチャを保持 | ✓テクスチャを保持 | ||
□UV境界を保持 | □UV境界を保持 | ||
− | > 計算 > 頂点34% | + | > 計算 > 頂点34% 新宿ALLの場合 15万÷44万 |
− | + | 9.グループで繰り返し | |
− | + | 10.max保存 | |
− | + | 11.グループ解除 mainとlodに | |
− | + | 12.GLB書き出し | |
+ | --> | ||
− | [https:// | + | =='''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> | <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> | </pre> | ||
− | + | 名前変更 > merge.sh<br /> | |
− | + | ||
− | + | <pre> | |
+ | $ cd /home/xxx/デスクトップ/tmp | ||
+ | $ 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 | ||
+ | --> | ||
=='''更新履歴'''== | =='''更新履歴'''== | ||
− | * | + | * 2022.08.16 見直し 澁谷、品川、大丸有地区 追加 |
− | + | ||
* 2021.05.21 見直し | * 2021.05.21 見直し | ||
* 2021.04.04 公開 | * 2021.04.04 公開 |
2022年8月19日 (金) 00:17時点における最新版
PLATEAU LOD2データ最適化とビューアを作成してみます。
具合
新宿 | 品川 | ||||
---|---|---|---|---|---|
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: スマホ・タブレット向け
澁谷・池袋・大丸有地区: スマホ動作テスト目的で中央から15万ポリゴン範囲外を削除
最適化エリア
最適化データ
https://dz.plala.jp/plateauv/data/fbx/
https://dz.plala.jp/plateauv/data/
最大解像度の確認
L: 8192x8192 丁度いい
LL: 16384x16384 必要ない
original: ボケてる
- ワークフローにphotoshopシャープ処理必要
メモ
データ最適化
- 設定済みデータで太陽光源の位置を推定しマイナスライトを当てると影を消せるかも
- 設定済みデータでAOマップを作成し除算すると環境光の陰影を消せるかも
- ガラス材質の反射マテリアル作成できないだろうか?
- 夜景マテリアル作成できないだろうか?
- DEM1枚に建つ建物平均数から逆算(現状200棟でUV1枚)で最適なDEM解像度出せる
- 植生分布の色分けDEM画像があれば樹木を自動生成できる
- FBX階層と原点は変更しない方がよさげ バウンディングボックスは修正
- DDS, KTX辺りの具合未確認
- LOD2フォルダのファイル数は80 データ構築範囲索引図のマス目は673
PLATEAUV[プラトービューア]
- クリック操作でカメラターゲットをバウンディングボックスに移動していいかも
- カメラターゲットからの距離で表示ポリゴン数制限にすれば全国対応できるかも
- 複数の設定済みバードビューのランダム再生の方が気持ちいいかも
類似コンテンツ
Multiverse XR Viewer - wiki
Googleとデータ作成の考え方が同じ
少しの調整でAR,VR,XRに流用可
変換
方向性
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保存
作成グループで繰り返し
具合
Material
3dsmax 20xx
1.グループ1つ選択 2.UVWアンラップ > チャネル 2 > 1(移動) 3.新規マテリアル グループと同名 同名ベイク画像設定 グループに適用
グループ全てで繰り返し
4.全てグループ解除 5.全て頂点連結 0.0 6.クリーニング FBX書き出し FBX読込み 7.MAX保存
頂点
3dsmax 20xx
処理が重いのでジオメトリ200個程度でグループ分け
グループ1つを選択し、グループにプロオプティマイザー適用
全てのグループで設定完了後、全てのグループを解除
書き出し
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で書き出し
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 公開