1/*! For license information please see 2104c368.chunk.js.LICENSE.txt */ 2"use strict";(self.webpackChunkcubic_9_com=self.webpackChunkcubic_9_com||[]).push([[320],{16326:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/droidglove_main-5b34c6e5a5d47ed23293a2db23a536ff.png"},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>a});var o=t(96540);const i={},r=o.createContext(i);function l(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),o.createElement(r.Provider,{value:n},e.children)}},33294:(e,n,t)=>{t.d(n,{A:()=>o});const o=t.p+"assets/images/droidglove_preference-e4095a5f6ed12fd00d4045c21095591e.png"},77344:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"Devel/OculusRift/DroidGlove_en","title":"DroidGlove_en","description":"\u65e5\u672c\u8a9e\u30da\u30fc\u30b8\u306f\u3053\u3061\u3089\u3002","source":"@site/docs/Devel/OculusRift/DroidGlove_en.md","sourceDirName":"Devel/OculusRift","slug":"/Devel/OculusRift/DroidGlove_en","permalink":"/Devel/OculusRift/DroidGlove_en","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DroidGlove","permalink":"/Devel/OculusRift/DroidGlove"},"next":{"title":"HachuKara","permalink":"/Devel/OculusRift/HachuKara"}}');var i=t(74848),r=t(28453),l=t(77833);const a={},s=void 0,c={},d=[{value:"Binary",id:"binary",level:2},{value:"How to use app",id:"how-to-use-app",level:2},{value:"Initialization",id:"initialization",level:3},{value:"How To Play",id:"how-to-play",level:3},{value:"Sample Project for Unity",id:"sample-project-for-unity",level:2},{value:"Warning",id:"warning",level:2},{value:"Contact",id:"contact",level:2},{value:"Source code",id:"source-code",level:2},{value:"Folder structure",id:"folder-structure",level:3},{value:"How to use sources",id:"how-to-use-sources",level:3},{value:"License",id:"license",level:3},{value:"The specification of the OSC protocol and packet of DroidGlove",id:"the-specification-of-the-osc-protocol-and-packet-of-droidglove",level:2},{value:"Thanks",id:"thanks",level:2}];function h(e){const n={a:"a",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["\u65e5\u672c\u8a9e\u30da\u30fc\u30b8\u306f",(0,i.jsx)(n.a,{href:"./DroidGlove",children:"\u3053\u3061\u3089"}),"\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"DroidGlove is an Android app for manipulation of hand or gun in a virtual reality world which is provided by game engines such as Unity3D."}),"\n",(0,i.jsx)(n.p,{children:"That is like the legendary NES controller."}),"\n",(0,i.jsxs)(n.p,{children:["I made ",(0,i.jsx)(n.a,{href:"/Devel/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C/Arduino/PaxPowerGlove_en",children:"hacked Power Glove"})," into this app."]}),"\n","\n",(0,i.jsx)("div",{className:"video-container",children:(0,i.jsx)(l.A,{id:"RQmPODtp9Fw",webp:!0})}),"\n",(0,i.jsx)(n.h2,{id:"binary",children:"Binary"}),"\n",(0,i.jsxs)(n.p,{children:["Get DroidGlove at ",(0,i.jsx)(n.a,{href:"https://play.google.com/store/apps/details?id=com.cubic9.android.droidglove",children:"Google Play"})," ."]}),"\n",(0,i.jsx)(n.h2,{id:"how-to-use-app",children:"How to use app"}),"\n",(0,i.jsxs)("div",{class:"markdown",children:[(0,i.jsx)("img",{src:t(33294).A,style:{width:"15%"}}),(0,i.jsx)("img",{src:t(16326).A,style:{width:"15%"}})]}),"\n",(0,i.jsx)(n.h3,{id:"initialization",children:"Initialization"}),"\n",(0,i.jsx)(n.p,{children:"First, to install DroidGlove, follow the steps below."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Install DroidGlove to your smartphone."}),"\n",(0,i.jsx)(n.li,{children:"Turn on Wi-Fi on your phone."}),"\n",(0,i.jsx)(n.li,{children:"Launch DroidGlove."}),"\n",(0,i.jsx)(n.li,{children:"Input the IP address of your PC to DroidGlove."}),"\n",(0,i.jsx)(n.li,{children:"To calibrate direction, aim for the top of your phone at the screen of your PC, and push the reset button."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Next, you are required to configure Windows so that PC software can pass through the firewall. Follow these steps. (These steps are for Windows7)"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Open [Control Panel] > [Windows Firewall]."}),"\n",(0,i.jsx)(n.li,{children:"Click [Allow a program or feature through Windows Firewall]."}),"\n",(0,i.jsx)(n.li,{children:"Click [Change settings] button."}),"\n",(0,i.jsx)(n.li,{children:"Click [Allow another program] button."}),"\n",(0,i.jsx)(n.li,{children:"Click [Browse] button."}),"\n",(0,i.jsxs)(n.li,{children:["Click PC software which supports DroidGlove such as ",(0,i.jsx)(n.a,{href:"./BobbingBots_en",children:"BobbingBots"})," or ",(0,i.jsx)(n.a,{href:"./Mikujalus_en",children:"Mikujalus"}),", and click [Open] button."]}),"\n",(0,i.jsx)(n.li,{children:"Click [Add] button."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"how-to-play",children:"How To Play"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Launch DroidGlove on your smartphone."}),"\n",(0,i.jsxs)(n.li,{children:["Launch PC software which support DroidGlove such as ",(0,i.jsx)(n.a,{href:"./BobbingBots_en",children:"BobbingBots"})," or ",(0,i.jsx)(n.a,{href:"./Mikujalus_en",children:"Mikujalus"}),"."]}
2),"\n",(0,i.jsx)(n.li,{children:"Then, turn your phone. If you want to grip, swipe down on DroidGlove."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"sample-project-for-unity",children:"Sample Project for Unity"}),"\n",(0,i.jsxs)(n.p,{children:["This project includes DroidGlove receiver script and ",(0,i.jsx)(n.a,{href:"./Bobbing-Walking",children:"Bobbing-Walking"})," script."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///assets/OculusRift/droidglove_unity_sample_20160601.zip",children:"Sample project for PC and Oculus Rift"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///assets/OculusRift/droidglove_cardboard_unity_sample_20151129.zip",children:"Sample project for Android and Google Cardboard (or Alternatives)"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"warning",children:"Warning"}),"\n",(0,i.jsx)(n.p,{children:"When you use Bobbing-Walking, follow these instruction to prevent falling to the floor."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Looking around at first.You must be at least 7 feet away from other objects."}),"\n",(0,i.jsx)(n.li,{children:"Make a circle on the floor around you with a roll of tape. And do not step outside of that."}),"\n",(0,i.jsx)(n.li,{children:"Do not move fast."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"contact",children:"Contact"}),"\n",(0,i.jsxs)(n.p,{children:["If you have any question, contact me on ",(0,i.jsx)(n.a,{href:"https://twitter.com/cubic9com",children:"Twitter"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"source-code",children:"Source code"}),"\n",(0,i.jsx)(n.p,{children:"You can get sources at GitHub."}),"\n",(0,i.jsx)(n.p,{children:"But the latest version is not public yet."}),"\n",(0,i.jsx)(n.p,{children:"And you have to pay attention that the data format was changed at DroidGlove Ver.1.0.0. (from eular angles to quaternion)"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://github.com/cubic9com/DroidGlove/",children:"https://github.com/cubic9com/DroidGlove/"})}),"\n",(0,i.jsx)(n.h3,{id:"folder-structure",children:"Folder structure"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"folder"}),(0,i.jsx)(n.th,{children:"detail"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"src/"}),(0,i.jsx)(n.td,{children:"Java sources"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"res/"}),(0,i.jsx)(n.td,{children:"resources such as images"})]})]})]}),"\n",(0,i.jsx)(n.h3,{id:"how-to-use-sources",children:"How to use sources"}),"\n",(0,i.jsxs)(n.p,{children:["DroidGlove requires ",(0,i.jsx)(n.a,{href:"http://www.illposed.com/software/javaosc.html",children:"JavaOSC"}),", a library for Open Sound Control, which was developed by C. Ramakrishnan, ",(0,i.jsx)(n.a,{href:"http://www.illposed.com/",children:"Illposed Software"}),"."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Get JavaOSC at following URL.\r\n",(0,i.jsx)(n.a,{href:"https://github.com/hoijui/JavaOSC/tree/e2a1667cb198675958012d91a374f9e9705195be",children:"https://github.com/hoijui/JavaOSC/tree/e2a1667cb198675958012d91a374f9e9705195be"})]}),"\n",(0,i.jsx)(n.li,{children:'Copy "modules/core/src/main/java/com" in JavaOSC to "src/" in DroidGlove.'}),"\n",(0,i.jsxs)(n.li,{children:["Import that to a development environment such as the ",(0,i.jsx)(n.a,{href:"http://developer.android.com/sdk/index.html",children:"Eclipse IDE with built-in ADT"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Export app (.apk) ."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"license",children:"License"}),"\n",(0,i.jsx)(n.p,{children:"Copyright (C) 2014, cubic9com All rights reserved."}),"\n",(0,i.jsx)(n.p,{children:"This code is licensed under the BSD 3-Clause license."}),"\n",(0,i.jsx)(n.p,{children:"See file LICENSE at DroidGlove repository for more information."}),"\n",(0,i.jsx)(n.h2,{id:"the-specification-of-the-osc-protocol-and-packet-of-droidglove",children:"The specification of the OSC protocol and packet of DroidGlove"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"The port number of a phone is 57100."}),"\n",(0,i.jsx)(n.li,{children:"The port number of a PC is also 57100."}),"\n",(0,i.jsxs)(n.li,{children:["The specification of the packet from a phone to a PC.","\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:'The address is "/droidglove_to_pc".'}),"\n",(0,i.jsx)(n.li,{children:"Data are float x, float y, float z, float w, int grip."}),"\n",(0,i.jsx)(n.li,{children:"x, y, z, and w mean Quaternion of a phone."}),"\n",(0,i.jsx)(n.li,{children:"Grip means grip value of the hand. (0 < grip < 100)"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["The specification of the packet from a PC to a phone.","\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:'The address is "/droidglove_to_phone".'}),"\n",(0,i.jsx)(n.li,{children:"The data is int vibrationTime."}),"\n",(0,i.jsx)(n.li,{children:"VibrationTime means the duration time[ms] of vibration. If you set it to 0, the duration time will be the time of the preferences of a phone."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"thanks",children:"Thanks"}),"\n",(0,i.jsxs)(n.p,{children:["Thanks to C. Ramakrishnan, ",(0,i.jsx)(n.a,{href:"http://www.illposed.com/",children:"Illposed Software"}),", who developed JavaOSC."]}),"\n",(0,i.jsxs)(n.p,{children:["Thanks to ",(0,i.jsx)(n.a,{href:"http://my-it.at",children:"Alexander Pacha"})," at ",(0,i.jsx)(n.a,{href:"http://www.hitlabnz.org",children:"the Human Interface Technology Laboratory New Zealand"}),", who developed Sensor fusion demo for Android."]}),"\n",(0,i.jsxs)(n.p,{children:["DroidGlove is inspired by ",(0,i.jsx)(n.a,{href:"http://littlewitchpiedelivery.com/",children:"Little Witch Pie Delivery"}),". Thanks to ",(0,i.jsx)(n.a,{href:"https://twitter.com/xxxxMakoto",children:"Haramakoto"}),"."]})]})}function p(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},77833:(e,n,t)=>{t.d(n,{A:()=>r});var o=t(96540),i=function(){return i=Object.assign||function(e){for(var n,t=1,o=arguments.length;t<o;t++)for(var i in n=arguments[t])Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i]);return e},i.apply(this,arguments)};var r=o.forwardRef((function(e,n){var t=o.useState(!1),r=t[0],l=t[1],a=o.useState(e.alwaysLoadIframe||!1),s=a[0],c=a[1],d=encodeURIComponent(e.id),h="string"==typeof e.playlistCoverId?encodeURIComponent(e.playlistCoverId):null,p=e.title,u=e.poster||"hqdefault",f=e.announce||"Watch",j=new URLSearchParams(i(i(i(i({},e.muted?{mute:"1"}:{}),e.alwaysLoadIframe?{}:{autoplay:"1",state:"1"}),e.enableJsApi?{enablejsapi:"1"}:{}),e.playlist?{list:d}:{})),m=e.noCookie;
2m=e.cookie?"https://www.youtube.com":"https://www.youtube-nocookie.com";var x=e.playlist?"".concat(m,"/embed/videoseries?").concat(j.toString()):"".concat(m,"/embed/").concat(d,"?").concat(j.toString()),v=e.webp?"webp":"jpg",w=e.webp?"vi_webp":"vi",b=e.thumbnail||(e.playlist?"https://i.ytimg.com/".concat(w,"/").concat(h,"/").concat(u,".").concat(v):"https://i.ytimg.com/".concat(w,"/").concat(d,"/").concat(u,".").concat(v)),g=e.activatedClass||"lyt-activated",y=e.adNetwork||!1,k=e.aspectHeight||9,C=e.aspectWidth||16,D=e.iframeClass||"",G=e.playerClass||"lty-playbtn",S=e.wrapperClass||"yt-lite",T=e.onIframeAdded||function(){},_=e.rel?"prefetch":"preload",O=e.containerElement||"article",P=e.style||{};return o.useEffect((function(){s&&T()}),[s]),o.createElement(o.Fragment,null,o.createElement("link",{rel:_,href:b,as:"image"}),o.createElement(o.Fragment,null,r&&o.createElement(o.Fragment,null,o.createElement("link",{rel:"preconnect",href:m}),o.createElement("link",{rel:"preconnect",href:"https://www.google.com"}),y&&o.createElement(o.Fragment,null,o.createElement("link",{rel:"preconnect",href:"https://static.doubleclick.net"}),o.createElement("link",{rel:"preconnect",href:"https://googleads.g.doubleclick.net"})))),o.createElement(O,{onPointerOver:function(){r||l(!0)},onClick:function(){s||c(!0)},className:"".concat(S," ").concat(s?g:""),"data-title":p,style:i(i({backgroundImage:"url(".concat(b,")")},{"--aspect-ratio":"".concat(k/C*100,"%")}),P)},o.createElement("button",{type:"button",className:G,"aria-label":"".concat(f," ").concat(p)}),s&&o.createElement("iframe",{ref:n,className:D,title:p,width:"560",height:"315",frameBorder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,src:x})))}))}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.