Synesthesias/PLATEAU-SDK-for-Unity

後述する作業をSDK単体で実行できるようしてほしい。

Opened this issue · 5 comments

制作したデモについて

PC向けゲームで軽量に動作するように、次のようなデモを作成してみました。

ContentExample 2

動作環境がMac M1 Pro(RAM 16GB)で、40FPS(おおよそ4K画質)ほど出ています。
(SDKからそのまま入れた場合は動作しない)

これを実現するために、以下の作業をしました。

LOD1の配置
・PLATEAU SDK for Unityで新宿のLOD1を配置したい範囲よりも大きめにインポート
・端の部分を削除(現時点では範囲選択が網羅的でないためインポートする必要がある)
・PLATEAU SDK Toolkits for UnityのRendering Toolkitで自動テクスチャを生成
・Unity付属の機能を使いFBXでエクスポート(SDK付属の機能だと、テクスチャがあってもDefault-Materialが割り当てられる←あくまでLOD1にテクスチャを付与したものの場合)
・Unity付属の機能を使ってFBXにすると、名前以外のテクスチャ情報が損なわれるため、名前に応じて自動テクスチャでテクスチャを割り当てる機能を自作して使用
・MeshBakerでまとめてひとつのMeshに結合

LOD2の配置
・PLATEAU SDK for Unityで新宿のLOD2を大きめにインポート
・端の部分を削除
・SDK付属の機能を使いFBXにエクスポート(こちらは適切にテクスチャが割り当てられていて、内容の欠損もない)
・MeshBakerで地域範囲ごとにテクスチャをアトラス化した後、メッシュを結合

その他
・PLATEAU SDK for Unityでシームレス空中写真を付した地形モデルを大きめに配置
・Unity付属の機能を使いFBXでエクスポート

加えて少しの詳細設定(PLATEAUと関係がないので省く)

このあたりをある程度自動で行えるようにして欲しいです。

他に実装して欲しいと考える部分

マテリアルにShaderGraphをよく使っているからか、自動テクスチャを付与したLOD1が重いです。
また、Rendering ToolkitをUnityから削除してもテクスチャが正常動作するようにして欲しいです。

あと、任意のDEMデータを地球の曲率に合わせて適切に折り曲げて建物を配置するツールも欲しいです。
(環境要素を構築するときにURPでもHDRPのように地球の大気を再現できるシェーダーも欲しい)
Cesiumで軽量な作品を作るのは難しいです。

この度は貴重なご意見をくださりありがとうございます。

  • 選択範囲の端にある建物がインポートから漏れる問題について、今後修正予定です。
  • エクスポート機能について、PLATEAU SDK Toolkits for Unityの自動テクスチャ機能で設定された情報が一部抜け落ちる問題について、今後修正予定です。
  • メッシュの結合に関しては、PLATEAUウィンドウのモデル修正→結合/分離から地域単位に指定することで結合できます。
  • 地球の曲率に合わせて曲げる機能と、URPで地球の大気を再現する機能、およびToolkitsの自動テクスチャのシェーダーの高速化については、今すぐの開発課題ではないものの、貴重なご意見として検討させていただきます。

メッシュの結合に関して、テクスチャ生成を利用すると建物単位に再分割されてしまいます。
また、テクスチャ生成を利用するとモデル修正が使えなくなります。
他にも、特定の要素(例えば屋内のモデルなど)を消去することによってもモデル修正が使えなくなります。

この度はお手数をおかけしておりすみません。

  • Toolkitsのテクスチャ生成機能とSDKの結合分割機能の併用時の問題について、すみません、今後の開発課題とさせていただきます。
  • 「特定の要素(例えば屋内のモデルなど)を消去することによってもモデル修正が使えなくなります」について、未知のバグの可能性があります。どの都市モデルに対してどれを削除するとバグとなるのかご教示頂けると大変助かります。

PLATEAU SDK Toolkits for Unityの開発会社に問い合わせたところ、次の返答がありました:

URPでHDRPのように地球の大気を再現できるシェーダー

これに関しては実装済みだと認識しております。RenderingToolkitで環境システムを作成すると自動でURPでもHDRPのような地球の大気を再現したカスタムSkyboxシェーダーが設定されたマテリアルがシーンのSkyboxマテリアルに設定されるはずです。

自動テクスチャを付与したLOD1が重い

これに関してはLOD1自動テクスチャのマテリアルは最大でも10個程度のマテリアルのいずれかががランダムに割り当てられ、かつ複数の地物で共有されており、SRPバッチも動作します。SetPassCallも減る為、ドローコールの負荷はそこまで高くないのではないかと推測しております。本当に自動テクスチャが原因かどうかは断定が難しいと思います。スクリーンショットを見る限り広域でメッシュを表示している為、単純にポリゴン数等が原因の可能性もあります。

Rendering ToolkitをUnityから削除してもテクスチャが正常動作するようにしてほしい

こちらは何故Rendering Toolkitを削除する必要があるのか、理由も気になりました。

建物の一部を削除するとうまく再結合ができなくなる

オブジェクトを最小地物単位で配置

建物の特定のオブジェクトを削除(Delete)

モデルの結合単位を地域に変更

以上で再現できるかと思われます。
結果としては、複数ある建物のうち一つしか表示されなくなってしまいます。

URPで地球の大気を再現できるシェーダー

URPで地球の大気を再現できるシェーダーについて確認したところ、地球の曲率によるものに関しても実装されているようでした。
ただ、HDRPと違い地表からかなりの距離を置くと見えなくなるので、少し気付きにくかったです。
※HDRPだと惑星という単位から視認できる(ワールドが球体で見える)

自動テクスチャを付与したLOD1が重い

自動テクスチャを付与したLOD1に関して、単純にポリゴン数が原因かもしれないです。
シンプルにLODグループを実装して対処します。

Rendering Toolkitを削除したい理由

Rendering Toolkitを削除する理由は、ゲームの容量が増えてしまうからです。
検証として、空のプロジェクトを作成し、Toolkits v0.2.2までのツールを導入したものと、それらを導入した後削除したものをそれぞれビルドしました。
その結果、前者は405.5MBで後者は94.9MBと、そこそこな差がつきました。
可能であれば容量を削減したいという思いから、Toolkitsを削除するという判断に至りました。
※Rendering Toolkitに限定しているのは、それ以外は削除しても特に問題なかったからです。

真摯な対応に感謝します。