Coder Social home page Coder Social logo

synesthesias / plateau-sdk-for-unity Goto Github PK

View Code? Open in Web Editor NEW
110.0 110.0 16.0 256.85 MB

PLATEAUの3D都市モデルデータをUnityで扱うためのツールキット

License: MIT License

C# 99.74% Game Maker Language 0.24% HLSL 0.01%
csharp japan mlit plateau plateau-sdk unity3d

plateau-sdk-for-unity's Issues

テクスチャの重複

以下の画像の中で選択されている建物は、sljm0370.jpgとsljm037000.jpgという二つの画像を参照していますが、実際の画像を見てみると、この二つの画像は全く同じであるように見えます。
本来1枚の画像で済むところ、同じ画像を複数参照しているのだとしたら、パフォーマンス的によくないと思います。
実際、内容が同じ画像を複数参照しているのでしょうか?
image

地理院地図のダウンロード画像が一時フォルダに残り続けます

Unityの範囲選択画面で表示される地理院地図の画像ファイルは、Unityの一時フォルダである
C:\Users\(ユーザー名)\AppData\Local\Temp\Synesthesias\PLATEAUDev\GSIMapImages
に保存されます。
一度でも表示した地図はPC内にずっと残り続けます。
古い画像を消すような処理は未実装です。
ユーザーのPCのディスク容量を圧迫する原因となるかもしれません。

ビルドエラー

このSDKを含めたプロジェクトのビルドができませんでした。
エディタでのみ動作する想定のコードがRuntimeで使用されているようです。

private static PackageToLodDict CalcAvailablePackageLodInMeshCodes(IEnumerable<MeshCode> meshCodes, DatasetSourceConfig datasetSourceConfig)
{
using var datasetSource = DatasetSource.Create(datasetSourceConfig);
using var accessorAll = datasetSource.Accessor;
using var accessor = accessorAll.FilterByMeshCodes(meshCodes);
using var gmlFiles = accessor.GetAllGmlFiles();
var ret = new PackageToLodDict();
int gmlCount = gmlFiles.Length;
for (int i = 0; i < gmlCount; i++)
{
var gml = gmlFiles.At(i);
int maxLod = gml.GetMaxLod();
ret.MergePackage(gml.Package, maxLod);
//Progress表示
float progress = (float)i / gmlCount;
EditorUtility.DisplayProgressBar("PLATEAU", "利用可能なデータを検索中です......", progress);
}
EditorUtility.ClearProgressBar();
return ret;
}

エラー内容

Library\PackageCache\com.synesthesias.plateau-unity-sdk@1a863b2366\Runtime\CityImport\AreaSelector\AreaSelectorBehaviour.cs(201,17): error CS0103: The name 'EditorUtility' does not exist in the current context
Library\PackageCache\com.synesthesias.plateau-unity-sdk@1a863b2366\Runtime\CityImport\AreaSelector\AreaSelectorBehaviour.cs(203,13): error CS0103: The name 'EditorUtility' does not exist in the current context

string samplePath = PathUtil.SdkPathToAssetPath("Samples");

/// <summary>
/// SdkBasePath からの相対パスを受け取り、アセットパスに変換して返します。
/// </summary>
public static string SdkPathToAssetPath(string sdkPath)
{
return Path.Combine(SdkBasePath, sdkPath);
}

エラー内容

Library\PackageCache\com.synesthesias.plateau-unity-sdk@1a863b2366\Samples\AttributesSample\Scripts\ClickToShowAttributes.cs(38,42): error CS0117: 'PathUtil' does not contain a definition for 'SdkPathToAssetPath'

開発環境

  • Windows 11
  • Unity 2022.3.0
  • PLATEAU-SDK-for-Unity v1.1.5

場所による建物のテクスチャのクオリティの違いについての質問

インポートの設定を変えなくても、場所によって、建物のテクスチャのクオリティが高く見える場所と、そうでない場所があるみたいなのですが、これは元々のデータにクオリティの差があることが原因なのでしょうか?それとも、なんらかの設定によるものなのでしょうか?

新宿(解像度が高いように見える。看板の文字がはっきり読める。)
image
池袋(解像度が低いように見える。看板の内容が読めない。)
image
インポート設定
image

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

制作したデモについて

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で軽量な作品を作るのは難しいです。

建物の範囲選択が網羅的でない

地物の範囲選択が網羅的でないです。
特定の範囲を複数回に分けて配置した時、選択範囲の端と端(継ぎ目)にある地物がインポートされません。
現時点では、範囲を重複させてインポートした後、重複部分を手動で削除する必要があります。

Importation Problem

I don't know what's wrong with the SDK, I followed everything based on the manual, but there still a lot of errors that's popping out when I'm trying to import a CityGML file. I've attached the Errors below.
Also, may I request a more comprehensive and detailed instruction on How to Import using this SDK, maybe add the required system qualification, GameObjects that needed, scripts, etc. this will a great help for everyone, Thank you.

image

モデルをエクスポートする時、使っていないデフォルトのテクスチャも出力されてしまう

LOD2のオブジェクトをエクスポートする時、実際に使用されているテクスチャ以外にもデフォルトのマテリアルが付与されてしまいます。(Tex_GenericBuildings_top_Diffuseなど)
これにより、エクスポート後のモデルをMesh Bakerでテクスチャを結合すると、このデフォルトのテクスチャも結合されてしまいました。
結合したテクスチャのすべてにデフォルトのテクスチャが含まれているということです。
Blenderなどを使用すれば削除できますが、可能であればエクスポート時のオプションとしてテクスチャを選択しない機能が欲しいです。

(質問)Git URLでのUPMインポートについて

公式のドキュメントでは、リリースページからtarballをダウンロードしてそれをUPMから指定することで、SDKをインポートするように指示があるかと思います。
個人的にGit URLでのインポートをしたいと考えており、試しにhttps://github.com/Synesthesias/PLATEAU-SDK-for-Unity.git#v1.0.0というURLを指定してSDKをインポートしてみたところ問題なくインポートできたように感じました。

tarballと違いGit URL経由のインポートではダウンロードなどの手間がなくなるというメリットがあり重宝しているのですが、公式ドキュメントで明示されていないということは何か問題があったり、意図していない事などがあるのでしょうか。

Rendering Toolkitの自動テクスチャ生成機能を使ったモデルをエクスポートできない問題

Rendering Toolkitの自動テクスチャ生成機能を使ったモデルの修正やエクスポートが出来ません。
モデルの修正に関しては別の形式にした後Blenderなどで修正できますが、そもそもエクスポートが出来ないとゲームの軽量化が出来なくなってしまいます。

本来ゲーム制作などでPLATEAUを使えるようにするためのToolkitsなのにも関わらず、軽量化をする方法が限られているのはあまりよろしくないのではないかと考えました。
個人的に自動テクスチャ生成機能はゲーム制作にとても有効なツールと考えているので、対応のほどお願いできないでしょうか?

メッシュ選択時に青い枠が表示されない

いつも素晴らしいSDKをありがとうございます。
いままでは問題なくSDKを利用できていたのです,が、突然、インポート時の範囲選択の画面にて、青い枠や選択を意味するオレンジの枠が表示されなくなりました。メッシュの選択自体は効いていて、インポートは可能なのですが、どの範囲を選んでいるのかはわからない状態です。
image
特にコンソールログもないため原因を探ることもできません。
プロジェクトの再制作、別の市町村のデータでの試行、SDKの再インストール、Unityの再インストールも試しましたが状況は改善しません。
もし何か思い当たる原因がありましたらお知らせいただけると幸いです。

Windows 10 22H2
Unity 2021.3.35f1
Plateau SDK 2.3.2

インポートする時、格子の大枠ごとにPLATEAU Instanced City Model (Script)をアタッチできるようにして欲しい。

PLATEAU SDK ToolkitsのMaps Toolkitsにあるモデル位置合わせを使用する時、PLATEAU Instanced City Modelを参考に配置されているようです。
そのため、大きな範囲を一括でインポートし位置合わせを実行すると、中心から離れた場所では地球の曲率により建物が浮いてしまいます。
大きな範囲を一括でインポートした時、大きな格子に分割してPLATEAU Instanced City Modelを付与すれば解決できるのではないかと考えました。
対策のほどお願いしたいです。

ライセンス未定

このSDKのライセンスが正式に決まっていません。
MIT か Apache-2.0 のどちらになる見込みです。
ライセンスについて要整理です。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.