對於此演示,您目前需要Google Chrome才能進行移動。它也可能在Firefox上用於移動設備,但是當我在HTC One M9上嘗試時,我發現點擊事件並沒有觸發我。它還可以在一些桌面瀏覽器(Chrome和Opera在我的Mac上運作良好),但絕對與帶有觸摸事件的智能手機的體驗絕對不太相同。不過,它可能在平板電腦上整潔。
>您還需要一個IFTTT帳戶以及如何使用觸發HTTP請求的規則來設置製造商渠道的知識。如果您是IFTTT的新手,我們以前介紹了使用IFTTT將LIFX燈泡連接到IoT的文章中的基礎知識。對於那些新的製造商頻道的人,我們還介紹了將IoT和node.js連接到IFTTT。 最後,您需要將標記打印到一張紙上。我們要使用的標記是這個:
>代碼
awe.js
geo_ar - 允許您將對象放置在Set Compass Point。
grift_ar - 與Oculus Rift兼容。>
<span>window.addEventListener('load', function() { </span> <span>var menu_open = false; </span> <span>// Our code continues here </span> <span>});</span>
在awe.js的特定功能中定義的文件- lib/awe-standard dipendencies.js,lib/awe-sandard.js和lib/awe-standard-standard-window_resized.js eres.js每個都很常見,定義敬畏和處理窗口大小的標準零件。我們的演示使用標記,這需要下面列出的其他兩個文件。
<span>window.awe.init({ </span> <span>device_type: awe.AUTO_DETECT_DEVICE_TYPE, </span> <span>settings: { </span> <span>container_id: 'container', </span> <span>fps: 30, </span> <span>default_camera_position: { x:0, y:0, z:0 }, </span> <span>default_lights: [{ </span> <span>id: 'point_light', </span> <span>type: 'point', </span> <span>color: 0xFFFFFF </span> <span>}] </span> <span>},</span>
>成功加載了所有這些文件後,我們將運行恰當命名的Success()awe.js函數。準備開始顯示元素時,您將始終運行的第一個功能設置awe.js場景。
<span>ready: function() { </span> awe<span>.util.require([ </span> <span>{ </span> <span>capabilities: ['gum','webgl'],</span>
<span>window.addEventListener('load', function() { </span> <span>var menu_open = false; </span> <span>// Our code continues here </span> <span>});</span>
元素被稱為awe.js中的“預測”。我們添加到場景中的第一個投影我稱為“蟲洞”,因為這是一個平坦的黑色廣場,我們的菜單項將神奇地出現。就像POI的ID一樣,只要您將其與代碼中的其他參考保持一致,您就可以將其命名。我們使用函數awe.project.add()。
<span>window.awe.init({ </span> <span>device_type: awe.AUTO_DETECT_DEVICE_TYPE, </span> <span>settings: { </span> <span>container_id: 'container', </span> <span>fps: 30, </span> <span>default_camera_position: { x:0, y:0, z:0 }, </span> <span>default_lights: [{ </span> <span>id: 'point_light', </span> <span>type: 'point', </span> <span>color: 0xFFFFFF </span> <span>}] </span> <span>},</span>
>我通過X和Z坐標將它們從蟲洞的中心移動一點,但老實說,如果您的漏洞-5蟲子,那可能還不錯。我在y軸上旋轉了45度,因此它在蟲洞的頂部以一個好角度的角度。
<span>window.addEventListener('load', function() { </span> <span>var menu_open = false; </span> <span>// Our code continues here </span> <span>});</span>
>
定義了預測後,我們定義了AR拼圖的一個相當重要的部分 - 我們的標記檢測事件。我們將其添加為一個陣列傳遞到函數awe.events.add()。>
<span>window.awe.init({ </span> <span>device_type: awe.AUTO_DETECT_DEVICE_TYPE, </span> <span>settings: { </span> <span>container_id: 'container', </span> <span>fps: 30, </span> <span>default_camera_position: { x:0, y:0, z:0 }, </span> <span>default_lights: [{ </span> <span>id: 'point_light', </span> <span>type: 'point', </span> <span>color: 0xFFFFFF </span> <span>}] </span> <span>},</span>
然後,我們有register()和unregister()函數添加和刪除正在關注標記的事件偵聽器。
<span>ready: function() { </span> awe<span>.util.require([ </span> <span>{ </span> <span>capabilities: ['gum','webgl'],</span>
然後,我們定義事件處理程序,該事件處理程序將在我們發現標記後運行。我們尋找“ 64”標記,只有在找到響應時才能運行。
><span>files: [ </span> <span>['lib/awe-standard-dependencies.js', 'lib/awe-standard.js'], </span> <span>'lib/awe-standard-window_resized.js', </span> <span>'lib/awe-standard-object_clicked.js', </span> <span>'lib/awe-jsartoolkit-dependencies.js', </span> <span>'lib/awe.marker_ar.js' </span> <span>],</span>
在我們對找到標記的回應中,我們希望將我們稱為“標記”的POI使用我們的物理紙標記物,使其可見。我們使用event.detail ['64']將其轉換為與物理標記保持一致。 transform。
><span>success: function() { </span> <span>window.awe.setup_scene();</span>
我們還將“蟲洞”投影設置為可見。
>awe<span>.pois.add({id: 'marker', position: {x: 0, y: 0, z: 10000}, visible: false});</span>
如果我們看不到標記,但我們的菜單開放,我們將其設置為保持打開狀態,但請隱藏蟲洞。這樣做的主要理由是,隨著一些光的變化,標記可能難以辨認。我們不想將自己陷入特定的顏色燈光,無法轉彎!
>awe<span>.projections.add({ </span> <span>id: 'wormhole', </span> <span>geometry: {shape: 'plane', height: 400, width: 400}, </span> <span>position: {x: 0, y: 0, z: 0}, </span> <span>rotation: {x: 90, z: 45}, </span> <span>material: { </span> <span>type: 'phong', </span> <span>color: 0x000000 </span> <span>} </span> <span>}, {poi_id: 'marker'});</span>
如果沒有標記,並且我們的菜單沒有打開,那麼整個POI都隱藏了等待我們查看。
awe<span>.projections.add({ </span> <span>id: 'ar_button_one', </span> <span>geometry: {shape: 'cube', x: 60, y: 30, z: 5}, </span> <span>rotation: {y: 45}, </span> <span>position: {x: -5, y: -31, z: -5}, </span> <span>material: { </span> <span>type: 'phong', </span> <span>color: 0xFF0000 </span> <span>} </span> <span>}, {poi_id: 'marker'});</span>
>
我們要設置的實際功能的最後位置是我們的點擊事件。所有這些都在object_clicked事件中。awe<span>.events.add([ </span> <span>// Our events here </span> <span>]);</span>
我們的點擊事件包含在e.detail.proctiond_id中單擊的投影的ID。我們使用開關語句確定如何對單擊反應。單擊蟲洞打開並關閉虛擬菜單,而“虛擬菜單”按鈕上的單擊將觸發我們的淺色。我們使用開關語句,因為每個按鈕都會運行相同的響應代碼。
<span>id: 'ar_tracking_marker', </span> <span>device_types: { </span> <span>pc: 1, </span> <span>android: 1 </span> <span>},</span>
<span>window.addEventListener('load', function() { </span> <span>var menu_open = false; </span> <span>// Our code continues here </span> <span>});</span>
>我們的蟲洞單擊事件打開並根據菜單_OPEN是TRUE還是FALSE關閉菜單。如果是錯誤的,那麼我們使用awe.js awe.project.update()函數來在一秒鐘內將每個按鈕上的每個按鈕動畫。這將其從蟲洞中移出。每個投影的移動之間的唯一區別是每個對像在y軸上移動多少。
<span>window.awe.init({ </span> <span>device_type: awe.AUTO_DETECT_DEVICE_TYPE, </span> <span>settings: { </span> <span>container_id: 'container', </span> <span>fps: 30, </span> <span>default_camera_position: { x:0, y:0, z:0 }, </span> <span>default_lights: [{ </span> <span>id: 'point_light', </span> <span>type: 'point', </span> <span>color: 0xFFFFFF </span> <span>}] </span> <span>},</span>
<span>ready: function() { </span> awe<span>.util.require([ </span> <span>{ </span> <span>capabilities: ['gum','webgl'],</span>
在我們的按鈕單擊事件中,我們向IFTTT提出HTTP請求,其中包括我們的按鈕ID作為事件名稱,以及訪問IFTTT服務的鍵。我們並沒有真正使用返回的數據,而是將其記錄到控制台進行調試目的,但實際上,實際結果來自IFTTT對HTTP呼叫的反應。
<span>files: [ </span> <span>['lib/awe-standard-dependencies.js', 'lib/awe-standard.js'], </span> <span>'lib/awe-standard-window_resized.js', </span> <span>'lib/awe-standard-object_clicked.js', </span> <span>'lib/awe-jsartoolkit-dependencies.js', </span> <span>'lib/awe.marker_ar.js' </span> <span>],</span>
是https time
<span>success: function() { </span> <span>window.awe.setup_scene();</span>
截至2015年底 - 我正在回到本文中,以添加新的相當重要的信息 - Chrome現在要求使用攝像頭的網頁通過HTTPS提供。因此,在嘗試運行此操作之前,您需要找到一種通過HTTPS運行服務的方法。到目前為止,我用於測試的一種方法是Ngrok,它可以為您的Localhost提供HTTPS隧道。我們有一個指南,可以從這裡的任何地方訪問Localhost,這可以幫助您入門。
演示的演示awe<span>.pois.add({id: 'marker', position: {x: 0, y: 0, z: 10000}, visible: false});</span>
如果我們單擊蟲洞,我們的菜單按鈕應將其動畫成正確的斑點。
>這就是您使用awe.js中瀏覽器中增強現實開始的一切所需的一切。它具有很大的潛力,如今技術界的許多發展都在做! Awe.js團隊一直在插入插件,很快就會有一個更新甚至更完整的版本!也可以在Google紙板中設置三個。 JS立體效果,並將其與Awe.js的某些功能相結合以構建AR耳機體驗。我認為一篇文章可能有點多,所以請留意將來的文章!
>>如果您使用此代碼嘗試一些AR魔術或進一步進行,請在評論中留下便條或在Twitter上與我聯繫(@thatpatrickguy),我很想檢查一下!
>awe.js和ar.js都是在瀏覽器中創建增強現實體驗的強大工具。但是,它們在幾種方面有所不同。 awe.js是一個更全面的框架,為創造身臨其境的AR體驗提供了廣泛的功能。它支持多種跟踪方法,包括GPS,Compass和陀螺儀跟踪,並且還支持3D模型。另一方面,AR.JS更專注於基於標記的跟踪,並以其高性能和效率而聞名。它也更容易用於初學者,但是它可能不會提供與awe.js.
>我如何從awe.js?
開始,以敬畏開始。 JS,您首先需要從官方的GitHub存儲庫下載庫。完成此操作後,您可以通過編寫JavaScript代碼開始創建AR場景。 awe.js提供了一系列API和功能,您可以使用這些功能來控制AR體驗,包括用於創建對象,控制相機和處理用戶輸入的功能。awe.js構建應用程序的一些示例,是一種多功能工具,可用於創建各種AR應用程序。例如,您可以使用它來創建AR導遊應用程序,用戶可以在其中將手機指向不同的地標以獲取有關它們的信息。您也可以使用它來創建AR遊戲,用戶可以在現實世界中與虛擬對象進行交互。其他可能的應用程序包括AR購物應用程序,AR教育應用程序等。可能的。但是,由於它使用了WebGL和WeBRTC等高級Web技術,因此它可能無法在不支持這些技術的較舊瀏覽器上使用。為了獲得最佳效果,建議使用awe.js與Chrome,Firefox或Safari(例如Chrome,Firefox或Safari)等現代,最新的瀏覽器。
>
> 。如果您需要awe.js的幫助,則可以在項目的GitHub頁面或其他在線開發人員社區上尋求幫助。在線上還有許多可用的教程和指南可以幫助您開始敬畏。以上是awe.js在瀏覽器中增強現實的詳細內容。更多資訊請關注PHP中文網其他相關文章!