एआर फ़ाउंडेशन के लिए झटपट प्लेसमेंट डेवलपर गाइड

अपने ऐप्लिकेशन में इंस्टैंट प्लेसमेंट एपीआई या नियमित तौर पर रेकास्ट को इस्तेमाल करने का तरीका जानें.

ज़रूरी शर्तें

आगे बढ़ने से पहले, पक्का करें कि आपने बुनियादी एआर (ऑगमेंटेड रिएलिटी) सिद्धांत और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया है.

कॉन्सेप्ट के नाम

कुछ सिद्धांतों और तरीकों के नाम, AR Foundation और Unity के लिए ARCore SDK टूल के बीच अलग-अलग हो सकते हैं. इन्हें आसानी से समझने के लिए, इन्हें नीचे टेबल में दिखाया गया है.

एआर (ऑगमेंटेड रिएलिटी) फ़ाउंडेशन Unity के लिए ARCore SDK टूल
लगातार मिलने वाले रेकास्ट इंस्टैंट प्लेसमेंट
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(कोई समतुल्यता नहीं) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

ज़रूरी शर्तें

इस गाइड में यह माना गया है कि आपने Unity को पहले ही इंस्टॉल और कॉन्फ़िगर कर लिया है. अगर ऐसा नहीं है, तो एआर फ़ाउंडेशन के लिए ARCore एक्सटेंशन के इस्तेमाल का तरीका देखें.

ARRaycastManager के साथ नया सेशन कॉन्फ़िगर करें

इंस्टैंट प्लेसमेंट (परसिस्टेंट रेकास्ट) की सुविधा, एआर फ़ाउंडेशन पैकेज के साथ बाहर मिलेगी. अपना सीन सेट अप करने के लिए यह तरीका अपनाएं.

एआर फ़ाउंडेशन 4.x

  1. पहले से तय गेम ऑब्जेक्ट AR Session Origin और AR Session जोड़ें.

  2. AR Session Origin गेम ऑब्जेक्ट में, AR Raycast Manager कॉम्पोनेंट जोड़ें.

अगर Raycast Prefab शून्य नहीं है, तो ARRaycastManager प्रीफ़ैब को इंस्टैंशिएट करेगा. साथ ही, उसके पोज़ को ARRaycast के पोज़ के साथ अपने-आप सिंक कर देगा.

एआर फ़ाउंडेशन 5.x

  1. पहले से तय गेम ऑब्जेक्ट XR Origin और AR Session जोड़ें.

  2. XR Origin गेम ऑब्जेक्ट में, AR Raycast Manager कॉम्पोनेंट जोड़ें.

अगर Raycast Prefab शून्य नहीं है, तो ARRaycastManager प्रीफ़ैब को इंस्टैंशिएट करेगा. साथ ही, उसके पोज़ को ARRaycast के पोज़ के साथ अपने-आप सिंक कर देगा.

कोई ऑब्जेक्ट रखें

नए ARCore सेशन में, ARRaycastManager.AddRaycast(Vector2, float) का इस्तेमाल करके हिट की जांच करें.

public ARRaycastManager RaycastManager; // set from the Editor Inspector.

void Update()
{
    Touch touch;
    if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
    {
        return;
    }

    if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
    {
        return;
    }

    ARRaycast raycast = RaycastManager.AddRaycast(touch.position, _estimateDistance);
    if (raycast != null)
    {
        // You can instantiate a 3D object here if you haven’t set Raycast Prefab in the scene.
        …
    }
}

ARRaycast को ट्रैक करने की स्थिति को मॉनिटर करें

अगर ARCore का 3D पोज़ सटीक है, तो ARRaycast.trackingState Tracking होगा. अगर ऐसा नहीं किया जाता है, तो यह Limited से शुरू होगा और ARCore के सटीक 3D पोज़ के बाद, यह Tracking पर ट्रांसफ़र हो जाएगा. ट्रैकिंग की स्थिति Tracking हो जाने के बाद, यह वापस Limited पर नहीं सेट होगी.