このガイドでは、Geospatial Creator を使用して C# スクリプトを作成する方法について説明します。
一般的なタスク(ファイルの作成や移動、
Unity の編集モードの ARGeospatialCreatorAnchor
オブジェクト。これは
スプレッドシートや KML などの事前定義リストから複数のアンカーを作成する
表示されます。
Unity の Geospatial Creator を使用すると、地理空間コンテンツを Unity Editorクイックスタート ガイド では、Geospatial Creator を紹介し、最初のイメージまたは Unity を使用した、最小限のプログラミングで地理空間に対応した AR エクスペリエンス エディタ UI。より高度なプロジェクトの場合は、Terraform を作成し、操作することも Unity ではなくプログラムで地理空間作成者 GameObject エディタ UI。
このガイドは、Geospatial Creator の基本コンセプトを理解していることを前提としています。 クイックスタートで紹介されて、地理空間情報の追加を開始する クリエイターがシーンに固定している。Geospatial Creator を有効にして、 初期 AR セッション オブジェクト、API キー、 できます。ゼロから作成する場合は、クイックスタート ガイドに沿って操作してください。 「地理空間情報の有効化」の クリエイター」 してから続行してください。
スタートガイド
この例では、市庁舎周辺に既知の場所が 1 つあるとします。 AR コンテンツを配置する場所、米国カリフォルニア州サンフランシスコ。手順 各場所にアンカー オブジェクトを作成してから、基本的な ジオメトリを追加します。
アンカーを作成する前に、アンカーと
ARGeospatialCreatorOrigin
: データを変換する際の基準点
Unity ワールド座標との間の緯度、経度、高度。
オリジンには、CesiumGeoreference
サブコンポーネントと
Cesium3DTileset
子オブジェクト。これにより、Cesium が周囲の画像をレンダリングできるようになります。
Unity エディタの [Scene] エリア内に表示されます。そのためには Google マップが必要です
Tiles API キー(
クイックスタート
Origin を作成する
Geospatial Creator の API には、
ARGeospatialCreatorOrigin
をシーンに適用し、必要な Cesium コンポーネントを追加します。
次のコードは、
指定された Map Tiles API キーを使用:
ARGeospatialCreatorOrigin origin =
GeospatialCreatorCesiumAdapter.CreateOriginWithCesiumGeoreference(
37.77954, -122.417581, 0.0, "<MAP_TILES_KEY>");
デフォルトでは、このオブジェクトは Unity ワールド座標の (0, 0, 0) に配置されます。 この例ではうまくいきます
ARAnchorManager
リファレンスを取得する
ARAnchorManager
ランタイム時に地理空間アンカーを解決する必要があるため、
また、シーン内の ARAnchorManager
への参照も必要です。最初は
ARCore 拡張機能である Anchor がバンドルされた地理空間サンプル アプリケーション
[AR Session Origin] にマネージャーが添付されていますGameObject.仮に
アンカー マネージャーを 1 つだけ使用する場合は、
これを次のように使用します。
ARAnchorManager anchorManager =
Resources.FindObjectsOfTypeAll<ARAnchorManager>()[0];
オリジンとアンカー マネージャーが用意できたので、次は
ARGeospatialCreatorAnchor
オブジェクト。
地形アンカーを作成する
次の double
値の 2 次元配列について考えてみましょう。
東向きの 3 点の正確な緯度と経度を
米カリフォルニア州サンフランシスコの市庁舎:
double[,] _cityHallEastPoints = {
{ 37.77936, -122.418617 }, // in front of city hall
{ 37.77965, -122.418680 }, // right of city hall
{ 37.77917, -122.418577 }}; // left of city hall
それぞれの位置に、地面に 1 m の立方体を 1 つずつ配置するとします。
必要があります。次のコードにより、
ARGeospatialCreatorAnchor
オブジェクトを作成し、そのプロパティを
次のように指定します。
for (int i = 0; i < _cityHallEastPoints.GetLength(0); i++)
{
ARGeospatialCreatorAnchor anchor =
new GameObject("City Hall " + i).AddComponent<ARGeospatialCreatorAnchor>();
anchor.Origin = origin;
anchor.AnchorManager = anchorManager;
anchor.Latitude = _cityHallEastPoints[i, 0];
anchor.Longitude = _cityHallEastPoints[i, 1];
anchor.AltitudeType = AnchorAltitudeType.Terrain;
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.parent = anchor.transform;
}
これにより、各地点に地形アンカーが作成されます。Geospatial Creator は、
適切な Unity ワールド座標にアンカーが配置されます。この座標は、
ARGeospatialCreatorOrigin
オブジェクトからの相対位置。調整
地形アンカーの高度(Altitude
プロパティを海抜 m)または
必要があります
実行時に、実行中のアプリの地面レベルで地形アンカーが解決されます。
Altitude
プロパティによるオフセット。ただしエディタのシーンビューでは
3D タイルを基準としてではなく、デフォルトで WGS84 の高度 0 でレンダリング
ジオメトリ。これは望む場所ではないことが多いため、
エディタのシーンビューでアンカーのデフォルトの高度(
UseEditorAltitudeOverride
プロパティを true
に設定し、標高を
EditorAltitudeOverride
プロパティを使用した WGS 84 メートル:
anchor.UseEditorAltitudeOverride = true;
anchor.EditorAltitudeOverride = -13.5; // WGS84 altitude at ground level for City Hall plaza
これら 2 つのプロパティは、エディタモード以外では効果がなく、 実行中のアプリにコンパイルされます。
屋上アンカーを作成する
次のアンカーとして、City の屋上にアンカーを配置するとします。
ホール。アンカーもまったく同じように作成できますが、AltitudeType
プロパティを AnchorAltitudeType.Rooftop
に設定します。
ARGeospatialCreatorAnchor cityHallRoofAnchor =
new GameObject("City Hall Roof").AddComponent<ARGeospatialCreatorAnchor>();
cityHallRoofAnchor.Origin = origin;
cityHallRoofAnchor.AnchorManager = anchorManager;
cityHallRoofAnchor.Latitude = 37.77959;
cityHallRoofAnchor.Longitude = -122.419006;
cityHallRoofAnchor.AltitudeType = AnchorAltitudeType.Rooftop;
GameObject roofCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
roofCube.transform.parent = cityHallRoofAnchor.transform;
地形アンカーと同様に、屋上の高度を微調整できます。
UseEditorAltitudeOverride
を使用してエディタのシーンビューに固定し、
EditorAltitudeOverride
プロパティ。この例では、海面の WGS84 高度は
約 10.7 m です。
特定の高度にアンカーを作成する
最後のアンカーは、市庁舎のドームの最上部に配置します。対象 このアンカーでは正確な高度が重要になるため、 地形や屋上アンカーの代わりに WGS84 アンカーを使用する場合:
ARGeospatialCreatorAnchor cityHallDomeAnchor =
new GameObject("City Hall Dome").AddComponent<ARGeospatialCreatorAnchor>();
cityHallDomeAnchor.Origin = origin;
cityHallDomeAnchor.AnchorManager = anchorManager;
cityHallDomeAnchor.Latitude = 37.77928;
cityHallDomeAnchor.Longitude = -122.419241;
cityHallDomeAnchor.AltitudeType = AnchorAltitudeType.WGS84;
cityHallDomeAnchor.Altitude = 73;
GameObject domeCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
domeCube.transform.parent = cityHallDomeAnchor.transform;
高度は現在の高度設定であるため、エディタ専用の高度オーバーライドを使用する必要はありません。 これは WGS84 に従ってすでに指定されているものです。もちろん、Map Tiles の高さが エディタのジオメトリが実世界と比較して正しくないことが判明しました。 エディタのオーバーライドを使用してシーン内のアンカーの位置を変更することもできます。 表示されます。