Bu kılavuzda, Geospatial Creator'ın C# komut dosyaları yazmak için nasıl kullanılacağı açıklanmaktadır.
oluşturma ve taşıma gibi ortak görevleri
Unity'nin Düzenleme modunda ARGeospatialCreatorAnchor
nesne var. Bu özellik,
e-tablo veya KML gibi önceden tanımlanmış bir listeden birden çok bağlantı oluşturma
dosyası olarak kaydedebilirsiniz.
Unity'deki Coğrafi İçerik Oluşturucu, coğrafi içeriği Unity Düzenleyici'de bulabilirsiniz. Hızlı Başlangıç Kılavuzumuz Jeo-uzaysal Oluşturucu'yu tanıtıyor ve ilk coğrafi konum uygulamanızı Unity'yi kullanarak minimum programlamayla coğrafi özellikli AR deneyimi Düzenleyici kullanıcı arayüzü. Daha gelişmiş projelerde ise proje paydaşlarıyla, Unity'yi kullanmak yerine Geo-uzaysal Oluşturucu Oyun Nesneleri'ni (programatik olarak) Düzenleyici kullanıcı arayüzü.
Bu kılavuzda, temel Coğrafi Oluşturucu kavramlarına aşina olduğunuz varsayılır olduğunu ve Coğrafi Konum'u eklemeye İçerik üretici bir sahneye sabitler. Geospatial Creator'ı etkinleştirmeniz ve ve sahne. Sıfırdan başlıyorsanız Hızlı Başlangıç Kılavuzu'ndaki " İçerik Üretici" bölümünü inceleyin.
Başlarken
Bu örnekte, Yeşil Ofis’te Belediye Binası çevresinde bilinen bir dizi konumunuz olduğunu varsayalım AR içeriği yerleştirmek istediğiniz San Francisco, Kaliforniya, ABD. Bu kurstan sonra her konumda çapa nesneleri oluşturmanız ve daha sonra, geometrik özellikleri kullanır.
Bağlayıcı oluşturabilmeniz için önce
ARGeospatialCreatorOrigin
, dönüşüm için bir referans noktasıdır
Unity dünya koordinatlarına karşılık gelen enlem, boylam ve rakımları görebilirsiniz.
Kaynak ayrıca CesiumGeoreference
alt bileşeni ve
Sezyumun çevresini oluşturmasına olanak tanıyan Cesium3DTileset
alt nesnesi
Sahne görünümündeki 3. Adım'ı seçin. Bunun için bir Google Haritası'na ihtiyacınız var,
Parçalar API anahtarı şurada açıklanmıştır:
Hızlı başlangıç kılavuzu
Kaynak Oluşturma
Jeo-uzaysal Oluşturucu API'sı, zaman çizelgesi oluşturmak için bir fabrika yöntemi
ARGeospatialCreatorOrigin
ekleyin ve gerekli sezyum bileşenlerini ekleyin.
Aşağıdaki kod, kalkış noktasını yakındaki bir enlem, boylam ve
Rakım'a dokunun ve verilen Harita Parçası API anahtarını kullanarak:
ARGeospatialCreatorOrigin origin =
GeospatialCreatorCesiumAdapter.CreateOriginWithCesiumGeoreference(
37.77954, -122.417581, 0.0, "<MAP_TILES_KEY>");
Varsayılan olarak, bu nesne Unity dünya koordinatlarında (0, 0, 0) konumuna yerleştirilir ve bu örnekte iyi sonuç verir.
ARAnchorManager
referansını alın
ARAnchorManager
coğrafi çapaları çalışma zamanında çözmek için gereklidir. Böylece,
sahnedeki ARAnchorManager
öğesine de referans verilmesi gerekir.
ARCore Uzantıları ile paket halinde sunulan Geospatial Sample uygulaması,
Yönetici, "AR Oturumu Kaynağı"na eklenmiş GameObject. Diyelim ki
sabit bir yönetici kullanırsanız buna ilişkin referans alabilirsiniz.
bu:
ARAnchorManager anchorManager =
Resources.FindObjectsOfTypeAll<ARAnchorManager>()[0];
Artık bir kaynağınız ve bağlayıcı yöneticiniz olduğuna göre
ARGeospatialCreatorAnchor
nesne.
Arazi bağlayıcıları oluşturma
Aşağıdaki iki boyutlu double
değerlerini temsil eden diziyi inceleyin:
doğuya bakan tarafındaki üç noktadaki tam enlem ve boylama
ABD'nin Kaliforniya eyaletindeki San Francisco şehrindeki Belediye Binası:
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
Bu konumların her birine, zemine bir metre küp yerleştirmek istediğinizi varsayalım
seviyesinde çok çalışıyoruz. Aşağıdaki kod,
ARGeospatialCreatorAnchor
nesneleri belirler ve özelliklerini
uygun değerlere sahip olduğundan emin olun:
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;
}
Bu işlem, her noktada arazi çapaları oluşturur. Coğrafi Oluşturucu otomatik olarak
hesaplayarak çapaları uygun Unity dünya koordinatlarına yerleştirir
ARGeospatialCreatorOrigin
nesnesine göre konumu.
bir arazi çapasının rakımı varsa, Altitude
özelliğini metre cinsinden ayarlayın veya
bir zemin kaplayan yüzey.
Çalışma zamanında, arazi çapaları koşu uygulaması için yer seviyesinde çözümlenir.
Altitude
özelliği tarafından uzaklaştırılır. Ancak Editör'ün sahne görünümünde
3D bloka göre değil, varsayılan olarak 0 olan WGS84 rakımında oluşturulur
tıklayın. Bunları genellikle görmek istediğiniz yer değildir; bu nedenle
Düzenleyici'nin sahne görünümünde sabit reklamın varsayılan rakımını
UseEditorAltitudeOverride
mülkü, true
bölgesine ait ve rakımı şu şekilde belirtiyor:
EditorAltitudeOverride
mülkünü kullanarak WGS84 metre:
anchor.UseEditorAltitudeOverride = true;
anchor.EditorAltitudeOverride = -13.5; // WGS84 altitude at ground level for City Hall plaza
Bu iki özelliğin Düzenleyici modu dışında herhangi bir etkisi yoktur ve çalışan uygulamada derlenir.
Çatı çapası oluşturma
Bir sonraki demiri için, şehrin çatısına bir çapa yerleştirmek istediğinizi varsayalım
Salon. Sabit, AltitudeType
hariç aynı şekilde oluşturulabilir.
özellik AnchorAltitudeType.Rooftop
olarak ayarlanırsa:
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;
Arazi çapalarına benzer şekilde, bir çatının rakımında ince ayar yapabilirsiniz
UseEditorAltitudeOverride
ve düğmeleri kullanarak Düzenleyici'nin sahne görünümüne sabitleyin
EditorAltitudeOverride
mülk. Bu örnekte, yüksekliğin WGS84 rakımının
yaklaşık 10,7 metre yüksekliğindedir.
Belirli bir rakımda çapa oluşturma
Son çapımız Belediye Binası'nın kubbesinin en üstüne yerleştirilecek. Örneğin, olduğu için, tam rakım önemlidir. Bu nedenle, istediğiniz rakıma arazi veya çatı çapası yerine bir WGS84 çapası kullanarak:
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;
Rakım WGS84'e göre zaten belirtilmiştir. Elbette, Harita Karolarının yüksekliği editördeki geometrinin gerçek dünyaya kıyasla yanlış olduğu ortaya çıktı. Sahnedeki çapa yerini yeniden konumlandırmak için düzenleyicinin geçersiz kılmasını kullanmaya devam edebilirsiniz. görünüm.