अपने ऐप्लिकेशन में, लोगों के चेहरों पर ऐसेट रेंडर करने के लिए, ऑगमेंटेड फ़ेस का इस्तेमाल करने का तरीका जानें.
ज़रूरी शर्तें
आगे बढ़ने से पहले, पक्का करें कि आपने एआर के बुनियादी कॉन्सेप्ट और ARCore सेशन को कॉन्फ़िगर करने का तरीका समझ लिया हो.
चेहरे पहचानें
चेहरों को ARFace
ऑब्जेक्ट से दिखाया जाता है. इन्हें ARFaceManager
से बनाया, अपडेट, और हटाया जाता है. हर फ़्रेम के लिए, ARFaceManager
एक facesChanged
इवेंट को ट्रिगर करता है. इसमें तीन सूचियां होती हैं: जो चेहरे जोड़े गए हैं, जो चेहरे अपडेट किए गए हैं, और जो चेहरे पिछले फ़्रेम के बाद हटाए गए हैं. जब ARFaceManager
किसी सीन में चेहरे का पता लगाता है, तो वह चेहरे को ट्रैक करने के लिए, ARFace
कॉम्पोनेंट के साथ प्रीफ़ैब को इंस्टैंशिएट करेगा. प्रीफ़ैब को null
पर सेट किया जा सकता है.
ARFaceManager
को सेट अप करने के लिए, एक नया गेम ऑब्जेक्ट बनाएं और उसमें ARFaceManager
जोड़ें.
Face Prefab, चेहरे के बीच में मौजूद पोज़ में इंस्टैंशिएट किया गया प्रीफ़ैब है. Maximum Face Count से पता चलता है कि ज़्यादा से ज़्यादा कितने चेहरों को ट्रैक किया जा सकता है.
पहचाने गए चेहरों को ऐक्सेस करना
ARFace
कॉम्पोनेंट की मदद से, पहचाने गए चेहरों को ऐक्सेस करें. यह कॉम्पोनेंट, फ़ेस प्रीफ़ैब से जुड़ा होता है. ARFace
, वर्टिसेस, इंडेक्स, वर्टिसेस नॉर्मल, और टेक्स्चर कोऑर्डिनेट उपलब्ध कराता है.
पहचाने गए चेहरे के हिस्से
Augmented Faces API, बीच में पोज़, तीन क्षेत्रों में पोज़, और 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 विंडो में छोड़ें.
ARFaceManager
के Face Prefab फ़ील्ड में, नए बनाए गए प्रीफ़ैब को चेहरे के प्रीफ़ैब के तौर पर सेट करें.Hierarchy टैब में, चेहरे के ऑब्जेक्ट को मिटाएं, क्योंकि अब इसकी ज़रूरत नहीं है.
फ़ेस मेश के अलग-अलग वर्टिसेस ऐक्सेस करना
चेहरे के मेश के वर्टिसेस की पोज़िशन ऐक्सेस करने के लिए, face.vertices
का इस्तेमाल करें. उससे जुड़े वर्टिक्स नॉर्मल ऐक्सेस करने के लिए, face.normals
का इस्तेमाल करें.
चेहरे के मेश के अलग-अलग वर्टिसेस को विज़ुअलाइज़ करना
Blender का इस्तेमाल करके, फ़ेस मेश के वर्टिसेस से जुड़े इंडेक्स नंबर आसानी से देखे जा सकते हैं:
- Blender खोलें और GitHub से
canonical_face_mesh.fbx
इंपोर्ट करें. - Edit > Preferences > Interface पर नेविगेट करें.
Display मेन्यू में जाकर, Developer Extras चुनें.
3D व्यूपोर्ट में जाकर, चेहरे पर क्लिक करके उसे चुनें. इसके बाद, बदलाव मोड में जाने के लिए Tab दबाएं.
Overlays व्यूपोर्ट के बगल में मौजूद ड्रॉप-डाउन मेन्यू खोलें और Indices चुनें.
उस वर्टेक्स को हाइलाइट करें जिसका इंडेक्स नंबर आपको पता करना है. सभी वर्टिसेस को हाइलाइट करने के लिए, Select > All का इस्तेमाल करें.