Unity में Geospatial Creator में, प्रोग्राम की मदद से ऐंकर बनाएं और उनमें बदलाव करें

इस गाइड में जियोस्पेशियल क्रिएटर की मदद से C# स्क्रिप्ट लिखने का तरीका बताया गया है साइट बनाने और उसे एक जगह से दूसरी जगह ले जाने जैसे सामान्य कामों को तुरंत पूरा करने में Unity के बदलाव मोड में ARGeospatialCreatorAnchor ऑब्जेक्ट हैं. यह इन कामों में मददगार हो सकता है पहले से तय सूची से एक से ज़्यादा ऐंकर बनाना, जैसे कि स्प्रेडशीट या KML फ़ाइल से लिए जाते हैं.

Unity में जियोस्पेशियल क्रिएटर की मदद से, जियोस्पेशियल कॉन्टेंट की झलक Unity एडिटर का इस्तेमाल करें. हमारी क्विकस्टार्ट गाइड इसमें जियोस्पेशियल क्रिएटर के बारे में बताया गया है. साथ ही, डेटा सोर्स बनाने का तरीका भी बताया गया है Unity का इस्तेमाल करते हुए, कम से कम प्रोग्रामिंग के साथ, भौगोलिक डेटा की सुविधा वाले एआर का अनुभव एडिटर यूज़र इंटरफ़ेस (यूआई). ज़्यादा ऐडवांस प्रोजेक्ट के लिए, आपको प्रोजेक्ट बनाने और उसमें बदलाव करने की ज़रूरत पड़ सकती है Unity का इस्तेमाल करने के बजाय, जियोस्पेशल क्रिएटर GameObjects प्रोग्राम के हिसाब से, अपने-आप होने वाली प्रोसेस एडिटर यूज़र इंटरफ़ेस (यूआई).

इस गाइड में यह माना गया है कि आपको जियोस्पेशियल क्रिएटर के बुनियादी सिद्धांतों के बारे में पता है क्विकस्टार्ट में पेश किया गया है और आप जियोस्पेशियल जोड़ना शुरू करने के लिए तैयार हैं किसी सीन की तरफ़ ऐंकर करता क्रिएटर. आपको जियोस्पेशियल क्रिएटर की सुविधा चालू करनी होगी और को आपकी एपीआई कुंजियों और शुरुआती एआर सेशन ऑब्जेक्ट के साथ कॉन्फ़िगर किया गया है सीन. अगर आप नए सिरे से शुरुआत करना चाहते हैं, तो क्विकस्टार्ट गाइड में दिए निर्देशों को फ़ॉलो करें और इसके साथ ही, "भौगोलिक डेटा का इस्तेमाल चालू करें क्रिएटर" सेक्शन में जोड़ें.

शुरू करना

उदाहरण के लिए, मान लें कि आपके पास सिटी हॉल के आस-पास मौजूद ज्ञात स्थानों का एक सेट है सैन फ़्रांसिस्को, कैलिफ़ोर्निया, अमेरिका, जहां आप एआर (ऑगमेंटेड रिएलिटी) कॉन्टेंट दिखाना चाहते हैं. आपको इनमें से हर जगह पर ऐंकर ऑब्जेक्ट बनाने की ज़रूरत होती है और फिर बेसिक ज्यामिति भी शामिल है.

ऐंकर बनाने से पहले, आपको ARGeospatialCreatorOrigin, जो ग्राहक में बदलने के लिए रेफ़रंस पॉइंट है Unity दुनिया के निर्देशांकों में मौजूद अक्षांश, देशांतर, और ऊंचाई की जानकारी. ऑरिजिन में एक CesiumGeoreference सबकॉम्पोनेंट और एक Cesium3DTileset चाइल्ड ऑब्जेक्ट, जो आस-पास के सेल को रेंडर करने की अनुमति देता है Unity एडिटर के सीन व्यू में मौजूद एरिया. इसके लिए आपको Google Maps की ज़रूरत होगी Tiles API कुंजी, जैसा कि इसमें बताया गया है क्विकस्टार्ट

ऑरिजिन बनाएं

जियोस्पेशियल क्रिएटर के लिए एपीआई में, एक फ़ैक्ट्री तरीका शामिल किया गया है. इसकी मदद से, सीन में ARGeospatialCreatorOrigin जोड़ें और ज़रूरी सीज़ियम कॉम्पोनेंट जोड़ें. नीचे दिया गया कोड आस-पास के अक्षांश, देशांतर, और ऊंचाई, और दी गई Map Tiles API कुंजी का उपयोग करके:

ARGeospatialCreatorOrigin origin =
  GeospatialCreatorCesiumAdapter.CreateOriginWithCesiumGeoreference(
    37.77954, -122.417581, 0.0, "<MAP_TILES_KEY>");

डिफ़ॉल्ट रूप से, इस ऑब्जेक्ट को Unity वर्ल्ड निर्देशांक में (0, 0, 0) पर रखा जाता है, जो इस उदाहरण के लिए बेहतर काम करता है.

ARAnchorManager रेफ़रंस पाएं

ARAnchorManager रनटाइम के दौरान जियोस्पेशियल ऐंकर रिज़ॉल्व करने की ज़रूरत पड़ती है, सीन में मौजूद ARAnchorManager का रेफ़रंस भी देना चाहिए. अगर आपने ARCore एक्सटेंशन के साथ बंडल किया गया जियोस्पेशल सैंपल ऐप्लिकेशन, ऐंकर मैनेजर को "एआर सेशन की शुरुआत की जगह" से अटैच किया गया है GameObject. मान लें कि आपके पास अपने सीन में सिर्फ़ एक ऐंकर मैनेजर शामिल होता है, तो आपको इसका रेफ़रंस इस तरह से मिल सकता है शामिल करें:

ARAnchorManager anchorManager =
    Resources.FindObjectsOfTypeAll<ARAnchorManager>()[0];

अब आपके पास एक ऑरिजिन और ऐंकर मैनेजर है, तो ARGeospatialCreatorAnchor ऑब्जेक्ट.

इलाके के ऐंकर बनाएं

double वैल्यू की दो-डाइमेंशन वाली कैटगरी पर गौर करें. ये वैल्यू पूर्वी दिशा की ओर तीन बिंदुओं पर सटीक अक्षांश और देशांतर सैन फ़्रांसिस्को, कैलिफ़ोर्निया, अमेरिका में सिटी हॉल:

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

मान लें कि आपको इन जगहों में से हर एक जगह पर, एक मीटर के क्यूब को ज़मीन पर रखना है एआर ऐप्लिकेशन में आपको मिलेगा. यह कोड बनाता है 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;
}

इससे हर पॉइंट पर इलाके के ऐंकर बन जाते हैं. जियोस्पेशियल क्रिएटर अपने-आप एंकर को यूनिटी दुनिया के सही निर्देशांकों पर जगह तय करके, ARGeospatialCreatorOrigin ऑब्जेक्ट के मुताबिक जगह की जानकारी. इसे एडजस्ट करने के लिए इलाके वाले ऐंकर की ऊंचाई, Altitude प्रॉपर्टी को मीटर से ऊपर या की सतह के नीचे.

रनटाइम के दौरान, इलाके वाले ऐंकर, चल रहे ऐप्लिकेशन के लिए ज़मीन के लेवल पर काम करेंगे, Altitude प्रॉपर्टी से ऑफ़सेट करें. हालांकि, एडिटर के सीन व्यू में वे डिफ़ॉल्ट रूप से, 0 की WGS84 ऊंचाई पर रेंडर होता है, न कि 3d टाइल से संबंधित ज्यामिति शामिल करें. अक्सर यह ऐसी जगह नहीं होती जहां आपको उन्हें देखना है, इसलिए आप डिफ़ॉल्ट ऊंचाई पर सेट करके संपादक के सीन व्यू में ऐंकर true के लिए UseEditorAltitudeOverride प्रॉपर्टी और ऊंचाई तय करना EditorAltitudeOverride प्रॉपर्टी का इस्तेमाल करने वाली WGS84 मीटर:

anchor.UseEditorAltitudeOverride = true;
anchor.EditorAltitudeOverride = -13.5; // WGS84 altitude at ground level for City Hall plaza

Editor मोड के बाहर इन दोनों प्रॉपर्टी का कोई असर नहीं होता. साथ ही, जो आपके मौजूदा ऐप्लिकेशन में इकट्ठा किए गए हैं.

सिटी हॉल प्लाज़ा में जियोस्पेशल ऐंकर

छत पर ऐंकर बनाना

हमारे अगले ऐंकर के लिए, मान लीजिए कि आपको शहर की छत पर कोई ऐंकर लगाना है हॉल. ऐंकर को 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 प्रॉपर्टी. इस उदाहरण के लिए, छत करीब 10.7 मीटर है.

छत पर जियोस्पेशियल ऐंकर

किसी खास ऊंचाई पर ऐंकर बनाना

हमारा आखिरी लंगर सिटी हॉल के गुंबद के सबसे ऊपरी हिस्से पर लगाया जाएगा. इसके लिए इस एंकर के साथ, सटीक ऊंचाई महत्वपूर्ण है, इसलिए आप इसे स्पष्ट रूप से इलाके या छत पर लगने वाले ऐंकर के बजाय, 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 के अनुसार पहले से तय है. ठीक है, अगर मैप की टाइल की ऊंचाई एडिटर में ज्यामिति असली दुनिया की तुलना में गलत थी, सीन में ऐंकर की जगह बदलने के लिए, एडिटर का इस्तेमाल किया जा सकता है व्यू.

गुंबद पर जियोस्पेशियल ऐंकर