diff --git a/404.html b/404.html index 36a1852..02b72f3 100644 --- a/404.html +++ b/404.html @@ -9,13 +9,13 @@ - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/images/dev-mode-201721a5652d265e328f74576af544e6.png b/assets/images/dev-mode-201721a5652d265e328f74576af544e6.png new file mode 100644 index 0000000..7d06456 Binary files /dev/null and b/assets/images/dev-mode-201721a5652d265e328f74576af544e6.png differ diff --git a/assets/js/199fe866.d8864b1d.js b/assets/js/199fe866.d8864b1d.js deleted file mode 100644 index 4e35485..0000000 --- a/assets/js/199fe866.d8864b1d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkvrcft_docs=self.webpackChunkvrcft_docs||[]).push([[6915],{23612:(e,t,a)=>{a.d(t,{Z:()=>d});var n=a(67294),o=a(34334),i=a(35281),l=a(95999);const r={admonition:"admonition_LlT9",admonitionHeading:"admonitionHeading_tbUL",admonitionIcon:"admonitionIcon_kALy",admonitionContent:"admonitionContent_S0QG"};const s={note:{infimaClassName:"secondary",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 14 16"},n.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:n.createElement(l.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 12 16"},n.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:n.createElement(l.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 12 16"},n.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:n.createElement(l.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 14 16"},n.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:n.createElement(l.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 16 16"},n.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:n.createElement(l.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},u={secondary:"note",important:"info",success:"tip",warning:"danger"};function p(e){const{mdxAdmonitionTitle:t,rest:a}=function(e){const t=n.Children.toArray(e),a=t.find((e=>n.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),o=n.createElement(n.Fragment,null,t.filter((e=>e!==a)));return{mdxAdmonitionTitle:a,rest:o}}(e.children);return{...e,title:e.title??t,children:a}}function d(e){const{children:t,type:a,title:l,icon:d}=p(e),c=function(e){const t=u[e]??e,a=s[t];return a||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),s.info)}(a),h=l??c.label,{iconComponent:m}=c,k=d??n.createElement(m,null);return n.createElement("div",{className:(0,o.Z)(i.k.common.admonition,i.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,r.admonition)},n.createElement("div",{className:r.admonitionHeading},n.createElement("span",{className:r.admonitionIcon},k),h),n.createElement("div",{className:r.admonitionContent},t))}},24928:(e,t,a)=>{a.d(t,{Ue:()=>u,xc:()=>r});var n=a(67294),o=a(39960),i=a(92503),l=a(90512);function r(e){let{name:t,url:a,description:l}=e;return n.createElement("div",{className:"col col--6 margin-bottom--lg"},n.createElement(o.Z,{class:"card padding--lg cardContainer_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module",to:a},n.createElement(i.Z,{as:"h2",class:"text--truncate cardTitle_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},t),n.createElement("p",{class:"text--truncate cardDescription_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},l)))}function s(e){let{name:t,image:a,url:r,description:s}=e;return n.createElement("div",{className:"col col--6 margin-bottom--lg"},n.createElement("div",{className:(0,l.Z)("card")},n.createElement("div",{className:(0,l.Z)("card__image")},n.createElement(o.Z,{to:r},n.createElement("img",{src:a,alt:`${t}'s image`}))),n.createElement("div",{className:"card__body"},n.createElement(i.Z,{as:"h3"},t),n.createElement("p",null,s)),n.createElement("div",{className:"card__footer"},n.createElement("div",{className:"button-group button-group--block"},n.createElement(o.Z,{className:"button button--secondary",to:r},"Download")))))}function u(){return n.createElement("div",{class:"row",style:{display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement(s,{name:"VRCFaceTracking AppInstaller",url:"https://github.com/benaclejames/VRCFaceTracking/releases/latest/download/VRCFaceTracking_x64.appinstaller",image:a(82648).Z,description:"Get the latest Release lightweight Windows AppInstaller, just run and install!"}))}},90351:(e,t,a)=>{a.d(t,{F4:()=>l,d9:()=>u,gm:()=>s,xb:()=>r,y$:()=>p});var n=a(65130),o=a(67294),i=a(52263);function l(e){let{children:t}=e;const{metadata:a}=(0,n.k)(),{editUrl:i}=a;return o.createElement("a",{href:i,target:"_blank",rel:"noopener noreferrer"},t)}function r(e){let{children:t,to:a,append:n=""}=e;const{siteConfig:l}=(0,i.Z)(),r=l.customFields[a.toLowerCase()];return o.createElement("a",{href:r.href+n,target:"_blank",rel:"noopener noreferrer"},t??r.label)}function s(e){let{children:t,cause:a}=e;return o.createElement("div",null,o.createElement("table",null,o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("strong",null,"Cause")),o.createElement("td",{style:{textAlign:"left",width:"100vh"}},a)),o.createElement("tr",null,o.createElement("td",null,o.createElement("strong",null,"Solution")),o.createElement("td",{style:{textAlign:"left",width:"100vh"}},t)))))}const u=e=>{let{children:t,color:a}=e;return o.createElement("span",{style:{color:a}},t)},p=e=>{let{children:t,color:a}=e;return o.createElement("span",{style:{backgroundColor:a,borderRadius:"2px",color:"#fff",padding:"0.2rem"}},t)}},93779:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>p,default:()=>g,frontMatter:()=>u,metadata:()=>d,toc:()=>h});var n=a(87462),o=(a(67294),a(3905)),i=(a(24928),a(90351)),l=a(22004),r=a(39960),s=(a(44996),a(23612));const u={},p="Quest Pro",d={unversionedId:"hardware/quest-pro",id:"hardware/quest-pro",title:"Quest Pro",description:"The Meta Quest Pro provides eye gaze tracking, detailed eye expression tracking, and face tracking.",source:"@site/docs/hardware/quest-pro.mdx",sourceDirName:"hardware",slug:"/hardware/quest-pro",permalink:"/docs/hardware/quest-pro",draft:!1,editUrl:"https://github.com/VRCFaceTracking/docs/edit/master/docs/hardware/quest-pro.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Pimax",permalink:"/docs/hardware/pimax"},next:{title:"Varjo",permalink:"/docs/hardware/varjo"}},c={},h=[{value:"Why is this setup required?",id:"why-is-this-setup-required",level:2},{value:"Setup",id:"setup",level:2},{value:"Enable Eye and Face Tracking on the Headset",id:"enable-eye-and-face-tracking-on-the-headset",level:3},{value:"Oculus Link/Airlink Setup",id:"oculus-linkairlink-setup",level:3},{value:"ALXR Setup",id:"alxr-setup",level:3},{value:"ALVR Setup",id:"alvr-setup",level:3},{value:"Virtual Desktop Setup",id:"virtual-desktop-setup",level:3},{value:"SteamLink Setup",id:"steamlink-setup",level:3},{value:"Modules",id:"modules",level:2},{value:"Tips and Tricks",id:"tips-and-tricks",level:2},{value:"Using Sidequest to Side-load Quest Apps",id:"using-sidequest-to-side-load-quest-apps",level:3},{value:"Aligning Play Spaces with SteamVR Lighthouse-tracked Devices",id:"aligning-play-spaces-with-steamvr-lighthouse-tracked-devices",level:3},{value:"Using Index Controllers with the Quest Pro with Link/Airlink",id:"using-index-controllers-with-the-quest-pro-with-linkairlink",level:3},{value:"Using Index Controllers with the Quest Pro with Virtual Desktop",id:"using-index-controllers-with-the-quest-pro-with-virtual-desktop",level:3},{value:"Using Index Controllers with the Quest Pro with ALVR/ALXR",id:"using-index-controllers-with-the-quest-pro-with-alvralxr",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"NO MODULES LOADED / Stuck on "Initializing Modules"",id:"no-modules-loaded--stuck-on-initializing-modules",level:3},{value:"General Problems",id:"general-problems",level:3}],m={toc:h},k="wrapper";function g(e){let{components:t,...u}=e;return(0,o.kt)(k,(0,n.Z)({},m,u,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"quest-pro"},"Quest Pro"),(0,o.kt)("p",null,"The Meta Quest Pro provides eye gaze tracking, detailed eye expression tracking, and face tracking.\nAll eye and face tracking hardware is internal to the device (no additional hardware setup required).\nAll eye and face tracking data is accessed via Meta\u2019s Face and Eye OpenXR extensions.\nThere is currently no way for VRCFT to simultaneously extract data from the headset and send eye and face tracking to the Quest version of VRChat, so the following solutions are only for PCVR.\nPreviously, a beta version of the native VRChat Quest client included built in eye tracking support without the need for VRCFaceTracking. This version is discontinued and is no longer available."),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"The Quest Pro has been shown to be ",(0,o.kt)("em",{parentName:"p"},"extremely")," susceptable to sweat damage.\nThere have been a practically significant number of users who have experienced the exact same failure mode\nof Eye-tracking not working after sweat ingress.\nIf you plan on exercising, dancing, or doing other sweat-inducing activities,\nplease take extra precautions against having sweat or other liquids reach the front part of the headset.")),(0,o.kt)("h2",{id:"why-is-this-setup-required"},"Why is this setup required?"),(0,o.kt)("p",null,"The Quest Pro provides developers with both eye and face tracking data from a single, contained device, making it easy for native Quest developers to incorporate.\nHowever, having it only accessible through Meta\u2019s Oculus OpenXR extensions means there must be an OpenXR application using the Oculus runtime running somewhere.\nDifficulty of the setup process depends on the desired PCVR connection method. "),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"setup"},"Setup"),(0,o.kt)("p",null,"The basic Quest Pro setup flow:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enable-eye-and-face-tracking-on-the-headset"},"Enable Eye and Face Tracking on the Headset")),(0,o.kt)("li",{parentName:"ol"},"Set up desired PCVR connection method"),(0,o.kt)("li",{parentName:"ol"},"Install corresponding VRCFT module")),(0,o.kt)("p",null,"The Quest Pro currently has ",(0,o.kt)("strong",{parentName:"p"},"5")," readily available face-tracking compatible PCVR connection methods, listed in no particular order:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#oculus-linkairlink-setup"},"Oculus Link/Airlink")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#alxr-setup"},"ALXR")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#alvr-setup"},"ALVR")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#virtual-desktop-setup"},"Virtual Desktop")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#steamlink-setup"},"SteamLink"))),(0,o.kt)("p",null,'Oculus Link/Airlink is Meta\u2019s own PCVR streaming solution, and is generally more straight-forward to set up (the PCVR part) and network stable, but also is limited in customization.\nALXR/ALVR are open-source projects and thus has many for features and customizability in the PCVR connection as compared to Airlink, but also may have more bugs, quirks, and generally may be harder to use.\nVirtual Desktop is commonly seen as the "best" PCVR streaming solution, but it is not ',(0,o.kt)("em",{parentName:"p"},"free"),", unlike all the other options.\nSteamLink is Valve's PCVR steaming solution meant specifically for using Quest headsets with SteamVR. "),(0,o.kt)("p",null,"If you need a recommendation for what to use for PCVR streaming:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"If you don't want to spend money and want to connect ",(0,o.kt)("em",{parentName:"li"},"wirelessly"),": you should start with ",(0,o.kt)("a",{parentName:"li",href:"#steamlink-setup"},(0,o.kt)("strong",{parentName:"a"},"SteamLink"))," as it has the easiest and most straightfoward setup."),(0,o.kt)("li",{parentName:"ul"},"If you don't mind spending money: you should use ",(0,o.kt)("a",{parentName:"li",href:"#virtual-desktop-setup"},(0,o.kt)("strong",{parentName:"a"},"Virtual Desktop"))," for ease of use and additional features."),(0,o.kt)("li",{parentName:"ul"},"If you must use a wired (USB) connection: you should start with ",(0,o.kt)("a",{parentName:"li",href:"#oculus-linkairlink-setup"},(0,o.kt)("strong",{parentName:"a"},"Oculus Link/Airlink")),". ")),(0,o.kt)("p",null,'With any option, the user is expected to have the VR PC and the Quest Pro on the same network, with the PC ideally connected to the network via ethernet cable (for wireless PCVR),\nor Quest Pro connected to the PC with a high-quality USB 3.0+ cable (for "wired" PCVR, Virtual Desktop and SteamLink excluded).\nYou can learn more about improving your Quest PCVR streaming experience with the many guides available online.'),(0,o.kt)("h3",{id:"enable-eye-and-face-tracking-on-the-headset"},"Enable Eye and Face Tracking on the Headset"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},'Open up the Settings in your Quest Pro headset, and navigate to "Movement Settings"'),(0,o.kt)("li",{parentName:"ol"},'Select the "Natural Facial Expressions" tab on the left, then Enable Natural Facial Expressions'),(0,o.kt)("li",{parentName:"ol"},'Select the "Eye Tracking" tab on the left, then Enable Eye Tracking. If you haven\u2019t already, calibrate your eye tracking',(0,o.kt)("div",{style:{width:"60%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(99202).Z,alt:"Quest Pro Eye Tracking settings"})))),(0,o.kt)("h3",{id:"oculus-linkairlink-setup"},"Oculus Link/Airlink Setup"),(0,o.kt)("admonition",{type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"Oculus PTC version v60 will cause any Link-reliant VRCFT module to break, even though the module may initialize. This may be resolved in future v60 updates on the PTC channel or in the live release.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Oculus Link/Airlink Setup"),(0,o.kt)("p",null,'Prefer a video? Community member Ninka has graciously created another tutorial video for the Quest Pro and VRCFT 5.0+ that goes over the entire setup procedure,\nincluding the VRCFT module installation for the Oculus Link/Airlink module "Quest Pro OpenXR".'),(0,o.kt)("div",{class:"row",style:{display:"flex",justifyContent:"center",alignItems:"center"}},(0,o.kt)(l.Z,{controls:!0,url:"https://www.youtube.com/watch?v=Keh__Lw7dEk",mdxType:"ReactPlayer"})),(0,o.kt)(s.Z,{type:"info",mdxType:"Admonition"},(0,o.kt)("p",null,"Developer mode is only required if using Oculus Link/Airlink!")),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED")))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"CREATE DEVELOPER ACCOUNT AND ENABLE DEVELOPER MODE"),": "),(0,o.kt)("ol",{parentName:"li"},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"https://developer.oculus.com/sign-up/"},"Set up a Meta Oculus developer account"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"A developer account is ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("em",{parentName:"strong"},"necessary")),' (for now) as the eye and face OpenXR extensions are currently considered "developer features" if to be accessed ',(0,o.kt)("em",{parentName:"li"},"from the PC Oculus runtime"),'.\nIt is rather trivial to apply for and there is no check for being a "real organization".'))),(0,o.kt)("li",{parentName:"ol"},'Install the Oculus ("Meta Quest") app on mobile device (if it isn\u2019t already) and login with your (developer) Oculus account. Register your headset in the app.'),(0,o.kt)("li",{parentName:"ol"},"In the Oculus mobile App, tap Menu at the bottom right, then Devices. Select your Quest Pro, then go to ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings -> Developer Mode")," and set the Developer Mode switch to enabled.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Reboot the headset after enabling Developer Mode.")))),(0,o.kt)("div",{style:{width:"100%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(67608).Z,alt:"Quest Developer Mode in phone app"}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Install and start the ",(0,o.kt)("a",{parentName:"p",href:"https://www.oculus.com/download_app/?id=1582076955407037"},"Oculus PC application")," (if it isn't already).")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Follow setup instructions for logging in (with the same developer account created/used earlier to enable dev mode on the headset!) and adding your Quest Pro to ",(0,o.kt)("inlineCode",{parentName:"p"},"Devices"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"In the Oculus PC application, click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Settings")," in the left sidebar, then ",(0,o.kt)("inlineCode",{parentName:"p"},"General")," tab. Turn on ",(0,o.kt)("inlineCode",{parentName:"p"},"Unknown Sources"),", and set the ",(0,o.kt)("inlineCode",{parentName:"p"},"OpenXR Runtime")," to Oculus."))),(0,o.kt)("admonition",{type:"warning"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"SET THE OPENXR RUNTIME TO OCULUS"),". Do not forget to do this step!")),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(97053).Z,alt:"Oculus PC App General Tab"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"Navigate to the ",(0,o.kt)("inlineCode",{parentName:"li"},"Beta")," tab. Enable ",(0,o.kt)("inlineCode",{parentName:"li"},"Developer Runtime Features"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"Eye tracking over Oculus Link"),", and ",(0,o.kt)("inlineCode",{parentName:"li"},"Natural Facial Expressions over Oculus Link"),".")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Note that ",(0,o.kt)("inlineCode",{parentName:"li"},"Passthrough over Oculus Link")," option ",(0,o.kt)("em",{parentName:"li"},"may")," cause issues and unless you are making or using PCVR apps that use Oculus passthrough, you should just leave this disabled.",(0,o.kt)("admonition",{parentName:"li",type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"If you do not see these options, you did not follow the previous steps correctly.")))),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(95631).Z,alt:"Oculus PC app Beta Tab"})),(0,o.kt)("ol",{start:7},(0,o.kt)("li",{parentName:"ol"},"Proceed to ",(0,o.kt)("a",{parentName:"li",href:"#modules"},"Modules")," for compatible modules to use with Link/Airlink. "))),(0,o.kt)("h3",{id:"alxr-setup"},"ALXR Setup"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Using ALXR will require you to ",(0,o.kt)("a",{parentName:"p",href:"#using-sidequest-to-side-load-quest-apps"},"sideload applications to you Quest"))),(0,o.kt)("details",null,(0,o.kt)("summary",null,"ALXR Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},"Download and install the latest ALXR client ",(0,o.kt)("em",{parentName:"li"},"and server")," from the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/ALXR-nightly/releases"},"ALXR-nightly")," repository.\nIf this is your first time using ALXR, follow the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/ALVR/wiki/ALXR-Client#usage"},"Usage guide")," and ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/ALVR/wiki/ALXR-Client#android-all-flavors---questpicogenericetc"},"Android-specific client install instructions")),(0,o.kt)("li",{parentName:"ol"},"Install the ",(0,o.kt)("strong",{parentName:"li"},"ALXR Remote")," module from the VRCFaceTracking module repository."),(0,o.kt)("li",{parentName:"ol"},"Open the ",(0,o.kt)("inlineCode",{parentName:"li"},"ALXRModuleConfig.json")," found in the installed module directory.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"You may need to navigate to ",(0,o.kt)("inlineCode",{parentName:"li"},"C:\\Users\\[username]\\AppData\\Local\\Packages\\96ba052f-0948-44d8-86c4-a0212e4ae047_d7rcq4vxghz0r\\LocalCache\\Roaming\\VRCFaceTracking\\")," to find the module directory and config json."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/VRCFT-ALXR-Modules#module-settings"},"Learn more about the ALXR module configuration options")))),(0,o.kt)("li",{parentName:"ol"},"In ",(0,o.kt)("inlineCode",{parentName:"li"},"ALXRModuleConfig.json"),', in the "RemoteConfig" section set "ClientIpAddress" to the headset IP, this can be found in the ALVR server dashboard.',(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"If the client is being run on the same host as the server (e.g. alxr windows client), use localhost IP (default, ",(0,o.kt)("inlineCode",{parentName:"li"},"127.0.0.1"),") and set the server to TCP protocol."))),(0,o.kt)("li",{parentName:"ol"},"Restart VRCFT to reinitialize the ALXR Remote Module with the updated configuration."))),(0,o.kt)("h3",{id:"alvr-setup"},"ALVR Setup"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Using ALVR will require you to ",(0,o.kt)("a",{parentName:"p",href:"#using-sidequest-to-side-load-quest-apps"},"sideload applications to you Quest"))),(0,o.kt)("details",null,(0,o.kt)("summary",null,"ALVR Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},"Install the ALVR ",(0,o.kt)("strong",{parentName:"li"},"Nightly")," streamer on the PC and ",(0,o.kt)("strong",{parentName:"li"},"Nightly")," client on the Quest Pro if you have not already.\nFollow the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/alvr-org/ALVR/wiki/Installation-guide#nightly"},"ALVR Install instructions")," if this is your first time using ALVR."),(0,o.kt)("li",{parentName:"ol"},"Launch ALVR streamer and set ",(0,o.kt)("inlineCode",{parentName:"li"},"Eye and face tracking")," to ",(0,o.kt)("inlineCode",{parentName:"li"},"VRCFaceTracking"),"."),(0,o.kt)("li",{parentName:"ol"},"Start the client on the Quest Pro and connect."),(0,o.kt)("li",{parentName:"ol"},"Install the ",(0,o.kt)("strong",{parentName:"li"},"ALVR Module")," from the VRCFaceTracking module repository."))),(0,o.kt)("h3",{id:"virtual-desktop-setup"},"Virtual Desktop Setup"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Virtual Desktop Setup"),(0,o.kt)("p",null,"This following setup assumes that Virtual Desktop has already been purchased from the ",(0,o.kt)("strong",{parentName:"p"},"Quest Store")," in the headset and the Virtual Desktop Streamer PC-side app has been installed on the PC.\nPlease refer to Virtual Desktop's built-in setup instructions to get started with using Virtual Desktop."),(0,o.kt)("ol",{start:0},(0,o.kt)("li",{parentName:"ol"},"Make sure that your Virtual Desktop Quest app and PC streamer application are on version ",(0,o.kt)("strong",{parentName:"li"},"v1.29 or greater"),".\nIf they are completely up to date, this requirement should be satisfied. "),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},"In the Virtual Desktop app ",(0,o.kt)("em",{parentName:"li"},"on the headset"),', go to the "Streaming" tab, and enable the option ',(0,o.kt)("inlineCode",{parentName:"li"},"Forward face/eye tracking to PC"),(0,o.kt)("img",{alt:"Virtual Desktop Settings",src:a(14917).Z,width:"1008",height:"918"})),(0,o.kt)("li",{parentName:"ol"},"Start Virtual Desktop Streamer if you have not already and establish headset connection to the PC."),(0,o.kt)("li",{parentName:"ol"},"Proceed to ",(0,o.kt)("a",{parentName:"li",href:"#modules"},"Modules")," for compatible modules to use with Virtual Desktop. ")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"To let the Virtual Desktop VRCFT module properly initialize, make sure to start VRCFT with the Virtual Desktop module installed ",(0,o.kt)("em",{parentName:"p"},"after")," you start the Virtual Desktop Streamer program on the PC."))),(0,o.kt)("p",null,"Switching to Virtual Desktop Beta (when a beta is active) may let you use yet-to-be-released features.\nIn case there is a beta you would like to try, you can switch to the beta following the instructions in the dropdown"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"How To Switch to Virtual Desktop Beta"),(0,o.kt)("p",null," There are a few ways to change to Virtual Desktop Beta when a Beta is active. Meta constantly changes how to accomplish this so the fool-proof way is to just sideload the beta APK. "),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Change to the Beta channel on the Virtual Desktop Meta store page (while logged into your Meta Quest account). You will need to then update the Virtual Desktop app in your headset after this change. "),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(18377).Z,alt:"Changing to Beta on the Meta website"}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Change to the Beta channel in the Meta Quest phone app (while logged into your Meta Quest account). You will need to then update the Virtual Desktop app in your headset after this change.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Install the beta APK manually. Grab the beta ",(0,o.kt)("inlineCode",{parentName:"p"},"VirtualDesktop.Android.Quest.apk")," (without the 1) from the Virtual Desktop release page and ",(0,o.kt)("a",{parentName:"p",href:"#using-sidequest-to-side-load-quest-apps"},"install it with SideQuest"),". You will need to uninstall the live version of Virtual Desktop from your Quest first. ")))),(0,o.kt)("h3",{id:"steamlink-setup"},"SteamLink Setup"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"SteamLink Setup"),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Do ",(0,o.kt)("strong",{parentName:"p"},"NOT")," change the OSC port settings in VRCFaceTracking for SteamLink!\nChanging either of them to 9015 ",(0,o.kt)("strong",{parentName:"p"},"WILL CAUSE PROBLEMS AND NOTHING WILL WORK"),".\nThose VRCFT port settings are for communication with ",(0,o.kt)("em",{parentName:"p"},"VRChat"),".")),(0,o.kt)("ol",{start:0},(0,o.kt)("li",{parentName:"ol"},"Follow Valve's official ",(0,o.kt)("a",{parentName:"li",href:"https://help.steampowered.com/en/faqs/view/0E2C-406B-9135-38A4"},"Setup instructions for SteamLink")," "),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},'Once connected to SteamVR, open the SteamVR menu, open VR Settings, and enable "Advanced Settings" by moving the toggle to "Show" in the bottom left.',(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(74016).Z,alt:"Navigating to the VR Settings tab"}))),(0,o.kt)("li",{parentName:"ol"},'Navigate to the Setting tab "Steam Link", and enable the following options:',(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Enable OSC"),(0,o.kt)("li",{parentName:"ul"},"Share eye tracking data to other apps on this PC via OSC"),(0,o.kt)("li",{parentName:"ul"},"Share face tracking data to other apps on this PC via OSC"))),(0,o.kt)("li",{parentName:"ol"},"Set the OSC output port to ",(0,o.kt)("inlineCode",{parentName:"li"},"9015 (CUSTOM: VRCFT, ETC.)"),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(61352).Z,alt:"Required settings for Face Tracking"})))),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Do ",(0,o.kt)("strong",{parentName:"p"},"NOT")," change the OSC port settings in VRCFaceTracking for SteamLink!\nChanging either of them to 9015 ",(0,o.kt)("strong",{parentName:"p"},"WILL CAUSE PROBLEMS AND NOTHING WILL WORK"),".\nThose VRCFT port settings are for communication with ",(0,o.kt)("em",{parentName:"p"},"VRChat"),". "))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"modules"},"Modules"),(0,o.kt)("p",null,"There are a total of ",(0,o.kt)("strong",{parentName:"p"},"6")," different VRCFT modules that can be used for the Quest Pro."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"If you are using Oculus Link/Airlink, you have the options of:",(0,o.kt)("ol",{parentName:"li"},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/regzo2/VRCFaceTracking-QuestProOpenXR"},"Quest Pro OpenXR module"))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/korejan/VRCFT-ALXR-Modules"},"ALXR Local module"))))),(0,o.kt)("li",{parentName:"ul"},"If you are using ALXR, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/korejan/VRCFT-ALXR-Modules"},"ALXR Remote module")),"."),(0,o.kt)("li",{parentName:"ul"},"If you are using ALVR, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/alvr-org/VRCFT-ALVR"},"ALVR module")),"."),(0,o.kt)("li",{parentName:"ul"},"If you are using Virtual Desktop, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/guygodin/VirtualDesktop.VRCFaceTracking"},"Virtual Desktop module")),".",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Virtual Desktop v1.29.3 introduces support for Virtual Desktop's own OpenXR runtime VDXR.\n",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/korejan/VRCFT-ALXR-Modules"},"ALXR Local module"))," ",(0,o.kt)("em",{parentName:"li"},"can be used")," for VRCFT instead of the Virtual Desktop module if VDXR is set as the active runtime. "))),(0,o.kt)("li",{parentName:"ul"},"If you are using SteamLink, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/ykeara/LinkFT"},"SteamLink VRCFT Module")))),(0,o.kt)("p",null,"Links are to Module source repositories, for those interested in contributing and improving the modules.\nAll* modules are readily available for installation via the VRCFaceTracking built in module registry.\n",(0,o.kt)("a",{parentName:"p",href:"/docs/intro/getting-started#installing-the-vrcfacetracking-module"},"Learn how to install modules from the module registry"),"."),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"*The SteamVR Link module is not currently avaliable in the module registry and must be installed manually after downloading the module .zip from the module's ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ykeara/LinkFT/releases/latest"},"releases page"),".")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"tips-and-tricks"},"Tips and Tricks"),(0,o.kt)("h3",{id:"using-sidequest-to-side-load-quest-apps"},"Using Sidequest to Side-load Quest Apps"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Install SideQuest (Advanced Installer) on your computer. ",(0,o.kt)("a",{parentName:"li",href:"https://sidequestvr.com/setup-howto"},"https://sidequestvr.com/setup-howto"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"The SideQuest application will have a built-in tutorial for the following steps."))),(0,o.kt)("li",{parentName:"ol"},"Connect your Quest Pro headset to your computer with a ",(0,o.kt)("em",{parentName:"li"},"data-transfer"),' USB cable.\nOnce connected you will be prompted to "Allow USB debugging" and "Allow File Access". Make sure to allow both.\n(You should also check the ',(0,o.kt)("em",{parentName:"li"},"Always allow from this computer")," box to prevent the message from popping up again later)"),(0,o.kt)("li",{parentName:"ol"},"Use SideQuest to install ",(0,o.kt)("inlineCode",{parentName:"li"},"alxr-client-quest.apk")," to your Quest Pro. Click the ",(0,o.kt)("em",{parentName:"li"},'"Install APK file from folder"')," button, then select the downloaded ",(0,o.kt)("inlineCode",{parentName:"li"},"alxr-client-quest.apk")," in the file prompt.",(0,o.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(8154).Z,alt:"How to install APKs in SideQuest"}))),(0,o.kt)("li",{parentName:"ol"},"SideQuest should have a green notification bar show up at the bottom saying the operation was successful.")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"You may need to uninstall the previous version of the app you are trying to sideload if it exists and SideQuest fails the current app install.")),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},'In your Apps Library, you will need to set the category of shown apps to "Unknown Sources" to see the sideloaded application.\nYou will need to tap the Search bar first before you see the category filter dropdown.')),(0,o.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(5921).Z,alt:"Quest Library Unknown Sources"})),(0,o.kt)("h3",{id:"aligning-play-spaces-with-steamvr-lighthouse-tracked-devices"},"Aligning Play Spaces with SteamVR Lighthouse-tracked Devices"),(0,o.kt)("p",null,"To use Vive trackers or other SteamVR Lighthouse tracked devices with the Quest Pro, you'll need to use ",(0,o.kt)("strong",{parentName:"p"},"OpenVR-SpaceCalibrator"),".\nWhile the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/pushrax/OpenVR-SpaceCalibrator"},"original from pushrax"),' will work, many "Mixed VR" users have found the continous calibration forks\nto be generally better, such as ',(0,o.kt)("a",{parentName:"p",href:"https://github.com/bdunderscore/OpenVR-SpaceCalibrator/tree/continuous-cal"},"bdunderscore's fork"),", or more recently,\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ArcticFox8515/OpenVR-SpaceCalibrator"},"ArcticFox8515's fork")," of bdunderscore's fork."),(0,o.kt)("p",null,"We would recommend using ArcticFox8515's fork for now as it is the most recent and improves upon the original. "),(0,o.kt)("h3",{id:"using-index-controllers-with-the-quest-pro-with-linkairlink"},"Using Index Controllers with the Quest Pro with Link/Airlink"),(0,o.kt)("p",null,"Download these ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/channels/849300336128032789/1033745772979699775/1056009844701806643"},"Powershell Scripts (Discord Link)")),(0,o.kt)("p",null,"To run, right-click the file -> ",(0,o.kt)("inlineCode",{parentName:"p"},'"Run with Powershell"')),(0,o.kt)("p",null,"These scripts will prevent Oculus Link from adding the Quest controllers to the SteamVR devices, allowing the use of Index controllers or any other controller of your choosing. "),(0,o.kt)("p",null,"You may have problems with running Powershell scripts downloaded from the internet (for good reason!). You can learn about ",(0,o.kt)("a",{parentName:"p",href:"https://adamtheautomator.com/run-powershell-script/"},"getting around Microsoft's default script security"),"."),(0,o.kt)("h3",{id:"using-index-controllers-with-the-quest-pro-with-virtual-desktop"},"Using Index Controllers with the Quest Pro with Virtual Desktop"),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Before"),' launching SteamVR from Virtual Desktop:\nIn the Virtual Desktop "Streaming" tab, untick the "Track controllers" option under "Advanced Options" in the Streaming tab.\nThis will prevent Virtual Desktop from adding the Quest controllers to the SteamVR devices, allowing the use of Index controllers or any other controller of your choosing. '),(0,o.kt)("div",{style:{width:"33%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(90509).Z,alt:"Virtual Desktop track controllers setting circled"})),(0,o.kt)("h3",{id:"using-index-controllers-with-the-quest-pro-with-alvralxr"},"Using Index Controllers with the Quest Pro with ALVR/ALXR"),(0,o.kt)("p",null,'The customizability of ALVR allows a few options in this regard. All following mentioned settings can be found in the "Headset" tab of the ALVR settings.'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'Option 1: Completely disable the Quest Pro controllers using the checkbox next to "Controllers"'),(0,o.kt)("li",{parentName:"ul"},'Option 2: Set the Controller emulation to "HTC Vive Tracker". This allows real controllers such as the Index Controllers to take precedence in SteamVR, and allow\nfor using the Quest Pro controllers for manual playspace calibration.')),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"troubleshooting"},"Troubleshooting"),(0,o.kt)("h3",{id:"no-modules-loaded--stuck-on-initializing-modules"},'NO MODULES LOADED / Stuck on "Initializing Modules"'),(0,o.kt)("p",null,"Whenever you see this, the cause is because the currently installed module failed to initialize (or you're not even giving enough time for the module to fail attempting to load...).\nSwitch to the VRCFT Output Log tab and find the relevant error message."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Oculus Link/Airlink] Error in headset: ",(0,o.kt)("code",null,"com.oculus.bodyapiservice keeps stopping")),(0,o.kt)(i.gm,{cause:"You do not have developer mode enabled on both the PC Oculus program and for the headset from the Oculus phone app.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(r.Z,{to:"##oculus-linkairlink-setup",mdxType:"Link"},"the Link/Airlink setup"),", paying careful attention to all the steps.",(0,o.kt)("br",null),'Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that ',(0,o.kt)("b",null,"Developer Mode is switched on for the Quest Pro in the Oculus phone app"),". If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the ",(0,o.kt)(r.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center")," to verify/resolve developer account status.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to GetFaceExpressionWeightsFB"),(0,o.kt)(i.gm,{cause:"There is some permission in the setup that was not set correctly.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(r.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps.",(0,o.kt)("br",null),'Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that ',(0,o.kt)("b",null,"Developer Mode is switched on for the Quest Pro in the Oculus phone app"),". If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the ",(0,o.kt)(r.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center")," to verify/resolve developer account status.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create Face Tracker"),(0,o.kt)(i.gm,{cause:"There is some permission in the setup that was not set correctly or Quest Pro headset is not connected.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(r.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps.",(0,o.kt)("br",null),'Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that ',(0,o.kt)("b",null,"Developer Mode is switched on for the Quest Pro in the Oculus phone app"),". If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the ",(0,o.kt)(r.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center")," to verify/resolve developer account status.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT!")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to get XrSystemID"),(0,o.kt)(i.gm,{cause:"There is some permission in the setup that was not set correctly or Quest Pro headset is not connected.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(r.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT!")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create session and I am NOT using a laptop / eGPU"),(0,o.kt)(i.gm,{cause:"There is something preventing an OpenXR session from being created for the Quest Pro",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(r.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT!")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create session and I AM using a laptop / eGPU"),(0,o.kt)(i.gm,{cause:"There is something preventing an OpenXR session from being created for the Quest Pro, possibly related to Oculus trying to default init on laptop's iGPU",mdxType:"TroubleShootTable"},"Make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings. Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT.",(0,o.kt)("p",null," Try to turn off using integrated GPU through your laptop's BIOS or control center program."),(0,o.kt)("p",null,' Alternatively, use Windows Settings to force VRCFaceTracking to "High Performance" (use discrete GPU).\nOpen Windows Settings and navigate through System -> Display -> Graphics Settings (a small link under "Multiple Displays" section in Win10, or under "Related Settings" in Win11).'),(0,o.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(2658).Z,alt:"Set Windows Custom Graphics Settings"}),(0,o.kt)("img",{src:a(4264).Z,alt:"Set Windows Custom Graphics Settings Windows 11"})))),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Virtual Desktop] Error: [VirtualDesktop] Failed to open MemoryMappedFile. Make sure Virtual Desktop Streamer (v1.29 or later) is running."),(0,o.kt)(i.gm,{cause:"VRCFaceTracking was started before Virtual Desktop",mdxType:"TroubleShootTable"},"First, make sure both the Virtual Desktop app in the Quest and the Virtual Desktop streamer versions are at least v1.29.",(0,o.kt)("p",null," Close VRCFaceTracking, start Virtual Desktop Streamer, reopen VRCFaceTracking."),(0,o.kt)("p",null,' If VRCFaceTracking is started before SteamVR/VRChat is launched from Virtual Desktop, the output log may show a warning that "Tracking is not active".\nHowever, after launching SteamVR/VRChat (',(0,o.kt)("em",{parentName:"p"},"from Virtual Desktop"),') the Virtual Desktop module should log that "Tracking is now active!".'))),(0,o.kt)("h3",{id:"general-problems"},"General Problems"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Oculus Link/Airlink] I cannot see SteamVR because Oculus is stuck loading some random app"),(0,o.kt)(i.gm,{cause:"The nature of the way VRCFaceTracking must pull data from the Oculus OpenXR runtime from the PC is inherently hacky, effectively running 2 VR programs at once.",mdxType:"TroubleShootTable"},"If you started SteamVR first, you can simply switch back to SteamVR in the Oculus Dash. You can also try switching up the program startup sequence, starting VRCFaceTracking then SteamVR through the desktop Steam app (not through the Oculus Dash in the headset). Yet another solution is to use ",(0,o.kt)(r.Z,{to:"https://github.com/LibreQuest/OculusKiller",mdxType:"Link"},"OculusKiller")," to avoid dealing with the Oculus Dash entirely, though this has its own downsides.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[SteamLink] VRCFaceTracking crashes when I set the SteamVR OSC output port to 9015!"),(0,o.kt)(i.gm,{cause:"You changed one of VRCFaceTracking's communication ports to 9015",mdxType:"TroubleShootTable"},"Revert VRCFaceTracking's ports back to the defaults (9000 sending/9001 receiving). VRCFaceTracking uses these ports to communicate with VRChat and should not be changed. Communication with the SteamVR OSC data happens in the SteamLink module on port 9015, and this is ",(0,o.kt)("b",null,"handled internally by the module"),", not the VRCFaceTracking base program!")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"\"I'm ",(0,o.kt)("i",null,"not getting any visible errors anywhere"),' and the Module loads, but VRC only receives 0 values for all parameters (and VRC loaded a non-zero number of parameters from config)"'),(0,o.kt)(i.gm,{cause:"Meta Moment",mdxType:"TroubleShootTable"},"Try toggling the eye and face tracking enables in the headset settings, and restarting your headset completely. You may also need to re-verify developer account settings if using Oculus Link/Airlink.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"My playspace calibration resets if I take off the headset"),(0,o.kt)(i.gm,{cause:"When the Quest headset enters sleep mode after detecting you have taken off the headset, it loses it's original reference space to which the SteamVR space was calibrated to.",mdxType:"TroubleShootTable"},"Download the ",(0,o.kt)(r.Z,{to:"https://developer.oculus.com/documentation/unity/ts-odh/",mdxType:"Link"},"Meta Quest Developer Hub")," and follow the instructions for ",(0,o.kt)("i",null,"Connect Headset to MQDH")," and ",(0,o.kt)("i",null,"Disable proximity sensor and guardian"),". This will prevent the headset from entering sleep, but does mean your headset stays fully active even if you take it off. Alternatively, use another PCVR streaming method that supports Stage Tracking (Virtual Desktop, ALXR, ALVR).")),(0,o.kt)("p",null,"Don't see your problem here? Think your problem might be unrelated to the module but something else? Take a look at the ",(0,o.kt)("a",{parentName:"p",href:"/docs/vrcft-software/vrcft"},"VRCFT software page")," or search in the ",(0,o.kt)(i.d9,{color:"#5763ee",mdxType:"TextColor"},"#hardware-software-help")," forum in the ",(0,o.kt)(i.xb,{to:"discord",mdxType:"CustomLink"}),"."))}g.isMDXComponent=!0},74016:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/SVRL-VRSettings-8dccae301cfc5c377eae4e5d31126e86.jpg"},67608:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/dev-mode-1b01d292cb6ca7873ad6831cd870cfec.png"},8154:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/hacks_sidequest-install-other-crop2-bbeee8b45c451c4dd5dc77bec474dc96.png"},95631:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/oculus_pc_app_beta-ad7c8e052a4f74f4eebbd2f7c2218d29.png"},97053:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/oculus_pc_app_general-d87b3a1f7b967baba62015a2f5480656.png"},99202:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/quest_pro_settings_eye_tracking-91e78e408ed238addd3094ac523f78a3.png"},5921:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/quest_pro_unknown_sources-fb11c4858acecd4c48c7091d12823342.png"},61352:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/steamlinksettings-669de3b2f523b11b6ecf33299aa3f087.png"},18377:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/virtual_desktop_beta_desktop-773ca5644a6cf197e3d5f4dfba4d058a.png"},90509:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/virtual_desktop_track_controllers-15f5b554121b8717dbee747bdf73794b.png"},4264:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/windows11_set_custom_graphics_settings-896801d8b4043ab2a915214eb9d3836c.png"},2658:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/windows_set_custom_graphics_settings-47a7ee2845b899252cc9593759294748.png"},82648:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/vrcft_installer-ee91e492bc58e5982831a43ad159fa6e.png"},14917:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/virtual_desktop_settings-fcf426e4175d02e60110fd58d9cbf36b.png"}}]); \ No newline at end of file diff --git a/assets/js/199fe866.ed8510ce.js b/assets/js/199fe866.ed8510ce.js new file mode 100644 index 0000000..3bd1950 --- /dev/null +++ b/assets/js/199fe866.ed8510ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkvrcft_docs=self.webpackChunkvrcft_docs||[]).push([[6915],{23612:(e,t,a)=>{a.d(t,{Z:()=>p});var n=a(67294),o=a(34334),i=a(35281),r=a(95999);const l={admonition:"admonition_LlT9",admonitionHeading:"admonitionHeading_tbUL",admonitionIcon:"admonitionIcon_kALy",admonitionContent:"admonitionContent_S0QG"};const s={note:{infimaClassName:"secondary",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 14 16"},n.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:n.createElement(r.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 12 16"},n.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:n.createElement(r.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 12 16"},n.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:n.createElement(r.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 14 16"},n.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:n.createElement(r.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return n.createElement("svg",{viewBox:"0 0 16 16"},n.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:n.createElement(r.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},u={secondary:"note",important:"info",success:"tip",warning:"danger"};function d(e){const{mdxAdmonitionTitle:t,rest:a}=function(e){const t=n.Children.toArray(e),a=t.find((e=>n.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),o=n.createElement(n.Fragment,null,t.filter((e=>e!==a)));return{mdxAdmonitionTitle:a,rest:o}}(e.children);return{...e,title:e.title??t,children:a}}function p(e){const{children:t,type:a,title:r,icon:p}=d(e),c=function(e){const t=u[e]??e,a=s[t];return a||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),s.info)}(a),h=r??c.label,{iconComponent:m}=c,k=p??n.createElement(m,null);return n.createElement("div",{className:(0,o.Z)(i.k.common.admonition,i.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,l.admonition)},n.createElement("div",{className:l.admonitionHeading},n.createElement("span",{className:l.admonitionIcon},k),h),n.createElement("div",{className:l.admonitionContent},t))}},24928:(e,t,a)=>{a.d(t,{Ue:()=>u,xc:()=>l});var n=a(67294),o=a(39960),i=a(92503),r=a(90512);function l(e){let{name:t,url:a,description:r}=e;return n.createElement("div",{className:"col col--6 margin-bottom--lg"},n.createElement(o.Z,{class:"card padding--lg cardContainer_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module",to:a},n.createElement(i.Z,{as:"h2",class:"text--truncate cardTitle_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},t),n.createElement("p",{class:"text--truncate cardDescription_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},r)))}function s(e){let{name:t,image:a,url:l,description:s}=e;return n.createElement("div",{className:"col col--6 margin-bottom--lg"},n.createElement("div",{className:(0,r.Z)("card")},n.createElement("div",{className:(0,r.Z)("card__image")},n.createElement(o.Z,{to:l},n.createElement("img",{src:a,alt:`${t}'s image`}))),n.createElement("div",{className:"card__body"},n.createElement(i.Z,{as:"h3"},t),n.createElement("p",null,s)),n.createElement("div",{className:"card__footer"},n.createElement("div",{className:"button-group button-group--block"},n.createElement(o.Z,{className:"button button--secondary",to:l},"Download")))))}function u(){return n.createElement("div",{class:"row",style:{display:"flex",justifyContent:"center",alignItems:"center"}},n.createElement(s,{name:"VRCFaceTracking AppInstaller",url:"https://github.com/benaclejames/VRCFaceTracking/releases/latest/download/VRCFaceTracking_x64.appinstaller",image:a(82648).Z,description:"Get the latest Release lightweight Windows AppInstaller, just run and install!"}))}},90351:(e,t,a)=>{a.d(t,{F4:()=>r,d9:()=>u,gm:()=>s,xb:()=>l,y$:()=>d});var n=a(65130),o=a(67294),i=a(52263);function r(e){let{children:t}=e;const{metadata:a}=(0,n.k)(),{editUrl:i}=a;return o.createElement("a",{href:i,target:"_blank",rel:"noopener noreferrer"},t)}function l(e){let{children:t,to:a,append:n=""}=e;const{siteConfig:r}=(0,i.Z)(),l=r.customFields[a.toLowerCase()];return o.createElement("a",{href:l.href+n,target:"_blank",rel:"noopener noreferrer"},t??l.label)}function s(e){let{children:t,cause:a}=e;return o.createElement("div",null,o.createElement("table",null,o.createElement("tbody",null,o.createElement("tr",null,o.createElement("td",null,o.createElement("strong",null,"Cause")),o.createElement("td",{style:{textAlign:"left",width:"100vh"}},a)),o.createElement("tr",null,o.createElement("td",null,o.createElement("strong",null,"Solution")),o.createElement("td",{style:{textAlign:"left",width:"100vh"}},t)))))}const u=e=>{let{children:t,color:a}=e;return o.createElement("span",{style:{color:a}},t)},d=e=>{let{children:t,color:a}=e;return o.createElement("span",{style:{backgroundColor:a,borderRadius:"2px",color:"#fff",padding:"0.2rem"}},t)}},93779:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>g,frontMatter:()=>u,metadata:()=>p,toc:()=>h});var n=a(87462),o=(a(67294),a(3905)),i=(a(24928),a(90351)),r=a(22004),l=a(39960),s=(a(44996),a(23612));const u={},d="Quest Pro",p={unversionedId:"hardware/quest-pro",id:"hardware/quest-pro",title:"Quest Pro",description:"The Meta Quest Pro provides eye gaze tracking, detailed eye expression tracking, and face tracking.",source:"@site/docs/hardware/quest-pro.mdx",sourceDirName:"hardware",slug:"/hardware/quest-pro",permalink:"/docs/hardware/quest-pro",draft:!1,editUrl:"https://github.com/VRCFaceTracking/docs/edit/master/docs/hardware/quest-pro.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Pimax",permalink:"/docs/hardware/pimax"},next:{title:"Varjo",permalink:"/docs/hardware/varjo"}},c={},h=[{value:"Why is this setup required?",id:"why-is-this-setup-required",level:2},{value:"Setup",id:"setup",level:2},{value:"Enable Eye and Face Tracking on the Headset",id:"enable-eye-and-face-tracking-on-the-headset",level:3},{value:"Oculus Link/Airlink Setup",id:"oculus-linkairlink-setup",level:3},{value:"ALXR Setup",id:"alxr-setup",level:3},{value:"ALVR Setup",id:"alvr-setup",level:3},{value:"Virtual Desktop Setup",id:"virtual-desktop-setup",level:3},{value:"SteamLink Setup",id:"steamlink-setup",level:3},{value:"Modules",id:"modules",level:2},{value:"Tips and Tricks",id:"tips-and-tricks",level:2},{value:"Using Sidequest to Side-load Quest Apps",id:"using-sidequest-to-side-load-quest-apps",level:3},{value:"Aligning Play Spaces with SteamVR Lighthouse-tracked Devices",id:"aligning-play-spaces-with-steamvr-lighthouse-tracked-devices",level:3},{value:"Using Index Controllers with the Quest Pro with Link/Airlink",id:"using-index-controllers-with-the-quest-pro-with-linkairlink",level:3},{value:"Using Index Controllers with the Quest Pro with Virtual Desktop",id:"using-index-controllers-with-the-quest-pro-with-virtual-desktop",level:3},{value:"Using Index Controllers with the Quest Pro with ALVR/ALXR",id:"using-index-controllers-with-the-quest-pro-with-alvralxr",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"NO MODULES LOADED / Stuck on "Initializing Modules"",id:"no-modules-loaded--stuck-on-initializing-modules",level:3},{value:"General Problems",id:"general-problems",level:3}],m={toc:h},k="wrapper";function g(e){let{components:t,...u}=e;return(0,o.kt)(k,(0,n.Z)({},m,u,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"quest-pro"},"Quest Pro"),(0,o.kt)("p",null,"The Meta Quest Pro provides eye gaze tracking, detailed eye expression tracking, and face tracking.\nAll eye and face tracking hardware is internal to the device (no additional hardware setup required).\nAll eye and face tracking data is accessed via Meta\u2019s Face and Eye OpenXR extensions.\nThere is currently no way for VRCFT to simultaneously extract data from the headset and send eye and face tracking to the Quest version of VRChat, so the following solutions are only for PCVR.\nPreviously, a beta version of the native VRChat Quest client included built in eye tracking support without the need for VRCFaceTracking. This version is discontinued and is no longer available."),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"The Quest Pro has been shown to be ",(0,o.kt)("em",{parentName:"p"},"extremely")," susceptable to sweat damage.\nThere have been a practically significant number of users who have experienced the exact same failure mode\nof Eye-tracking not working after sweat ingress.\nIf you plan on exercising, dancing, or doing other sweat-inducing activities,\nplease take extra precautions against having sweat or other liquids reach the front part of the headset.")),(0,o.kt)("h2",{id:"why-is-this-setup-required"},"Why is this setup required?"),(0,o.kt)("p",null,"The Quest Pro provides developers with both eye and face tracking data from a single, contained device, making it easy for native Quest developers to incorporate.\nHowever, having it only accessible through Meta\u2019s Oculus OpenXR extensions means there must be an OpenXR application using the Oculus runtime running somewhere.\nDifficulty of the setup process depends on the desired PCVR connection method. "),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"setup"},"Setup"),(0,o.kt)("p",null,"The basic Quest Pro setup flow:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enable-eye-and-face-tracking-on-the-headset"},"Enable Eye and Face Tracking on the Headset")),(0,o.kt)("li",{parentName:"ol"},"Set up desired PCVR connection method"),(0,o.kt)("li",{parentName:"ol"},"Install corresponding VRCFT module")),(0,o.kt)("p",null,"The Quest Pro currently has ",(0,o.kt)("strong",{parentName:"p"},"5")," readily available face-tracking compatible PCVR connection methods, listed in no particular order:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#oculus-linkairlink-setup"},"Oculus Link/Airlink")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#alxr-setup"},"ALXR")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#alvr-setup"},"ALVR")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#virtual-desktop-setup"},"Virtual Desktop")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#steamlink-setup"},"SteamLink"))),(0,o.kt)("p",null,'Oculus Link/Airlink is Meta\u2019s own PCVR streaming solution, and is generally straight-forward to set up (the PCVR part, not the face tracking part) and network stable, but also is limited in customization.\nALXR/ALVR are open-source projects and thus has many for features and customizability in the PCVR connection as compared to Airlink, but also may have more bugs, quirks, and generally may be harder to use.\nVirtual Desktop is commonly seen as the "best" PCVR streaming solution, but it is not ',(0,o.kt)("em",{parentName:"p"},"free"),", unlike all the other options.\nSteamLink is Valve's (free) PCVR steaming solution meant specifically for using Quest headsets with SteamVR. "),(0,o.kt)("p",null,"If you need a recommendation for what to use for PCVR streaming:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"If you don't want to spend money and want to connect ",(0,o.kt)("em",{parentName:"li"},"wirelessly"),": you should start with ",(0,o.kt)("a",{parentName:"li",href:"#steamlink-setup"},(0,o.kt)("strong",{parentName:"a"},"SteamLink"))," as it has the easiest and most straightfoward setup."),(0,o.kt)("li",{parentName:"ul"},"If you don't mind spending money: you should use ",(0,o.kt)("a",{parentName:"li",href:"#virtual-desktop-setup"},(0,o.kt)("strong",{parentName:"a"},"Virtual Desktop"))," for ease of use and additional features."),(0,o.kt)("li",{parentName:"ul"},"If you must use a wired (USB) connection: you should start with ",(0,o.kt)("a",{parentName:"li",href:"#oculus-linkairlink-setup"},(0,o.kt)("strong",{parentName:"a"},"Oculus Link/Airlink")),". ")),(0,o.kt)("p",null,'With any option, the user is expected to have the VR PC and the Quest Pro on the same network, with the PC ideally connected to the network via ethernet cable (for wireless PCVR),\nor Quest Pro connected to the PC with a high-quality USB 3.0+ cable (for "wired" PCVR, Virtual Desktop and SteamLink excluded).\nYou can learn more about improving your Quest PCVR streaming experience with the many guides available online.'),(0,o.kt)("h3",{id:"enable-eye-and-face-tracking-on-the-headset"},"Enable Eye and Face Tracking on the Headset"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},'Open up the Settings in your Quest Pro headset, and navigate to "Movement Settings"'),(0,o.kt)("li",{parentName:"ol"},'Select the "Natural Facial Expressions" tab on the left, then Enable Natural Facial Expressions'),(0,o.kt)("li",{parentName:"ol"},'Select the "Eye Tracking" tab on the left, then Enable Eye Tracking. If you haven\u2019t already, calibrate your eye tracking',(0,o.kt)("div",{style:{width:"60%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(99202).Z,alt:"Quest Pro Eye Tracking settings"})))),(0,o.kt)("h3",{id:"oculus-linkairlink-setup"},"Oculus Link/Airlink Setup"),(0,o.kt)("admonition",{type:"warning"},(0,o.kt)("p",{parentName:"admonition"},'Oculus version v60 changed "Developer Mode" for the headset to "Debug Mode", and may have reset the setting to off.\nIf you were using Link/Airlink before and after an update it is "suddenly" not working, make sure that "Debug Mode" in the Meta Quest app is enabled!')),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Oculus Link/Airlink Setup"),(0,o.kt)("p",null,'Prefer a video? Community member Ninka has graciously created another tutorial video for the Quest Pro and VRCFT 5.0+ that goes over the entire setup procedure,\nincluding the VRCFT module installation for the Oculus Link/Airlink module "Quest Pro OpenXR".'),(0,o.kt)("div",{class:"row",style:{display:"flex",justifyContent:"center",alignItems:"center"}},(0,o.kt)(r.Z,{controls:!0,url:"https://www.youtube.com/watch?v=Keh__Lw7dEk",mdxType:"ReactPlayer"})),(0,o.kt)(s.Z,{type:"info",mdxType:"Admonition"},(0,o.kt)("p",null,"Developer mode is only required if using Oculus Link/Airlink!")),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("a",{parentName:"p",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED")))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"CREATE DEVELOPER ACCOUNT AND ENABLE DEVELOPER MODE"),": "),(0,o.kt)("ol",{parentName:"li"},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"https://developer.oculus.com/sign-up/"},"Set up a Meta Oculus developer account"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"A developer account is ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("em",{parentName:"strong"},"necessary")),' (for now) as the eye and face OpenXR extensions are currently considered "developer features" if to be accessed ',(0,o.kt)("em",{parentName:"li"},"from the PC Oculus runtime"),'.\nIt is rather trivial to apply for and there is no check for being a "real organization".'))),(0,o.kt)("li",{parentName:"ol"},'Install the Oculus ("Meta Quest") app on mobile device (if it isn\u2019t already) and login with your (developer) Oculus account. Register your headset in the app.'),(0,o.kt)("li",{parentName:"ol"},"In the Oculus mobile App, tap Menu at the bottom right, then Devices. Select your Quest Pro, then go to ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings -> Developer Mode")," and set the ",(0,o.kt)("strong",{parentName:"li"},"Debug")," Mode switch to enabled.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Reboot the headset after enabling Debug Mode."),(0,o.kt)("li",{parentName:"ul"},'This setting was formerly called "Developer Mode" in software versions before v60. ')))),(0,o.kt)("div",{style:{width:"100%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(67608).Z,alt:"Quest Developer Mode in phone app"}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Install and start the ",(0,o.kt)("a",{parentName:"p",href:"https://www.oculus.com/download_app/?id=1582076955407037"},"Oculus PC application")," (if it isn't already).")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Follow setup instructions for logging in (with the same developer account created/used earlier to enable dev mode on the headset!) and adding your Quest Pro to ",(0,o.kt)("inlineCode",{parentName:"p"},"Devices"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"In the Oculus PC application, click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Settings")," in the left sidebar, then ",(0,o.kt)("inlineCode",{parentName:"p"},"General")," tab. Turn on ",(0,o.kt)("inlineCode",{parentName:"p"},"Unknown Sources"),", and set the ",(0,o.kt)("inlineCode",{parentName:"p"},"OpenXR Runtime")," to Oculus."))),(0,o.kt)("admonition",{type:"warning"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"SET THE OPENXR RUNTIME TO OCULUS"),". Do not forget to do this step!")),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(97053).Z,alt:"Oculus PC App General Tab"})),(0,o.kt)("ol",{start:6},(0,o.kt)("li",{parentName:"ol"},"Navigate to the ",(0,o.kt)("inlineCode",{parentName:"li"},"Beta")," tab. Enable ",(0,o.kt)("inlineCode",{parentName:"li"},"Developer Runtime Features"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"Eye tracking over Oculus Link"),", and ",(0,o.kt)("inlineCode",{parentName:"li"},"Natural Facial Expressions over Oculus Link"),".")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Note that ",(0,o.kt)("inlineCode",{parentName:"li"},"Passthrough over Oculus Link")," option ",(0,o.kt)("em",{parentName:"li"},"may")," cause issues and unless you are making or using PCVR apps that use Oculus passthrough, you should just leave this disabled."),(0,o.kt)("li",{parentName:"ul"},"Enable Public Test Channel only if you know you want to use some feature/fix the latest Public Test Channel (",(0,o.kt)("em",{parentName:"li"},"beta"),") software. Otherwise, it is better to stay off the PTC. ")),(0,o.kt)("admonition",{type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"If you do not see these options, you did not follow the previous steps correctly.")),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(95631).Z,alt:"Oculus PC app Beta Tab"})),(0,o.kt)("ol",{start:7},(0,o.kt)("li",{parentName:"ol"},"Proceed to ",(0,o.kt)("a",{parentName:"li",href:"#modules"},"Modules")," for compatible modules to use with Link/Airlink. "))),(0,o.kt)("h3",{id:"alxr-setup"},"ALXR Setup"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Using ALXR will require you to ",(0,o.kt)("a",{parentName:"p",href:"#using-sidequest-to-side-load-quest-apps"},"sideload applications to you Quest"))),(0,o.kt)("details",null,(0,o.kt)("summary",null,"ALXR Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},"Download and install the latest ALXR client ",(0,o.kt)("em",{parentName:"li"},"and server")," from the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/ALXR-nightly/releases"},"ALXR-nightly")," repository.\nIf this is your first time using ALXR, follow the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/ALVR/wiki/ALXR-Client#usage"},"Usage guide")," and ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/ALVR/wiki/ALXR-Client#android-all-flavors---questpicogenericetc"},"Android-specific client install instructions")),(0,o.kt)("li",{parentName:"ol"},"Install the ",(0,o.kt)("strong",{parentName:"li"},"ALXR Remote")," module from the VRCFaceTracking module repository."),(0,o.kt)("li",{parentName:"ol"},"Open the ",(0,o.kt)("inlineCode",{parentName:"li"},"ALXRModuleConfig.json")," found in the installed module directory.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"You may need to navigate to ",(0,o.kt)("inlineCode",{parentName:"li"},"C:\\Users\\[username]\\AppData\\Local\\Packages\\96ba052f-0948-44d8-86c4-a0212e4ae047_d7rcq4vxghz0r\\LocalCache\\Roaming\\VRCFaceTracking\\")," to find the module directory and config json."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/korejan/VRCFT-ALXR-Modules#module-settings"},"Learn more about the ALXR module configuration options")))),(0,o.kt)("li",{parentName:"ol"},"In ",(0,o.kt)("inlineCode",{parentName:"li"},"ALXRModuleConfig.json"),', in the "RemoteConfig" section set "ClientIpAddress" to the headset IP, this can be found in the ALVR server dashboard.',(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"If the client is being run on the same host as the server (e.g. alxr windows client), use localhost IP (default, ",(0,o.kt)("inlineCode",{parentName:"li"},"127.0.0.1"),") and set the server to TCP protocol."))),(0,o.kt)("li",{parentName:"ol"},"Restart VRCFT to reinitialize the ALXR Remote Module with the updated configuration."))),(0,o.kt)("h3",{id:"alvr-setup"},"ALVR Setup"),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Using ALVR will require you to ",(0,o.kt)("a",{parentName:"p",href:"#using-sidequest-to-side-load-quest-apps"},"sideload applications to you Quest"))),(0,o.kt)("details",null,(0,o.kt)("summary",null,"ALVR Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},"Install the ALVR ",(0,o.kt)("strong",{parentName:"li"},"Nightly")," streamer on the PC and ",(0,o.kt)("strong",{parentName:"li"},"Nightly")," client on the Quest Pro if you have not already.\nFollow the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/alvr-org/ALVR/wiki/Installation-guide#nightly"},"ALVR Install instructions")," if this is your first time using ALVR."),(0,o.kt)("li",{parentName:"ol"},"Launch ALVR streamer and set ",(0,o.kt)("inlineCode",{parentName:"li"},"Eye and face tracking")," to ",(0,o.kt)("inlineCode",{parentName:"li"},"VRCFaceTracking"),"."),(0,o.kt)("li",{parentName:"ol"},"Start the client on the Quest Pro and connect."),(0,o.kt)("li",{parentName:"ol"},"Install the ",(0,o.kt)("strong",{parentName:"li"},"ALVR Module")," from the VRCFaceTracking module repository."))),(0,o.kt)("h3",{id:"virtual-desktop-setup"},"Virtual Desktop Setup"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Make sure that your Virtual Desktop Quest app and PC streamer application are on version ",(0,o.kt)("strong",{parentName:"p"},"v1.29 or greater"),".\nIf they are completely up to date, this requirement should be satisfied. ")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Virtual Desktop Setup"),(0,o.kt)("p",null,"This following setup assumes that Virtual Desktop has already been purchased from the ",(0,o.kt)("strong",{parentName:"p"},"Quest Store")," in the headset and the Virtual Desktop Streamer PC-side app has been installed on the PC.\nPlease refer to Virtual Desktop's built-in setup instructions to get started with using Virtual Desktop."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},"In the Virtual Desktop app ",(0,o.kt)("em",{parentName:"li"},"on the headset"),', go to the "Streaming" tab, and enable the option ',(0,o.kt)("inlineCode",{parentName:"li"},"Forward face/eye tracking to PC"),(0,o.kt)("img",{alt:"Virtual Desktop Settings",src:a(14917).Z,width:"1008",height:"918"})),(0,o.kt)("li",{parentName:"ol"},"Start Virtual Desktop Streamer if you have not already and establish headset connection to the PC."),(0,o.kt)("li",{parentName:"ol"},"Proceed to ",(0,o.kt)("a",{parentName:"li",href:"#modules"},"Modules")," for compatible modules to use with Virtual Desktop. ")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"To let the Virtual Desktop VRCFT module properly initialize, make sure to start VRCFT with the Virtual Desktop module installed ",(0,o.kt)("em",{parentName:"p"},"after")," you start the Virtual Desktop Streamer program on the PC."))),(0,o.kt)("p",null,"Switching to Virtual Desktop Beta (when a beta is active) may let you use yet-to-be-released features.\nIn case there is a beta you would like to try, you can switch to the beta following the instructions in the dropdown"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"How To Switch to Virtual Desktop Beta"),(0,o.kt)("p",null," There are a few ways to change to Virtual Desktop Beta when a Beta is active. Meta constantly changes how to accomplish this so the fool-proof way is to just sideload the beta APK. "),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Change to the Beta channel on the Virtual Desktop Meta store page (while logged into your Meta Quest account). You will need to then update the Virtual Desktop app in your headset after this change. "),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(18377).Z,alt:"Changing to Beta on the Meta website"}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Change to the Beta channel in the Meta Quest phone app (while logged into your Meta Quest account). You will need to then update the Virtual Desktop app in your headset after this change.")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Install the beta APK manually. Grab the beta ",(0,o.kt)("inlineCode",{parentName:"p"},"VirtualDesktop.Android.Quest.apk")," (without the 1) from the Virtual Desktop release page and ",(0,o.kt)("a",{parentName:"p",href:"#using-sidequest-to-side-load-quest-apps"},"install it with SideQuest"),". You will need to uninstall the live version of Virtual Desktop from your Quest first. ")))),(0,o.kt)("h3",{id:"steamlink-setup"},"SteamLink Setup"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"SteamLink Setup"),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Do ",(0,o.kt)("strong",{parentName:"p"},"NOT")," change the OSC port settings in VRCFaceTracking for SteamLink!\nChanging either of them to 9015 ",(0,o.kt)("strong",{parentName:"p"},"WILL CAUSE PROBLEMS AND NOTHING WILL WORK"),".\nThose VRCFT port settings are for communication with ",(0,o.kt)("em",{parentName:"p"},"VRChat"),".")),(0,o.kt)("ol",{start:0},(0,o.kt)("li",{parentName:"ol"},"Follow Valve's official ",(0,o.kt)("a",{parentName:"li",href:"https://help.steampowered.com/en/faqs/view/0E2C-406B-9135-38A4"},"Setup instructions for SteamLink")," "),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-eye-and-face-tracking-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET HAS EYE AND FACE TRACKING ENABLED"))),(0,o.kt)("li",{parentName:"ol"},'Once connected to SteamVR, open the SteamVR menu, open VR Settings, and enable "Advanced Settings" by moving the toggle to "Show" in the bottom left.',(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(74016).Z,alt:"Navigating to the VR Settings tab"}))),(0,o.kt)("li",{parentName:"ol"},'Navigate to the Setting tab "Steam Link", and enable the following options:',(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Enable OSC"),(0,o.kt)("li",{parentName:"ul"},"Share eye tracking data to other apps on this PC via OSC"),(0,o.kt)("li",{parentName:"ul"},"Share face tracking data to other apps on this PC via OSC"))),(0,o.kt)("li",{parentName:"ol"},"Set the OSC output port to ",(0,o.kt)("inlineCode",{parentName:"li"},"9015 (CUSTOM: VRCFT, ETC.)"),(0,o.kt)("div",{style:{width:"75%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(61352).Z,alt:"Required settings for Face Tracking"}))),(0,o.kt)("li",{parentName:"ol"},"Proceed to ",(0,o.kt)("a",{parentName:"li",href:"#modules"},"Modules")," for the module to use with SteamLink. ")),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Do ",(0,o.kt)("strong",{parentName:"p"},"NOT")," change the OSC port settings in VRCFaceTracking for SteamLink!\nChanging either of them to 9015 ",(0,o.kt)("strong",{parentName:"p"},"WILL CAUSE PROBLEMS AND NOTHING WILL WORK"),".\nThose VRCFT port settings are for communication with ",(0,o.kt)("em",{parentName:"p"},"VRChat"),". "))),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"modules"},"Modules"),(0,o.kt)("p",null,"There are a total of ",(0,o.kt)("strong",{parentName:"p"},"6")," different VRCFT modules that can be used for the Quest Pro.\nThe links are to Module source repositories, for those interested in contributing and improving the modules.\nAll* modules are readily available for installation via the VRCFaceTracking built-in module registry.\n",(0,o.kt)("a",{parentName:"p",href:"/docs/intro/getting-started#installing-the-vrcfacetracking-module"},"Learn how to install modules from the module registry"),"."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"If you are using Oculus Link/Airlink, you have the options of:",(0,o.kt)("ol",{parentName:"li"},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/regzo2/VRCFaceTracking-QuestProOpenXR"},"Quest Pro OpenXR module"))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/korejan/VRCFT-ALXR-Modules"},"ALXR Local module"))))),(0,o.kt)("li",{parentName:"ul"},"If you are using ALXR, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/korejan/VRCFT-ALXR-Modules"},"ALXR Remote module")),"."),(0,o.kt)("li",{parentName:"ul"},"If you are using ALVR, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/alvr-org/VRCFT-ALVR"},"ALVR module")),"."),(0,o.kt)("li",{parentName:"ul"},"If you are using Virtual Desktop, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/guygodin/VirtualDesktop.VRCFaceTracking"},"Virtual Desktop module")),".",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Virtual Desktop v1.29.3 introduces support for Virtual Desktop's own OpenXR runtime VDXR.\n",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/korejan/VRCFT-ALXR-Modules"},"ALXR Local module"))," ",(0,o.kt)("em",{parentName:"li"},"can be used")," for VRCFT instead of the Virtual Desktop module if VDXR is set as the active runtime. "))),(0,o.kt)("li",{parentName:"ul"},"If you are using SteamLink, you will need to use the ",(0,o.kt)("strong",{parentName:"li"},(0,o.kt)("a",{parentName:"strong",href:"https://github.com/ykeara/LinkFT"},"SteamLink VRCFT Module")))),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"*The SteamVR Link module is not currently avaliable in the module registry and must be installed manually after downloading the module .zip from the module's ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ykeara/LinkFT/releases/latest"},"releases page"),".")),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"tips-and-tricks"},"Tips and Tricks"),(0,o.kt)("h3",{id:"using-sidequest-to-side-load-quest-apps"},"Using Sidequest to Side-load Quest Apps"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Install SideQuest (Advanced Installer) on your computer. ",(0,o.kt)("a",{parentName:"li",href:"https://sidequestvr.com/setup-howto"},"https://sidequestvr.com/setup-howto"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"The SideQuest application will have a built-in tutorial for the following steps."))),(0,o.kt)("li",{parentName:"ol"},"Connect your Quest Pro headset to your computer with a ",(0,o.kt)("em",{parentName:"li"},"data-transfer"),' USB cable.\nOnce connected you will be prompted to "Allow USB debugging" and "Allow File Access". Make sure to allow both.\n(You should also check the ',(0,o.kt)("em",{parentName:"li"},"Always allow from this computer")," box to prevent the message from popping up again later)"),(0,o.kt)("li",{parentName:"ol"},"Use SideQuest to install ",(0,o.kt)("inlineCode",{parentName:"li"},"alxr-client-quest.apk")," to your Quest Pro. Click the ",(0,o.kt)("em",{parentName:"li"},'"Install APK file from folder"')," button, then select the downloaded ",(0,o.kt)("inlineCode",{parentName:"li"},"alxr-client-quest.apk")," in the file prompt.",(0,o.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(8154).Z,alt:"How to install APKs in SideQuest"}))),(0,o.kt)("li",{parentName:"ol"},"SideQuest should have a green notification bar show up at the bottom saying the operation was successful.")),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"You may need to uninstall the previous version of the app you are trying to sideload if it exists and SideQuest fails the current app install.")),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},'In your Apps Library, you will need to set the category of shown apps to "Unknown Sources" to see the sideloaded application.\nYou will need to tap the Search bar first before you see the category filter dropdown.')),(0,o.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(5921).Z,alt:"Quest Library Unknown Sources"})),(0,o.kt)("h3",{id:"aligning-play-spaces-with-steamvr-lighthouse-tracked-devices"},"Aligning Play Spaces with SteamVR Lighthouse-tracked Devices"),(0,o.kt)("p",null,"To use Vive trackers or other SteamVR Lighthouse tracked devices with the Quest Pro, you'll need to use ",(0,o.kt)("strong",{parentName:"p"},"OpenVR-SpaceCalibrator"),".\nWhile the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/pushrax/OpenVR-SpaceCalibrator"},"original from pushrax"),' will work, many "Mixed VR" users have found the continous calibration forks\nto be generally better, such as ',(0,o.kt)("a",{parentName:"p",href:"https://github.com/bdunderscore/OpenVR-SpaceCalibrator/tree/continuous-cal"},"bdunderscore's fork"),", or more recently,\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/ArcticFox8515/OpenVR-SpaceCalibrator"},"ArcticFox8515's fork")," of bdunderscore's fork."),(0,o.kt)("p",null,"We would recommend using ArcticFox8515's fork for now as it is the most recent and improves upon the original. "),(0,o.kt)("h3",{id:"using-index-controllers-with-the-quest-pro-with-linkairlink"},"Using Index Controllers with the Quest Pro with Link/Airlink"),(0,o.kt)("p",null,"Download these ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/channels/849300336128032789/1033745772979699775/1056009844701806643"},"Powershell Scripts (Discord Link)")),(0,o.kt)("p",null,"To run, right-click the file -> ",(0,o.kt)("inlineCode",{parentName:"p"},'"Run with Powershell"')),(0,o.kt)("p",null,"These scripts will prevent Oculus Link from adding the Quest controllers to the SteamVR devices, allowing the use of Index controllers or any other controller of your choosing. "),(0,o.kt)("p",null,"You may have problems with running Powershell scripts downloaded from the internet (for good reason!). You can learn about ",(0,o.kt)("a",{parentName:"p",href:"https://adamtheautomator.com/run-powershell-script/"},"getting around Microsoft's default script security"),"."),(0,o.kt)("h3",{id:"using-index-controllers-with-the-quest-pro-with-virtual-desktop"},"Using Index Controllers with the Quest Pro with Virtual Desktop"),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Before"),' launching SteamVR from Virtual Desktop:\nIn the Virtual Desktop "Streaming" tab, untick the "Track controllers" option under "Advanced Options" in the Streaming tab.\nThis will prevent Virtual Desktop from adding the Quest controllers to the SteamVR devices, allowing the use of Index controllers or any other controller of your choosing. '),(0,o.kt)("div",{style:{width:"33%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(90509).Z,alt:"Virtual Desktop track controllers setting circled"})),(0,o.kt)("h3",{id:"using-index-controllers-with-the-quest-pro-with-alvralxr"},"Using Index Controllers with the Quest Pro with ALVR/ALXR"),(0,o.kt)("p",null,'The customizability of ALVR allows a few options in this regard. All following mentioned settings can be found in the "Headset" tab of the ALVR settings.'),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},'Option 1: Completely disable the Quest Pro controllers using the checkbox next to "Controllers"'),(0,o.kt)("li",{parentName:"ul"},'Option 2: Set the Controller emulation to "HTC Vive Tracker". This allows real controllers such as the Index Controllers to take precedence in SteamVR, and allow\nfor using the Quest Pro controllers for manual playspace calibration.')),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"troubleshooting"},"Troubleshooting"),(0,o.kt)("h3",{id:"no-modules-loaded--stuck-on-initializing-modules"},'NO MODULES LOADED / Stuck on "Initializing Modules"'),(0,o.kt)("p",null,"Whenever you see this, the cause is because the currently installed module failed to initialize (or you're not even giving enough time for the module to fail attempting to load...).\nSwitch to the VRCFT Output Log tab and find the relevant error message."),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Oculus Link/Airlink] Error in headset: ",(0,o.kt)("code",null,"com.oculus.bodyapiservice keeps stopping")),(0,o.kt)(i.gm,{cause:"You do not have developer mode enabled on both the PC Oculus program and for the headset from the Oculus phone app.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(l.Z,{to:"##oculus-linkairlink-setup",mdxType:"Link"},"the Link/Airlink setup"),", paying careful attention to all the steps.",(0,o.kt)("br",null),'Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that ',(0,o.kt)("b",null,"Debug Mode is switched on for the Quest Pro in the Oculus phone app"),". If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the ",(0,o.kt)(l.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center")," to verify/resolve developer account status.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to GetFaceExpressionWeightsFB"),(0,o.kt)(i.gm,{cause:"There is some permission in the setup that was not set correctly.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(l.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps.",(0,o.kt)("br",null),'Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that ',(0,o.kt)("b",null,"Debug Mode is switched on for the Quest Pro in the Oculus phone app"),". If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the ",(0,o.kt)(l.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center")," to verify/resolve developer account status.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create Face Tracker"),(0,o.kt)(i.gm,{cause:"There is some permission in the setup that was not set correctly or Quest Pro headset is not connected.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(l.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps.",(0,o.kt)("br",null),'Double-check that "Developer Runtime Features" is enabled in the Oculus PC program and that ',(0,o.kt)("b",null,"Debug Mode is switched on for the Quest Pro in the Oculus phone app"),". If you can't find these options, your Oculus/Meta account is not a Meta Quest Developer account, or may need to be re-verified as a Developer account. Log in to or sign up at the ",(0,o.kt)(l.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center")," to verify/resolve developer account status.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT!")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to get XrSystemID"),(0,o.kt)(i.gm,{cause:"There is some permission in the setup that was not set correctly or Quest Pro headset is not connected.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(l.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Make sure that your Quest Pro is *actively connected* (streaming content from PC and screens haven't gone to sleep) via Link/Airlink before starting VRCFT! Try starting VRCFT with the headset on, through the Oculus Dash desktop view.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create XrInstance"),(0,o.kt)(i.gm,{cause:"There is some required setting in the setup that was not set correctly.",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(l.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Make sure that your Quest Pro is *actively connected* (streaming content from PC and screens haven't gone to sleep) via Link/Airlink before starting VRCFT! Try starting VRCFT with the headset on, through the Oculus Dash desktop view.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create session and I am NOT using a laptop / eGPU"),(0,o.kt)(i.gm,{cause:"There is something preventing an OpenXR session from being created for the Quest Pro",mdxType:"TroubleShootTable"},(0,o.kt)("i",null,"Carefully")," re-run through ",(0,o.kt)(l.Z,{to:"#oculus-linkairlink-setup",mdxType:"Link"},"the setup"),", paying careful attention to all the steps. Doubly make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings.",(0,o.kt)("br",null),(0,o.kt)("br",null),"Make sure that your Quest Pro is *actively connected* (streaming content from PC and screens haven't gone to sleep) via Link/Airlink before starting VRCFT! Try starting VRCFT with the headset on, through the Oculus Dash desktop view. ")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Error: [QuestOpenXR] Failed to create session and I AM using a laptop / eGPU"),(0,o.kt)(i.gm,{cause:"There is something preventing an OpenXR session from being created for the Quest Pro, possibly related to Oculus trying to default init on laptop's iGPU",mdxType:"TroubleShootTable"},"Make sure that you have Oculus set as your OpenXR runtime in the Oculus Desktop app settings. Also make sure that your Quest Pro is actively connected via Link/Airlink before starting VRCFT.",(0,o.kt)("p",null," Try to turn off using integrated GPU through your laptop's BIOS or control center program."),(0,o.kt)("p",null,' Alternatively, use Windows Settings to force VRCFaceTracking to "High Performance" (use discrete GPU).\nOpen Windows Settings and navigate through System -> Display -> Graphics Settings (a small link under "Multiple Displays" section in Win10, or under "Related Settings" in Win11).'),(0,o.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,o.kt)("img",{src:a(2658).Z,alt:"Set Windows Custom Graphics Settings"}),(0,o.kt)("img",{src:a(4264).Z,alt:"Set Windows Custom Graphics Settings Windows 11"})))),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[QuestProTrackingModule] Information: Eye Tracking not supported"),(0,o.kt)(i.gm,{cause:"Developer (Debug) mode is not properly enabled.",mdxType:"TroubleShootTable"},'On software versions v60, this error seems to be associated with the "Debug Mode" toggle not being enabled for the headset. Use the Meta Quest phone app to enable Debug Mode for the Quest Pro headset, then reboot the headset. If the issue persists or the module seems to initialize but doesn\'t send any data, try logging out then back into your Meta account on both the headset (via phone app) and PC Oculus application.')),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Virtual Desktop] Error: [VirtualDesktop] Failed to open MemoryMappedFile. Make sure Virtual Desktop Streamer (v1.29 or later) is running."),(0,o.kt)(i.gm,{cause:"VRCFaceTracking was started before Virtual Desktop",mdxType:"TroubleShootTable"},"First, make sure both the Virtual Desktop app in the Quest and the Virtual Desktop streamer versions are at least v1.29.",(0,o.kt)("p",null," Close VRCFaceTracking, start Virtual Desktop Streamer, reopen VRCFaceTracking."),(0,o.kt)("p",null,' If VRCFaceTracking is started before SteamVR/VRChat is launched from Virtual Desktop, the output log may show a warning that "Tracking is not active".\nHowever, after launching SteamVR/VRChat (',(0,o.kt)("em",{parentName:"p"},"from Virtual Desktop"),') the Virtual Desktop module should log that "Tracking is now active!".'))),(0,o.kt)("h3",{id:"general-problems"},"General Problems"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Oculus Link/Airlink] I cannot see SteamVR because Oculus is stuck loading some random app"),(0,o.kt)(i.gm,{cause:"The nature of the way VRCFaceTracking must pull data from the Oculus OpenXR runtime from the PC is inherently hacky, effectively running 2 VR programs at once.",mdxType:"TroubleShootTable"},"If you started SteamVR first, you can simply switch back to SteamVR in the Oculus Dash. You can also try switching up the program startup sequence, starting VRCFaceTracking then SteamVR through the desktop Steam app (not through the Oculus Dash in the headset). Yet another solution is to use ",(0,o.kt)(l.Z,{to:"https://github.com/LibreQuest/OculusKiller",mdxType:"Link"},"OculusKiller")," to avoid dealing with the Oculus Dash entirely, though this has its own downsides.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[Oculus Link/Airlink] \"I'm ",(0,o.kt)("i",null,"not getting any visible errors anywhere"),' and the Module loads, but VRC only receives 0 values for all parameters (and VRC loaded a non-zero number of parameters from config)"'),(0,o.kt)(i.gm,{cause:"Meta Moment",mdxType:"TroubleShootTable"},"Try toggling the eye and face tracking enables in the headset settings, and restarting your headset completely. Logging out then back into the account in the PC Oculus application and headset may also help. You may also need to re-verify developer account settings if using Oculus Link/Airlink, as well as developer account permissions by logging into the ",(0,o.kt)(l.Z,{to:"https://developer.oculus.com/",mdxType:"Link"},"Meta Quest Developer Center"),".")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"[SteamLink] VRCFaceTracking crashes when I set the SteamVR OSC output port to 9015!"),(0,o.kt)(i.gm,{cause:"You changed one of VRCFaceTracking's communication ports to 9015",mdxType:"TroubleShootTable"},"Revert VRCFaceTracking's ports back to the defaults (9000 sending/9001 receiving). VRCFaceTracking uses these ports to communicate with VRChat and should not be changed. Communication with the SteamVR OSC data happens in the SteamLink module on port 9015, and this is ",(0,o.kt)("b",null,"handled internally by the module"),", not the VRCFaceTracking base program!")),(0,o.kt)("details",null,(0,o.kt)("summary",null,"My playspace calibration resets if I take off the headset"),(0,o.kt)(i.gm,{cause:"When the Quest headset enters sleep mode after detecting you have taken off the headset, it loses it's original reference space to which the SteamVR space was calibrated to.",mdxType:"TroubleShootTable"},"Download the ",(0,o.kt)(l.Z,{to:"https://developer.oculus.com/documentation/unity/ts-odh/",mdxType:"Link"},"Meta Quest Developer Hub")," and follow the instructions for ",(0,o.kt)("i",null,"Connect Headset to MQDH")," and ",(0,o.kt)("i",null,"Disable proximity sensor and guardian"),". This will prevent the headset from entering sleep, but does mean your headset stays fully active even if you take it off. Alternatively, use another PCVR streaming method that supports Stage Tracking (Virtual Desktop, ALXR, ALVR, SteamLink).")),(0,o.kt)("p",null,"Don't see your problem here? Think your problem might be unrelated to the module but something else? Take a look at the ",(0,o.kt)("a",{parentName:"p",href:"/docs/vrcft-software/vrcft"},"VRCFT software page")," or search in the ",(0,o.kt)(i.d9,{color:"#5763ee",mdxType:"TextColor"},"#hardware-software-help")," forum in the ",(0,o.kt)(i.xb,{to:"discord",mdxType:"CustomLink"}),"."))}g.isMDXComponent=!0},74016:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/SVRL-VRSettings-8dccae301cfc5c377eae4e5d31126e86.jpg"},67608:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/dev-mode-201721a5652d265e328f74576af544e6.png"},8154:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/hacks_sidequest-install-other-crop2-bbeee8b45c451c4dd5dc77bec474dc96.png"},95631:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/oculus_pc_app_beta-ad7c8e052a4f74f4eebbd2f7c2218d29.png"},97053:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/oculus_pc_app_general-d87b3a1f7b967baba62015a2f5480656.png"},99202:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/quest_pro_settings_eye_tracking-91e78e408ed238addd3094ac523f78a3.png"},5921:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/quest_pro_unknown_sources-fb11c4858acecd4c48c7091d12823342.png"},61352:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/steamlinksettings-669de3b2f523b11b6ecf33299aa3f087.png"},18377:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/virtual_desktop_beta_desktop-773ca5644a6cf197e3d5f4dfba4d058a.png"},90509:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/virtual_desktop_track_controllers-15f5b554121b8717dbee747bdf73794b.png"},4264:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/windows11_set_custom_graphics_settings-896801d8b4043ab2a915214eb9d3836c.png"},2658:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/windows_set_custom_graphics_settings-47a7ee2845b899252cc9593759294748.png"},82648:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/vrcft_installer-ee91e492bc58e5982831a43ad159fa6e.png"},14917:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/virtual_desktop_settings-fcf426e4175d02e60110fd58d9cbf36b.png"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.4a8c5255.js b/assets/js/runtime~main.8a80f5ee.js similarity index 99% rename from assets/js/runtime~main.4a8c5255.js rename to assets/js/runtime~main.8a80f5ee.js index 0f99cc4..001ec11 100644 --- a/assets/js/runtime~main.4a8c5255.js +++ b/assets/js/runtime~main.8a80f5ee.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,f,d,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=c,r.c=t,e=[],r.O=(a,f,d,b)=>{if(!f){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,d,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({8:"94cdf65b",53:"935f2afb",110:"66406991",180:"00acafcc",453:"30a24c52",510:"e76a9702",533:"b2b675dd",612:"3e7ef9d7",709:"e17fb23d",794:"9c621bb1",948:"8717b14a",1145:"3d79c6e6",1371:"a469b9f5",1477:"b2f554cd",1515:"6f3958aa",1539:"c95f31f0",1633:"031793e1",1713:"a7023ddc",1757:"3b2e60da",1769:"13f241c9",1779:"86d35b2b",1914:"d9f32620",2006:"7dd2beba",2089:"ab759d1d",2189:"1508da11",2267:"59362658",2362:"e273c56f",2366:"6d074e31",2535:"814f3328",2829:"de72990b",2886:"48d05b7b",3085:"1f391b9e",3089:"a6aa9e1f",3107:"2472126a",3205:"a80da1cf",3237:"1df93b7f",3514:"73664a40",3570:"109db3ed",3571:"ce150915",3608:"9e4087bc",3622:"d15fb719",3882:"65176001",4013:"01a85c17",4065:"17bf8f3a",4094:"f4970dd1",4143:"e1f1ada0",4155:"1f3e52e6",4223:"46a30586",4314:"fe59cd7d",4421:"89389da1",4521:"beefd863",4588:"52b3da19",4630:"b4ddcca4",4643:"9bc483d9",4835:"d50ec19f",5048:"33e9e96e",5167:"3c9c6824",5838:"1ef70998",5868:"953df672",6017:"ab0509ae",6103:"ccc49370",6385:"59b068d1",6391:"7c737ce8",6402:"5226b1f9",6797:"92d465d5",6811:"75d03d10",6873:"8ca2f860",6915:"199fe866",6938:"608ae6a4",6939:"bfefba03",7171:"fb9a9ae6",7178:"096bfee4",7273:"c4f6c404",7414:"393be207",7593:"ebe313fa",7645:"a7434565",7808:"d26c30b8",7918:"17896441",7920:"1a4e3797",7965:"98c7eb30",7994:"3a9e5957",8034:"801d5671",8096:"191d3d95",8212:"22f7ba3c",8271:"1c091541",8276:"2bb8f4e8",8391:"7b53d755",8403:"22f4b84f",8570:"bddeec7c",8610:"6875c492",8628:"4e5122b7",8636:"f4f34a3a",8686:"5b113c97",9003:"925b3f96",9035:"4c9e35b1",9334:"247783bb",9404:"339461dd",9514:"1be78505",9530:"53c73419",9638:"50941728",9642:"7661071f",9700:"e16015ca",9711:"8028ee58",9716:"f8b2394d",9728:"1408a326",9817:"14eb3368"}[e]||e)+"."+{8:"e147587b",53:"30ef4e8b",110:"93d4839b",180:"d35d5235",453:"11139f3f",510:"230b2ae6",533:"36dc92e3",612:"64d76b2f",709:"c8bf428e",794:"92a15a19",948:"305be625",1145:"0144e4ce",1371:"1f9bfa28",1477:"5476c84e",1515:"e205f92a",1539:"7e073f4a",1633:"b352461d",1713:"7b1be143",1757:"f962d31f",1769:"c03705b2",1779:"f5e4c1c4",1914:"456a8788",2006:"07a2118f",2089:"fca19cd8",2189:"758c5cbe",2267:"55b31773",2362:"eaf0219a",2366:"b8b2e7ff",2529:"08a542be",2535:"f5d11b78",2689:"52347921",2829:"2c2b5512",2886:"efbc1219",3085:"f0d19f45",3089:"d8ad3fc8",3107:"4a846a08",3205:"8373fac1",3237:"03db2137",3514:"7a5cf6a4",3570:"cbaaabe9",3571:"18607692",3608:"8debdbb5",3622:"a95e8faf",3882:"14e1763f",4013:"20804d1c",4065:"a97c09f3",4094:"d988784d",4143:"5e855b13",4155:"ebc05589",4223:"78dd0da0",4314:"7522a68e",4421:"4235f8c8",4521:"d7164e73",4588:"dc401e0c",4622:"3ebe9452",4630:"bb93fdf1",4643:"5043404a",4835:"d9e66ae0",4972:"550776df",5048:"365fbe08",5167:"95aec216",5838:"f163c55b",5868:"df2245b0",6017:"46143a92",6103:"1987f83c",6385:"2b6511b3",6391:"24555113",6402:"9a91824b",6797:"0297cc97",6811:"6ed0d540",6873:"b6903b8d",6915:"d8864b1d",6938:"f6e83769",6939:"4557fd29",6945:"7ecc2c2e",7171:"7fb91947",7178:"f8ea06d7",7273:"024da418",7414:"fe07734d",7593:"19fd215e",7645:"ac08b299",7808:"5227db2f",7918:"3b088ff4",7920:"7730dd74",7965:"05607311",7994:"fe32073e",8034:"85d037eb",8096:"81a66025",8212:"00ba768b",8271:"45f90499",8276:"c8aae7eb",8391:"ebd399ce",8403:"e712dcc0",8570:"8f5e6757",8610:"7a1c2efc",8628:"92bbe118",8636:"8a23e797",8686:"9130f781",8894:"24c8cd05",9003:"63c5f205",9035:"ca8009ae",9334:"13fb3acc",9404:"c23bd4ad",9514:"b03ad98a",9530:"8163b026",9638:"f3034e22",9642:"5fdbf8ab",9700:"5eafe01a",9711:"f3f68561",9716:"2bbafa85",9724:"1c4758ff",9728:"8b3672fd",9817:"9ca9d72f"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},b="vrcft-docs:",r.l=(e,a,f,c)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",50941728:"9638",59362658:"2267",65176001:"3882",66406991:"110","94cdf65b":"8","935f2afb":"53","00acafcc":"180","30a24c52":"453",e76a9702:"510",b2b675dd:"533","3e7ef9d7":"612",e17fb23d:"709","9c621bb1":"794","8717b14a":"948","3d79c6e6":"1145",a469b9f5:"1371",b2f554cd:"1477","6f3958aa":"1515",c95f31f0:"1539","031793e1":"1633",a7023ddc:"1713","3b2e60da":"1757","13f241c9":"1769","86d35b2b":"1779",d9f32620:"1914","7dd2beba":"2006",ab759d1d:"2089","1508da11":"2189",e273c56f:"2362","6d074e31":"2366","814f3328":"2535",de72990b:"2829","48d05b7b":"2886","1f391b9e":"3085",a6aa9e1f:"3089","2472126a":"3107",a80da1cf:"3205","1df93b7f":"3237","73664a40":"3514","109db3ed":"3570",ce150915:"3571","9e4087bc":"3608",d15fb719:"3622","01a85c17":"4013","17bf8f3a":"4065",f4970dd1:"4094",e1f1ada0:"4143","1f3e52e6":"4155","46a30586":"4223",fe59cd7d:"4314","89389da1":"4421",beefd863:"4521","52b3da19":"4588",b4ddcca4:"4630","9bc483d9":"4643",d50ec19f:"4835","33e9e96e":"5048","3c9c6824":"5167","1ef70998":"5838","953df672":"5868",ab0509ae:"6017",ccc49370:"6103","59b068d1":"6385","7c737ce8":"6391","5226b1f9":"6402","92d465d5":"6797","75d03d10":"6811","8ca2f860":"6873","199fe866":"6915","608ae6a4":"6938",bfefba03:"6939",fb9a9ae6:"7171","096bfee4":"7178",c4f6c404:"7273","393be207":"7414",ebe313fa:"7593",a7434565:"7645",d26c30b8:"7808","1a4e3797":"7920","98c7eb30":"7965","3a9e5957":"7994","801d5671":"8034","191d3d95":"8096","22f7ba3c":"8212","1c091541":"8271","2bb8f4e8":"8276","7b53d755":"8391","22f4b84f":"8403",bddeec7c:"8570","6875c492":"8610","4e5122b7":"8628",f4f34a3a:"8636","5b113c97":"8686","925b3f96":"9003","4c9e35b1":"9035","247783bb":"9334","339461dd":"9404","1be78505":"9514","53c73419":"9530","7661071f":"9642",e16015ca:"9700","8028ee58":"9711",f8b2394d:"9716","1408a326":"9728","14eb3368":"9817"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>d=e[a]=[f,b]));f.push(d[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var b=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,b,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n{"use strict";var e,a,f,d,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=c,r.c=t,e=[],r.O=(a,f,d,b)=>{if(!f){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,d,b]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,d){if(1&d&&(e=this(e)),8&d)return e;if("object"==typeof e&&e){if(4&d&&e.__esModule)return e;if(16&d&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};a=a||[null,f({}),f([]),f(f)];for(var t=2&d&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,r.d(b,c),b},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({8:"94cdf65b",53:"935f2afb",110:"66406991",180:"00acafcc",453:"30a24c52",510:"e76a9702",533:"b2b675dd",612:"3e7ef9d7",709:"e17fb23d",794:"9c621bb1",948:"8717b14a",1145:"3d79c6e6",1371:"a469b9f5",1477:"b2f554cd",1515:"6f3958aa",1539:"c95f31f0",1633:"031793e1",1713:"a7023ddc",1757:"3b2e60da",1769:"13f241c9",1779:"86d35b2b",1914:"d9f32620",2006:"7dd2beba",2089:"ab759d1d",2189:"1508da11",2267:"59362658",2362:"e273c56f",2366:"6d074e31",2535:"814f3328",2829:"de72990b",2886:"48d05b7b",3085:"1f391b9e",3089:"a6aa9e1f",3107:"2472126a",3205:"a80da1cf",3237:"1df93b7f",3514:"73664a40",3570:"109db3ed",3571:"ce150915",3608:"9e4087bc",3622:"d15fb719",3882:"65176001",4013:"01a85c17",4065:"17bf8f3a",4094:"f4970dd1",4143:"e1f1ada0",4155:"1f3e52e6",4223:"46a30586",4314:"fe59cd7d",4421:"89389da1",4521:"beefd863",4588:"52b3da19",4630:"b4ddcca4",4643:"9bc483d9",4835:"d50ec19f",5048:"33e9e96e",5167:"3c9c6824",5838:"1ef70998",5868:"953df672",6017:"ab0509ae",6103:"ccc49370",6385:"59b068d1",6391:"7c737ce8",6402:"5226b1f9",6797:"92d465d5",6811:"75d03d10",6873:"8ca2f860",6915:"199fe866",6938:"608ae6a4",6939:"bfefba03",7171:"fb9a9ae6",7178:"096bfee4",7273:"c4f6c404",7414:"393be207",7593:"ebe313fa",7645:"a7434565",7808:"d26c30b8",7918:"17896441",7920:"1a4e3797",7965:"98c7eb30",7994:"3a9e5957",8034:"801d5671",8096:"191d3d95",8212:"22f7ba3c",8271:"1c091541",8276:"2bb8f4e8",8391:"7b53d755",8403:"22f4b84f",8570:"bddeec7c",8610:"6875c492",8628:"4e5122b7",8636:"f4f34a3a",8686:"5b113c97",9003:"925b3f96",9035:"4c9e35b1",9334:"247783bb",9404:"339461dd",9514:"1be78505",9530:"53c73419",9638:"50941728",9642:"7661071f",9700:"e16015ca",9711:"8028ee58",9716:"f8b2394d",9728:"1408a326",9817:"14eb3368"}[e]||e)+"."+{8:"e147587b",53:"30ef4e8b",110:"93d4839b",180:"d35d5235",453:"11139f3f",510:"230b2ae6",533:"36dc92e3",612:"64d76b2f",709:"c8bf428e",794:"92a15a19",948:"305be625",1145:"0144e4ce",1371:"1f9bfa28",1477:"5476c84e",1515:"e205f92a",1539:"7e073f4a",1633:"b352461d",1713:"7b1be143",1757:"f962d31f",1769:"c03705b2",1779:"f5e4c1c4",1914:"456a8788",2006:"07a2118f",2089:"fca19cd8",2189:"758c5cbe",2267:"55b31773",2362:"eaf0219a",2366:"b8b2e7ff",2529:"08a542be",2535:"f5d11b78",2689:"52347921",2829:"2c2b5512",2886:"efbc1219",3085:"f0d19f45",3089:"d8ad3fc8",3107:"4a846a08",3205:"8373fac1",3237:"03db2137",3514:"7a5cf6a4",3570:"cbaaabe9",3571:"18607692",3608:"8debdbb5",3622:"a95e8faf",3882:"14e1763f",4013:"20804d1c",4065:"a97c09f3",4094:"d988784d",4143:"5e855b13",4155:"ebc05589",4223:"78dd0da0",4314:"7522a68e",4421:"4235f8c8",4521:"d7164e73",4588:"dc401e0c",4622:"3ebe9452",4630:"bb93fdf1",4643:"5043404a",4835:"d9e66ae0",4972:"550776df",5048:"365fbe08",5167:"95aec216",5838:"f163c55b",5868:"df2245b0",6017:"46143a92",6103:"1987f83c",6385:"2b6511b3",6391:"24555113",6402:"9a91824b",6797:"0297cc97",6811:"6ed0d540",6873:"b6903b8d",6915:"ed8510ce",6938:"f6e83769",6939:"4557fd29",6945:"7ecc2c2e",7171:"7fb91947",7178:"f8ea06d7",7273:"024da418",7414:"fe07734d",7593:"19fd215e",7645:"ac08b299",7808:"5227db2f",7918:"3b088ff4",7920:"7730dd74",7965:"05607311",7994:"fe32073e",8034:"85d037eb",8096:"81a66025",8212:"00ba768b",8271:"45f90499",8276:"c8aae7eb",8391:"ebd399ce",8403:"e712dcc0",8570:"8f5e6757",8610:"7a1c2efc",8628:"92bbe118",8636:"8a23e797",8686:"9130f781",8894:"24c8cd05",9003:"63c5f205",9035:"ca8009ae",9334:"13fb3acc",9404:"c23bd4ad",9514:"b03ad98a",9530:"8163b026",9638:"f3034e22",9642:"5fdbf8ab",9700:"5eafe01a",9711:"f3f68561",9716:"2bbafa85",9724:"1c4758ff",9728:"8b3672fd",9817:"9ca9d72f"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),d={},b="vrcft-docs:",r.l=(e,a,f,c)=>{if(d[e])d[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(s);var b=d[e];if(delete d[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.forEach((e=>e(f))),a)return a(f)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",50941728:"9638",59362658:"2267",65176001:"3882",66406991:"110","94cdf65b":"8","935f2afb":"53","00acafcc":"180","30a24c52":"453",e76a9702:"510",b2b675dd:"533","3e7ef9d7":"612",e17fb23d:"709","9c621bb1":"794","8717b14a":"948","3d79c6e6":"1145",a469b9f5:"1371",b2f554cd:"1477","6f3958aa":"1515",c95f31f0:"1539","031793e1":"1633",a7023ddc:"1713","3b2e60da":"1757","13f241c9":"1769","86d35b2b":"1779",d9f32620:"1914","7dd2beba":"2006",ab759d1d:"2089","1508da11":"2189",e273c56f:"2362","6d074e31":"2366","814f3328":"2535",de72990b:"2829","48d05b7b":"2886","1f391b9e":"3085",a6aa9e1f:"3089","2472126a":"3107",a80da1cf:"3205","1df93b7f":"3237","73664a40":"3514","109db3ed":"3570",ce150915:"3571","9e4087bc":"3608",d15fb719:"3622","01a85c17":"4013","17bf8f3a":"4065",f4970dd1:"4094",e1f1ada0:"4143","1f3e52e6":"4155","46a30586":"4223",fe59cd7d:"4314","89389da1":"4421",beefd863:"4521","52b3da19":"4588",b4ddcca4:"4630","9bc483d9":"4643",d50ec19f:"4835","33e9e96e":"5048","3c9c6824":"5167","1ef70998":"5838","953df672":"5868",ab0509ae:"6017",ccc49370:"6103","59b068d1":"6385","7c737ce8":"6391","5226b1f9":"6402","92d465d5":"6797","75d03d10":"6811","8ca2f860":"6873","199fe866":"6915","608ae6a4":"6938",bfefba03:"6939",fb9a9ae6:"7171","096bfee4":"7178",c4f6c404:"7273","393be207":"7414",ebe313fa:"7593",a7434565:"7645",d26c30b8:"7808","1a4e3797":"7920","98c7eb30":"7965","3a9e5957":"7994","801d5671":"8034","191d3d95":"8096","22f7ba3c":"8212","1c091541":"8271","2bb8f4e8":"8276","7b53d755":"8391","22f4b84f":"8403",bddeec7c:"8570","6875c492":"8610","4e5122b7":"8628",f4f34a3a:"8636","5b113c97":"8686","925b3f96":"9003","4c9e35b1":"9035","247783bb":"9334","339461dd":"9404","1be78505":"9514","53c73419":"9530","7661071f":"9642",e16015ca:"9700","8028ee58":"9711",f8b2394d:"9716","1408a326":"9728","14eb3368":"9817"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,f)=>{var d=r.o(e,a)?e[a]:void 0;if(0!==d)if(d)f.push(d[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var b=new Promise(((f,b)=>d=e[a]=[f,b]));f.push(d[2]=b);var c=r.p+r.u(a),t=new Error;r.l(c,(f=>{if(r.o(e,a)&&(0!==(d=e[a])&&(e[a]=void 0),d)){var b=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,d[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var d,b,c=f[0],t=f[1],o=f[2],n=0;if(c.some((a=>0!==e[a]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(a&&a(f);n