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

अपने ऐप्लिकेशन में, Instant Placement API या परसिस्टेंट रेकास्ट का इस्तेमाल करने का तरीका जानें.

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

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

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

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

AR Foundation Unity के लिए ARCore SDK टूल
पर्सिस्टेंट रेकास्ट इंस्टैंट प्लेसमेंट
ARRaycastManager.AddRaycast(Vector2, float) Frame.RaycastInstantPlacement(float, float, float, out TrackableHit)
ARRaycast TrackableHit
(कोई समानता नहीं) InstantPlacementPoint
ARRaycast.trackingState InstantPlacementPointTrackingMethod

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

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

ARRaycastManager की मदद से नया सेशन कॉन्फ़िगर करना

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

AR Foundation 4.x

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

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

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

AR Foundation 5.x

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

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

जब रेकास्ट प्रीफ़ैब शून्य नहीं होता है, तो 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 नहीं होगी.