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

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

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

आगे बढ़ने से पहले, पक्का करें कि आपने एआर के बुनियादी कॉन्सेप्ट और 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 को पहले ही इंस्टॉल और कॉन्फ़िगर कर लिया है. अगर ऐसा नहीं है, तो इंस्टॉल करने और सेटअप करने के तरीके के बारे में जानने के लिए, AR Foundation के लिए ARCore एक्सटेंशन का इस्तेमाल शुरू करना लेख पढ़ें.

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

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

AR Foundation 4.x

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

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

जब Raycast Prefab शून्य नहीं होता है, तो 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 नहीं होगी.