वर्चुअल या ऑगमेंटेड रिएलिटी (एआर) वाले वेब ऐप्लिकेशन पर काम करने वाले डेवलपर,
DeviceOrientationEvent
के बारे में ज़रूर जानते हैं.
शुरू न किए गए “यह एंड अप: डिवाइस ओरिएंटेशन का इस्तेमाल करना” के ज़रिए, इस बात की खास जानकारी मिलती है कि deviceorientation
इवेंट की पहचान करने वाला व्यक्ति, डिवाइस के घूमने और घुलने-मिलने पर किस तरह रिस्पॉन्स दे सकता है.
Chrome के पुराने वर्शन में, DeviceOrientationEvent
में शामिल alpha
,
beta
, और gamma
की वैल्यू, Earth के निर्देशांक फ़्रेम के हिसाब से absolute
डिग्री के तौर पर दी गई थीं. सटीक डिग्री उपलब्ध कराने के लिए, डिवाइस के मैग्नेटरमीटर सेंसर का इस्तेमाल करना पड़ता है, ताकि पृथ्वी के चुंबकीय क्षेत्र का पता लगाया जा सके. इससे, आस-पास के मैग्नेटिक फ़ील्ड में उतार-चढ़ाव हो सकते हैं, जिनकी वजह से रीडिंग खराब हो सकती है. ऐसा इसलिए हो सकता है, क्योंकि डिवाइस के पास चुंबक होने की वजह से, वेब ऐप्लिकेशन कई DeviceOrientationEvent
ऐप्लिकेशन को रजिस्टर कर सकता है. भले ही, डिवाइस असल में हिल न रहा हो. ऐसे वर्चुअल रिएलिटी ऐप्लिकेशन के लिए जो सिर्फ़ स्क्रीन की दिशा में होने वाले बदलावों को ट्रैक करने की परवाह करता है, यह चुंबकीय शोर एक बुरी खबर है.
क्या बदलाव होने वाले हैं?
Chrome 50 से, DeviceOrientationEvent
में शामिल किए गए डिग्री, Earth के निर्देशांक फ़्रेम के हिसाब से डिफ़ॉल्ट रूप से पूरे नहीं होते. इसका मतलब है कि DeviceOrientationEvent
डिवाइस के एक्सलरोमीटर और जाइरोस्कोप की मदद से ट्रिगर होने पर ही ट्रिगर होगा. मैग्नेटोमीटर और चुंबकीय क्षेत्र में उतार-चढ़ाव की वजह से दिखने वाली गलत रीडिंग, तस्वीर में नहीं दिख रही हैं.
हालाँकि, मुझे अब भी पूरी डिग्री चाहिए!
अगर आपको ऐसा JavaScript लिखा जा रहा है जिसके लिए पूरी डिग्री का इस्तेमाल करना ज़रूरी है, तो शायद आप ऑगमेंटेड रिएलिटी वाले ऐसे वेब ऐप्लिकेशन
के हिस्से के तौर पर काम कर रहे हों जिसे सीधे भौतिक दुनिया पर मैप करना हो, तो आपके लिए यह अच्छी बात नहीं है. डिवाइस के मैग्नेटोमीटर के आधार पर, पिछली कार्रवाई करने की जानकारी, नए deviceorientationabsolute
इवेंट में देखी जा सकती है.
डेवलपर के हिसाब से, यह मौजूदा DeviceOrientationEvent
जैसा है. साथ ही, यह इस बात की गारंटी के साथ है कि absolute
प्रॉपर्टी को true
पर सेट किया जाएगा.
पता लगाया जा रहा है कि क्या काम करता है
जिन डेवलपर को सटीक डिग्री का इस्तेमाल करना है वे सुविधा की पहचान करने की सुविधा का इस्तेमाल करके, यह तय कर सकते हैं कि वे नए DeviceOrientationAbsoluteEvent
इवेंट के साथ काम करने वाले ब्राउज़र का इस्तेमाल कर रहे हैं या नहीं:
if ('ondeviceorientationabsolute' in window) {
// We can listen for the new deviceorientationabsolute event.
} else if ('ondeviceorientation' in window) {
// We can still listen for deviceorientation events.
// The `absolute` property of the event tells us whether
// or not the degrees are absolute.
}
अलग-अलग ब्राउज़र के साथ काम करने की सुविधा
DeviceOrientationEvent
में रिपोर्ट की गई वैल्यू कभी एक जैसी नहीं रही.
iOS पर Safari और Firefox में डिग्री के लिए मिलती-जुलती वैल्यू का इस्तेमाल किया जाता है, जो Chrome 50 में लागू किए गए बदलाव से मेल खाता है. इस बदलाव से iOS को ध्यान में रखकर बनाए गए वेब ऐप्लिकेशन के साथ काम करने में ज़्यादा समय लगेगा.
Firefox (iOS के अलावा दूसरे प्लैटफ़ॉर्म पर), Edge, और Chrome के 50 से पहले के वर्शन को सही सेंसर वाले डिवाइस पर चलाने पर, DeviceOrientationEvent
के लिए ऐब्सलूट डिग्री वैल्यू का इस्तेमाल किया जाता है.
यह जानकारी मिलने के बाद, Chrome 50 पहला ब्राउज़र है, जो नए DeviceOrientationAbsoluteEvent
के साथ काम करता है.
DeviceMotionEvent के साथ बेहतर ओरिएंटेशन ट्रैकिंग
Borys Smus ने
काल्पनिक तरीके से विस्तार से बताया है
इसमें DeviceOrientationEvent
को इस्तेमाल करने के कुछ नुकसानों
के बारे में बताया गया है. साथ ही, DeviceMotionEvent
का इस्तेमाल करके पसंद के मुताबिक सेंसर फ़्यूज़न लागू करने का तरीका बताया गया है.
ये एक्सलरोमीटर और जाइरोस्कोप का लो-लेवल ऐक्सेस देते हैं और आपके उपयोगकर्ताओं को ज़्यादा सटीक वर्चुअल रिएलिटी अनुभव दे सकते हैं.