अपने ऐप्लिकेशन में लोगों के चेहरे के ऊपर एसेट रेंडर करने के लिए, ऑगमेंटेड फ़ेस का इस्तेमाल करने का तरीका जानें.
ज़रूरी शर्तें
आगे बढ़ने से पहले, पक्का करें कि आपने बुनियादी एआर (ऑगमेंटेड रिएलिटी) सिद्धांत और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया है.
चेहरे पहचानें
चेहरे ARFace
ऑब्जेक्ट के ज़रिए दिखाए जाते हैं, जिन्हें ARFaceManager
की मदद से बनाया जाता है, अपडेट किया जाता है, और हटाया जाता है. हर फ़्रेम के लिए एक बार, ARFaceManager
facesChanged
इवेंट को शुरू करता है. इस इवेंट में तीन सूचियां होती हैं: जोड़े गए चेहरे, अपडेट किए गए चेहरे, और आखिरी फ़्रेम से हटाए गए चेहरे. जब ARFaceManager
, सीन में किसी चेहरे की पहचान करेगा, तो यह चेहरे को ट्रैक करने के लिए अटैच किए गए ARFace
कॉम्पोनेंट के साथ, Prefab को इंस्टैंशिएट करेगा. Prefab को null
छोड़ा जा सकता है.
ARFaceManager
सेट अप करने के लिए, नया गेम ऑब्जेक्ट बनाएं और उसमें ARFaceManager
जोड़ें.
चेहरे के बीच वाले पोज़ में, Face Prefab प्रीफ़ैब इंस्टैंशिएट होता है. Maximum Face Count से पता चलता है कि ज़्यादा से ज़्यादा कितने चेहरे ट्रैक किए जा सकते हैं.
पता लगाए गए चेहरों को ऐक्सेस करें
ARFace
कॉम्पोनेंट की मदद से, पहचाने गए चेहरों को ऐक्सेस करें. यह कॉम्पोनेंट, फ़ेस प्रीफ़ैब से जुड़ा होता है. ARFace
वर्टेक्स, इंडेक्स, वर्टेक्स नॉर्मल, और टेक्सचर कोऑर्डिनेट की जानकारी देता है.
पहचाने गए चेहरे के हिस्से
ऑगमेंटेड फ़ेस एपीआई से एक सेंटर पोज़, तीन जगह के पोज़, और 3D फ़ेस मेश की सुविधा मिलती है.
बीच का पोज़
उपयोगकर्ता के सिर के बीच में दिखने वाला पोज़, प्रीफ़ैब के उस ऑरिजिन पॉइंट का शुरुआती पॉइंट होता है जिसे ARFaceManager
ने इंस्टैंशिएट किया है. यह खोपड़ी के अंदर, नाक के पीछे होता है.
सेंटर पोज़ के अक्ष इस तरह हैं:
- पॉज़िटिव X-ऐक्सिस (X+), बाएं कान की ओर पॉइंट करता है
- पॉज़िटिव Y-ऐक्सिस (Y+), चेहरे से ऊपर की ओर पॉइंट करता है
- पॉज़िटिव Z-ऐक्सिस (Z+), सिर के केंद्र की ओर इशारा करता है
क्षेत्र के आस-पास
ये मुद्राएं, उपयोगकर्ता के चेहरे के अहम हिस्सों को मार्क करती हैं. ये पोज़िशन, बाएं माथे, दाएं माथे, और नाक के ऊपरी हिस्से पर होती हैं. ये पोज़, अपने ऐक्सिस के ओरिएंटेशन के मुताबिक होते हैं.
इलाके के पोज़ का इस्तेमाल करने के लिए, ARFaceManager
के सबसिस्टम को ARCoreFaceSubsystem
पर सेट करें और हर इलाके के पोज़ की जानकारी पाने के लिए subsystem.GetRegionPoses()
का इस्तेमाल करें. इसे करने का उदाहरण देखने के लिए, GitHub पर Unity के इस्तेमाल का सैंपल देखें.
3D फ़ेस मेश
फ़ेस मेश में 468 पॉइंट होते हैं, जिनसे इंसान का चेहरा बनता है. यह स्थिति सेंटर पोज़ के हिसाब से भी तय की जाती है.
फ़ेस मेश को विज़ुअलाइज़ करने के लिए, Face Prefab में ARFaceMeshVisualizer
लगाएं. ARFaceMeshVisualizer
, पहचाने गए चेहरे के हिसाब से एक Mesh
जनरेट करेगा. इसे, अटैच किए गए MeshFilter
और MeshCollider
में मेश के तौर पर सेट किया जाएगा. चेहरे को रेंडर करने के लिए इस्तेमाल होने वाले Material
को सेट करने के लिए, MeshRenderer
का इस्तेमाल करें.
AR Default Face Prefab, पहचाने गए फ़ेस मेश पर डिफ़ॉल्ट मटीरियल को रेंडर करता है.
एआर डिफ़ॉल्ट फ़ेस का इस्तेमाल शुरू करने के लिए, यह तरीका अपनाएं:
ARFaceManager
को सेट अप करें.नया फ़ेस ऑब्जेक्ट बनाने के लिए, Hierarchy टैब में + > XR > AR Default Face का इस्तेमाल करें. यह ऑब्जेक्ट कुछ समय के लिए है. इसे फ़ेस प्रीफ़ैब बनाने के बाद मिटाया जा सकता है.
इंस्पेक्टर में जाकर AR Default Face को ऐक्सेस करें.
प्रीफ़ैब बनाने के लिए, नए बनाए गए एआर डिफ़ॉल्ट फ़ेस को Hierarchy टैब से Project Assets विंडो में खींचें और छोड़ें.
नए बनाए गए Prefab को
ARFaceManager
के Face Prefab फ़ील्ड में फ़ेस प्रीफ़ैब के तौर पर सेट करें.Hierarchy टैब में, फ़ेस ऑब्जेक्ट को मिटाएं, क्योंकि अब इसकी ज़रूरत नहीं है.
फ़ेस मेश के अलग-अलग वर्टेक्स को ऐक्सेस करें
फ़ेस मेश के सिरों की पोज़िशन को ऐक्सेस करने के लिए, face.vertices
का इस्तेमाल करें. संबंधित वर्टेक्स नॉर्मल को ऐक्सेस करने के लिए, face.normals
का इस्तेमाल करें.
फ़ेस मेश के अलग-अलग शीर्षों को विज़ुअलाइज़ करें
फ़ेस मेश के वर्टेक्स से जुड़े इंडेक्स नंबर को आसानी से देखने के लिए, ब्लेंडर का इस्तेमाल किया जा सकता है:
- ब्लेंडर खोलें और GitHub से
canonical_face_mesh.fbx
को इंपोर्ट करें. - Edit > Preferences > Interface पर नेविगेट करें.
Display मेन्यू में जाकर, Developer Extras चुनें.
3D व्यूपोर्ट में क्लिक करके चेहरे को चुनें और बदलाव मोड में जाने के लिए Tab दबाएं.
Overlays व्यूपोर्ट के बगल में मौजूद ड्रॉप-डाउन मेन्यू खोलें और Indices चुनें.
उस शीर्ष को हाइलाइट करें जिसका इंडेक्स नंबर आप तय करना चाहते हैं. सभी वर्टेक्स को हाइलाइट करने के लिए, Select > All का इस्तेमाल करें.