質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

126閲覧

Unity PlateauSDKとtoolkitの導入ができません(おそらくLibTessDotNetのインポートができていない)

g1n

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SDK

SDK(software development kit)は特定のハードウェアのプラットフォーム、開発環境又はソフトウェアパッケージでソフトウェアをつくるのに必要な開発ツールのセットです。SDKはAPI、IDE又は他の開発ツールとフレームワークを組み合わせたもので構成されていることがあります。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2025/04/07 11:29

実現したいこと

Unity PlateauSDKとtoolkitの導入をしたいです

https://note.com/vrsensei/n/nc821e64157f9

に従ってUnity 上で操作を行っています。

発生している問題・分からないこと

エラーが5つほど出ておりその最初の部分でつまづいています。

エラーメッセージ

error

1Assembly for Assembly Definition File 'Packages/com.synesthesias.plateau-unity-sdk/ThirdParty/NetTopologySuite/NetTopologySuiteAssemblyDefinition.asmdef' will not be compiled, because it has no scripts associated with it. 2UnityEditor.Scripting.ScriptCompilation.EditorCompilationInterface:CompileScripts (UnityEditor.Scripting.ScriptCompilation.EditorScriptCompilationOptions,UnityEditor.BuildTargetGroup,UnityEditor.BuildTarget,int,string[]) 3 4 5E:\plateau_data\PLATEAU-SDK-for-Unity-main\Runtime\RoadAdjust\RoadNetworkToMesh\Contour\RnmTessSubMesh.cs(1,7): error CS0246: The type or namespace name 'LibTessDotNet' could not be found (are you missing a using directive or an assembly reference?) 6 7E:\plateau_data\PLATEAU-SDK-for-Unity-main\Runtime\RoadAdjust\RoadNetworkToMesh\Contour\RnmTessSubMesh.cs(23,47): error CS0246: The type or namespace name 'Tess' could not be found (are you missing a using directive or an assembly reference?) 8 9E:\plateau_data\PLATEAU-SDK-for-Unity-main\Runtime\RoadAdjust\RoadNetworkToMesh\ContourGenerator\ContourToMesh.cs(46,38): error CS0246: The type or namespace name 'Vec3' could not be found (are you missing a using directive or an assembly reference?)

該当のソースコード

C#

1using LibTessDotNet; 2using System.Collections.Generic; 3using System.Linq; 4using UnityEngine; 5using Vector3 = UnityEngine.Vector3; 6 7 8namespace PLATEAU.RoadAdjust.RoadNetworkToMesh 9{ 10 /// <summary> 11 /// 道路ネットワークの輪郭線をテッセレーターにかけた結果から、UnityのMeshに変換するときに使う中間データ構造であり、 12 /// メッシュ結合前の、マテリアルが1つである部分メッシュを表現します。 13 /// </summary> 14 internal class RnmTessSubMesh 15 { 16 public Vector3[] Vertices { get; } 17 private readonly Vector2[] uv1; 18 private readonly int[] triangles; 19 public RnmMaterialType MatType { get; private set; } 20 public int VertexCount => Vertices.Length; 21 public RnmContour Contour { get; private set; } 22 23 public static RnmTessSubMesh Generate(Tess tess, RnmMaterialType matType, RnmContour contour) 24 { 25 var subMesh = TessToTessMesh(tess, matType, contour); 26 return subMesh; 27 } 28 29 public RnmTessSubMesh(Vector3[] vertices, int[] triangles, Vector2[] uv1, RnmMaterialType matType, RnmContour contour) 30 { 31 this.Vertices = vertices; 32 this.triangles = triangles; 33 this.uv1 = uv1; 34 this.MatType = matType; 35 this.Contour = contour; 36 } 37 38 private static RnmTessSubMesh TessToTessMesh(Tess tess, RnmMaterialType matType, RnmContour contour) 39 { 40 int numTriangle = tess.ElementCount; 41 int numVertex = tess.VertexCount; 42 var triangles = new int[numTriangle * 3]; 43 for (int i = 0; i < numTriangle; i++) 44 { 45 triangles[i*3] = tess.Elements[i*3]; 46 triangles[i*3+1] = tess.Elements[i*3+1]; 47 triangles[i*3+2] = tess.Elements[i*3+2]; 48 } 49 50 var vertices = new Vector3[numVertex]; 51 for (int i = 0; i < numVertex; i++) 52 { 53 var tessVert = tess.Vertices[i]; 54 vertices[i] = new Vector3(tessVert.Position.X, tessVert.Position.Y, tessVert.Position.Z); 55 } 56 57 var uv1 = new Vector2[numVertex]; 58 for (int i = 0; i < numVertex; i++) 59 { 60 uv1[i] = (Vector2)tess.Vertices[i].Data; 61 } 62 63 return new RnmTessSubMesh(vertices, triangles, uv1, matType, contour); 64 } 65 66 public CombineInstance ToCombineInstance() 67 { 68 var combine = new CombineInstance { mesh = ToUnityMesh(), transform = Matrix4x4.identity }; 69 return combine; 70 } 71 72 public void ApplyModifiers(RnmTessMesh tessMesh) 73 { 74 foreach (var modifier in Contour.TessModifiers) 75 { 76 modifier.Apply(tessMesh, Contour); 77 } 78 } 79 80 private Mesh ToUnityMesh() 81 { 82 var mesh = new Mesh { vertices = Vertices, triangles = triangles, uv = uv1 }; 83 return mesh; 84 } 85 } 86 87 /// <summary> 88 /// 道路ネットワークの輪郭線をテッセレーターにかけた結果から、UnityのMeshに変換するときに使う中間データ構造であり、 89 /// <see cref="RnmTessSubMesh"/>を結合してUnityのMeshを返します。 90 /// </summary> 91 internal class RnmTessMesh 92 { 93 public List<RnmTessSubMesh> SubMeshes { get; }= new (); 94 95 public void Add(RnmTessSubMesh subMesh) 96 { 97 if (subMesh == null) 98 { 99 Debug.LogWarning("subMesh is null."); 100 return; 101 } 102 SubMeshes.Add(subMesh); 103 } 104 105 public Mesh ToUnityMesh(out Dictionary<int, RnmMaterialType> subMeshIDToMatType) 106 { 107 subMeshIDToMatType = new(); 108 109 110 // まず同一マテリアルごとに結合します。 111 var mats = SubMeshes.Select(s => s.MatType).Distinct(); 112 var matMeshes = new List<Mesh>(); 113 int matID = 0; 114 foreach (var mat in mats) 115 { 116 var matSubs = SubMeshes.Where(s => s.MatType == mat).ToArray(); 117 if (matSubs.Length == 0) 118 { 119 Debug.LogWarning("Invalid matSubs length."); 120 continue; 121 } 122 var matCombines = 123 matSubs 124 .Where(m => m.VertexCount > 0) 125 .Select(s => s.ToCombineInstance()) 126 .ToArray(); 127 128 if(matCombines.Length == 0) continue; 129 130 var matMesh = new Mesh(); 131 matMesh.CombineMeshes(matCombines.ToArray(), true); 132 matMeshes.Add(matMesh); 133 subMeshIDToMatType.Add(matID, mat); 134 matID++; 135 } 136 137 // 次にマテリアル別に結合します。 138 var combines = matMeshes.Select(m => new CombineInstance() { mesh = m, transform = Matrix4x4.identity }); 139 140 var mesh = new Mesh(); 141 mesh.CombineMeshes(combines.ToArray(), false); 142 mesh.RecalculateBounds(); 143 mesh.RecalculateNormals(); 144 mesh.RecalculateTangents(); 145 return mesh; 146 } 147 } 148}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Google, ChatGPTを使用しました。
LibTessDotNetの導入ができていないと考えています。

試したこと
1.
https://github.com/speps/LibTessDotNet からダウンロードしても.unitypackageがないため、インポートできない。
2.
Assets\PluginsにLibTessDotNetのファイルごと入れ、refreshしたがダメ

補足

Unity: 2022.3.56f1 Universal Render Pipeline
SDK: https://github.com/Project-PLATEAU/PLATEAU-SDK-for-Unity.git#v3.2.0-beta
toolkit:https://github.com/Project-PLATEAU/PLATEAU-SDK-Toolkits-for-Unity.git#v2.1.0-beta

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2025/04/08 11:01

Unity 2022.3.60f1+SDK 3.4.1+Toolkits 2.2.1で試してみましたが、少なくとも同様のエラーは確認できませんでした。 バージョンを変えて試してみてください。 また、公式ドキュメントに「導入時にエラーが出てSDKを利用できない場合、git lfsがインストールされているか確認してください。」とあるので、その点も再度確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問