वेबवीआर ब्राउज़र में 3 डी वर्चुअल रियलिटी अनुभव बनाने के लिए एक जावास्क्रिप्ट एपीआई है। इसके लिए कम विलंबता, उच्च फ्रेम दर और उत्कृष्ट प्रदर्शन की आवश्यकता होती है। इसका उद्देश्य किसी को भी प्रवेश के लिए बाधाओं को कम करके वीआर अनुभवों में शामिल होना आसान बनाना है।
वेबजीएल डेवलपर्स को अमीर, कंसोल-गुणवत्ता अनुभव बनाने में सक्षम बनाता है जो मोबाइल डिवाइस और डेस्कटॉप ब्राउज़र पर वास्तविक समय में प्रस्तुत करते हैं (बस सुनिश्चित करें कि आप प्राप्त करें वेब होस्टिंग इष्टतम क्षमता के लिए अधिकार)। लगभग सार्वभौमिक ब्राउज़र और डिवाइस समर्थन वेब डेवलपर्स के लिए अविश्वसनीय वीआर अनुभव बनाने के लिए एक आदर्श दृष्टिकोण बनाता है। यहां, हम आपको दिखाते हैं कि वेबवीआर के साथ कैसे शुरू किया जाए। इस आलेख के निचले भाग में, आपको अपने ज्ञान को आगे बढ़ाने के लिए कुछ उपयोगी संसाधन मिलेंगे।
कोड के लिए स्क्रिप्ट टैग के बीच, वैश्विक स्तर पर कैमरे, दृश्य, रेंडर, ऑब्जेक्ट्स और रायकास्टर तक पहुंचने के लिए निम्न वैश्विक चर जोड़ें। एक भी जोड़ें मारो कैमरे की नज़र से छेड़छाड़ की गई वस्तुओं का ट्रैक रखने के लिए चर। यह दर्शाता है कि कैसे एक उपयोगकर्ता वीआर में देख रहा है कि क्या जानना है।
[11 9] var घड़ी = नया तीन। क्लॉक (); वार कंटेनर, कैमरा, दृश्य, रेंडरर, कमरा, क्रॉसहेयर, हिट; var ऑब्जेक्ट्स = []; // वस्तुओं का संग्रह var num = 100; // वस्तुओं की संख्या var raycaster = नया तीन.raycaster ();आप एक मूल 3 डी दृश्य जोड़ने जा रहे हैं, जो आपकी वस्तुओं के लिए कंटेनर होगा। दृश्य वह चरण है जो कैमरे के साथ प्रस्तुत करेगा। सभी 3 डी प्रस्तुतियों में कुछ रूप का एक दृश्य या चरण होगा। उस चरण में क्या है और कैमरे को देखते हुए उपयोगकर्ता क्या देखेगा। एक दृश्य जोड़ने के लिए निम्न कोड जोड़ें:
// एक दृश्य वस्तु बनाएँ
var दृश्य = नया तीन .Scene ();
इसके बाद, आपको एक कैमरा जोड़ने की जरूरत है। आप 3 डी दृश्यों के लिए परिप्रेक्ष्य कैमरा का उपयोग करेंगे। पहली विशेषता कैमरा के दृश्य का क्षेत्र है। दूसरा पहलू अनुपात है ( चौड़ाई ऊंचाई )। फिर आप निकट क्लिपिंग विमान और दूर क्लिपिंग विमान दूरी को इंगित कर सकते हैं, जो परिभाषित करते हैं कि कैमरे के लिए क्या दिखाई देना है।
// कैमरा बनाएं
कैमरा = नया तीन। PerspectiveCamera
(70, window.innerwidth / window.innerheight,
0.1, 1000);
scene.add (कैमरा);
रेंडरर आपके दृश्य में वस्तुओं की ड्राइंग को संभालता है जो कैमरे के लिए दृश्यमान होते हैं। ऑब्जेक्ट पर चिकनी किनारों को प्राप्त करने के लिए एंटीअलाइज प्रॉपर्टी को सत्य पर सेट करें। रेंडरर एक बनाता है अपमान , जो वास्तव में एक HTML है & lt; कैनवास और जीटी; तत्व। फिर आप शरीर में संलग्न कर सकते हैं। रेंडरर के नए वीआर-सक्षम ध्वज के उपयोग पर ध्यान दें।
प्रस्तुतकर्ता = नया तीन.वेग्रेंडरर (
{ANTIALIAS: TRUE});
renderer.setpixelratio (विंडो।
Deverepixelratio);
renderer.setsize (window.innerwidth, खिड़की।
इनरहाइट);
renderer.vr.enabled = true;
document.body.appendchild (रेंडरर।
डोमेलेशन);
कैमरे के फोकस के लिए उपयोगकर्ताओं को उन्मुख करने में मदद करने के लिए, कैमरे के सामने एक क्रॉसहेयर या लक्ष्यीकरण आइकन जोड़ने के लिए यह अच्छा अभ्यास है। आप इसे सीधे कैमरे की वस्तु में जोड़ सकते हैं, इसलिए यह हमेशा कहां होना चाहिए।
[11 9] क्रॉसहेयर = नया तीन। नई तीन. रिंगबफेग्रेट्री (0.02, 0.04, 32), नया तीन.शासिकमटेरियल ({ रंग: 0xFFFFFF, अस्पष्टता: 0.5, पारदर्शी: सच }) ); crosshair.position.z = - 2; कैमरा। जोड़ें (क्रॉसहेयर);इसके बाद, एक साधारण रूम ऑब्जेक्ट बनाएं। उपयोगकर्ता को वीआर दुनिया में अभिविन्यास की भावना देना अच्छा है। यह दीवारों, फर्श और छत को इंगित करने के लिए लाइनों के साथ एक साधारण कमरे का बक्सा बनाता है।
[11 9] कमरा = नया तीन.लिगेन्स ( नई तीन.बॉक्सलाइनगेमेट्री (6, 6, 6, 10, 10, 10), नया तीन. लाइनबासिकमटेरियल ({रंग: 0x808080})); road.position.y = 2; scene.add (कमरा);दृश्य को प्रकाश देने के लिए, हम एक साधारण गोलार्द्ध प्रकाश और एक दिशात्मक प्रकाश का उपयोग करेंगे। यह एक अच्छी परिवेश दृश्यता और एक समान प्रकाश स्रोत से कुछ यथार्थवादी छायांकन भी देगा।
scene.add (नया तीन.मिस्फेरलाइट
(0x806060, 0x404040));
var light = नया तीन.देवता
(0xffffffffffff);
light.position.set (1, 1, 1) .normalize ();
scene.add (प्रकाश);
आप कमरे को अगले ऑब्जेक्ट्स के साथ भरने जा रहे हैं। उन्हें कमरे के चारों ओर यादृच्छिक रूप से लागू करें। आप विविधता के लिए रोटेशन और स्केल को यादृच्छिक रूप से सेट करेंगे। आप अगले चरण में थोड़ा और कोड जोड़ सकते हैं, जहां यह कहता है ऑर्बिट विशेषताएँ बनाएं कुछ कस्टम ऑर्बिट पथ सक्षम करने के लिए।
[11 9] var geometry = नई तीन.बॉक्सबफ़रजमीटरी (0.15, 0.15, 0.15); के लिए (i = 0; i & lt; = num; i ++) { var सामग्री = नया तीन. meshlambertmaterial ({रंग: math.random () * 0xffffffff}); var ऑब्जेक्ट = नया तीन. (ज्यामिति, सामग्री); object.position.set (math.random () * 4.0 - 2.0, math.random () * 4.0 - 2.0, गणित। यादृच्छिक () * 4.0 - 2.0); object.scale.set (math.random () + 5, गणित। यादृच्छिक () +। 5, math.random () +। 5); Object.Rotation.set (math.random () * 2 * Mat.pi, math.random () * 2 * math.pi, गणित। यादृच्छिक () * 2 * math.pi); // ऑर्बिट विशेषताएं}कुछ अच्छी यादृच्छिक रूपरेखा गति को सक्षम करने के लिए, और वस्तुओं को 'कमरे से बचने' से रखने के लिए हम कुछ प्रारंभिक कोण डेटा (रेडियंस में) और दूरी तय करेंगे। यह रेंडर लूप में ऑब्जेक्ट्स को एनिमेट करने के लिए एक आसान तरीका सक्षम बनाता है।
// orbit विशेषताएँ बनाएं
// calc दूरी स्थिर और असाइन के रूप में
वस्तु
var a = नया तीन.vector3 (0, 0, 0);
var b = object.position;
var d = a.distanceto (b);
object.distance = d;
object.radians = math.random () * 360 * गणित।
पीआई / 180; // प्रारंभिक कोण
object.radians2 = math.random () * 360 * गणित।
पीआई / 180; // प्रारंभिक कोण
object.radians3 = math.random () * 360 * गणित।
पीआई / 180; // प्रारंभिक कोण
कक्ष। (ऑब्जेक्ट);
objects.push (ऑब्जेक्ट);
जैसे ही हम अपने वेबवीआर ऐप का परीक्षण करते हैं, हम स्क्रीन का आकार बदल देंगे, इसे चारों ओर ले जा रहे हैं, और इसी तरह। एक हैंडलर होना एक अच्छा विचार है जो रेंडर क्षेत्र के आयामों को समायोजित करता है और चीजों को ठीक से स्क्रीन भरने और अच्छी लगती है।
[11 9] window.addeventlistener ('आकार बदलें', onwindowresize, गलत); फ़ंक्शन ऑनविंडोइज़ाइज () { camera.aspect = window.innerwidth / विंडो। इनरहाइट; कैमरा। अपडेट प्रोपेक्शनमेट्रिक्स (); renderer.setsize (window.innerwidth, window.innerheight); }
तीन.जेएस 'नई वेबवीआर कक्षा में एक वेबवीआर बटन शामिल है, जो हमारे लिए वीआर मोड में और बाहर टॉगलिंग करता है। यह भी संभालता है अगर डिवाइस वीआर मोड का समर्थन नहीं करता है। आप इसे इस सरल कोड के साथ शामिल कर सकते हैं:
// three.js webvr बटन दर्ज करने के लिए /
वीआर मोड से बाहर निकलें
document.body.appendchild (webvr.createbutton)
(रेंडरर));
आमतौर पर, आप का उपयोग करना होगा Requestanimationframe रेंडर लूप को संभालने के लिए, लेकिन वीआर में आपको यह सुनिश्चित करने के लिए एक अलग लूप हैंडलर का उपयोग करना होगा कि सबकुछ प्रस्तुत करने के लिए तैयार है और आप विलंबता से बचें और मुद्दों को प्रस्तुत करें। इसके बजाय, नए का उपयोग करें SetanimationLoop और अपने रेंडर फ़ंक्शन में पास करें।
// वीआर एनीमेशन लूप शुरू करें
renderer.setanimationLoop (प्रस्तुत करना);
इसके बाद, एक रेंडर फ़ंक्शन बनाएं। यदि आप अपने ऑब्जेक्ट्स को एनिमेट नहीं करना चाहते हैं या ऑब्जेक्ट्स के साथ छेड़छाड़ किए गए कैमरे / क्रॉसहेयर के लिए परीक्षण नहीं करते हैं, तो आप केवल निम्न कोड का उपयोग कर सकते हैं:
[11 9] फ़ंक्शन रेंडर () { // चौराहों को खोजें // वस्तुओं को एनिमेट करें // दृश्य प्रस्तुत करें renderer.render (दृश्य, कैमरा); }ज़ेड स्पेस में कैमरे से पता लगाने वाली किरण को छेड़छाड़ करने वाली वस्तुओं के लिए परीक्षण सक्षम करने के लिए, निम्न कोड को अपने रेंडर लूप में जोड़ें जहां आपने इसे अंतिम चरण में टिप्पणी की:
[11 9] raycaster.setfromcamera ({x: 0, y: 0}, कैमरा ); var intersects = raycaster.intersectobjects (कमरा। चिल्ड्रेन); यदि (intersects.length & gt; 0) { अगर (हिट! = इंटरसेक्ट्सइसके बाद, आप इस कोड का उपयोग करके अपनी ऑब्जेक्ट्स को अपने ऑब्जेक्ट पथों को एनिमेट कर सकते हैं:
के लिए (i = 0; i & lt; = num; i ++) {
var o = ऑब्जेक्ट्स [i];
O.Rotation.y + =। 01;
अगर (I% 2 == 0) {
o.radians + =। 004;
o.radians2 + =। 005;
o.radians3 + =। 008;
} अन्य {
o.radians - =। 006;
o.radians2 - =। 005;
o.radians3 - =। 003;
}
o.position.x = (math.cos (o.radians) *
o.distance);
o.position.z = (math.sin (o.radians3) *
o.distance);
o.position.y = (math.sin (o.radians2) *
o.distance * .5);
}
अंत में, आप असलय कार्यों का उपयोग करके अपने दृश्य को प्रस्तुत कर सकते हैं। यदि आपने पहले से ही इस लाइन को नहीं जोड़ा है, तो इसे अभी करें। एक बार इसे जोड़ने के बाद, आप इसे सभी का परीक्षण कर सकते हैं और अपने ब्राउज़र में एक वेबवीआर दृश्य प्रतिपादन देखना चाहिए। आप इसे अपने मोबाइल डिवाइस या वीआर हेडसेट पर भी देख सकते हैं।
// दृश्य प्रस्तुत करें
renderer.render (दृश्य, कैमरा);
वेबवीआर में शुरू करना भारी हो सकता है। हमने आपको रोलिंग करने में मदद के लिए वेबवीआर और संसाधनों का उपयोग करके साइटों के कुछ उदाहरणों को इकट्ठा किया है।
[2 9 9] स्केचफैब
एक ढाँचा
यह एआर और वीआर के लिए एक चट्टान-ठोस ढांचा है। यह आपके लिए फ़ॉलबैक और डिवाइस समर्थन के दर्द को संभालता है, जिसमें आपको परीक्षण के लिए अपने ब्राउज़र में प्रस्तुत करने में सक्षम बनाता है। यह भी सामान्य 3 डी वस्तुओं के निर्माण को दूर करता है।
तीन.जेएस
इस पुस्तकालय में कई हैं
उदाहरण
वेबवीआर के साथ जाने में आपकी सहायता के लिए स्रोत कोड के साथ। यह एक आदर्श प्रारंभिक बिंदु है।
वेबवीआर
चूंकि वेबवीआर एक उभरती हुई तकनीक है, इसलिए नवीनतम विकास को बनाए रखना एक अच्छा विचार है। आपको यह जानने की जरूरत है कि कौन से डिवाइस समर्थित हैं और किन स्थितियों के तहत। यह साइट आपको अद्यतित रहने में मदद करेगी। वहाँ है
[32 9]
उदाहरण के लिए समर्पित पृष्ठ
और यह हमेशा सही होने में मदद करता है घन संग्रहण , भी।
यह लेख मूल रूप से क्रिएटिव वेब डिज़ाइन पत्रिका के अंक 283 में प्रकाशित किया गया था वेब डिजाइनर । अंक 283 खरीदें या सदस्यता लेने के ।
अधिक पढ़ें:
(छवि क्रेडिट: जेसन पार्नेल-ब्रूक्स) [1 9] पर क�..
(छवि क्रेडिट: Pexels.com) [1 9] पहली नज़र में, समांतर प्..
निम्नलिखित लघु स्क्रीन-कैप्चर वीडियो पर, चार्..
इस कार्यशाला के लिए, मैं आपको केवल अपनी कल्पना से �..
4 का पृष्ठ 1: पन्नी अवरुद्ध [2 9] �..
की एक श्रृंखला है कला तकनीक यह आपके डिजिटल प..
केवल पिछली गर्मियों में स्नातक होने के बाद, मैं अ�..
ज़ब्रश में एक प्राणी का निर्माण करने के लिए मैं इ�..