diff --git a/404.html b/404.html index a851fa49..af5367eb 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/quest_pro_settings_eye_tracking-91e78e408ed238addd3094ac523f78a3.png b/assets/images/quest_pro_settings_eye_tracking-91e78e408ed238addd3094ac523f78a3.png new file mode 100644 index 00000000..ec54db93 Binary files /dev/null and b/assets/images/quest_pro_settings_eye_tracking-91e78e408ed238addd3094ac523f78a3.png differ diff --git a/assets/images/virtual_desktop_settings-fcf426e4175d02e60110fd58d9cbf36b.png b/assets/images/virtual_desktop_settings-fcf426e4175d02e60110fd58d9cbf36b.png new file mode 100644 index 00000000..130049af Binary files /dev/null and b/assets/images/virtual_desktop_settings-fcf426e4175d02e60110fd58d9cbf36b.png differ diff --git a/assets/images/windows11_set_custom_graphics_settings-896801d8b4043ab2a915214eb9d3836c.png b/assets/images/windows11_set_custom_graphics_settings-896801d8b4043ab2a915214eb9d3836c.png new file mode 100644 index 00000000..904dc2b3 Binary files /dev/null and b/assets/images/windows11_set_custom_graphics_settings-896801d8b4043ab2a915214eb9d3836c.png differ diff --git a/assets/images/windows_set_custom_graphics_settings-47a7ee2845b899252cc9593759294748.png b/assets/images/windows_set_custom_graphics_settings-47a7ee2845b899252cc9593759294748.png new file mode 100644 index 00000000..31bc49a4 Binary files /dev/null and b/assets/images/windows_set_custom_graphics_settings-47a7ee2845b899252cc9593759294748.png differ diff --git a/assets/images/windows_set_custom_graphics_settings-73bffe242c191a1a7ee29efb9d898aea.png b/assets/images/windows_set_custom_graphics_settings-73bffe242c191a1a7ee29efb9d898aea.png deleted file mode 100644 index b1c76cd5..00000000 Binary files a/assets/images/windows_set_custom_graphics_settings-73bffe242c191a1a7ee29efb9d898aea.png and /dev/null differ diff --git a/assets/js/1408a326.a9e94f62.js b/assets/js/1408a326.8b3672fd.js similarity index 82% rename from assets/js/1408a326.a9e94f62.js rename to assets/js/1408a326.8b3672fd.js index cb8d83db..2dc3ef69 100644 --- a/assets/js/1408a326.a9e94f62.js +++ b/assets/js/1408a326.8b3672fd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkvrcft_docs=self.webpackChunkvrcft_docs||[]).push([[9728],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||l;return a?r.createElement(h,o(o({ref:t},c),{},{components:a})):r.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{a.d(t,{Z:()=>c});var r=a(87462),n=a(67294),l=a(34334),o=a(95999),i=a(86668),s=a(39960);const u={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function c(e){let{as:t,id:a,...c}=e;const{navbar:{hideOnScroll:d}}=(0,i.L)();if("h1"===t||!a)return n.createElement(t,(0,r.Z)({},c,{id:void 0}));const p=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:a});return n.createElement(t,(0,r.Z)({},c,{className:(0,l.Z)("anchor",d?u.anchorWithHideOnScrollNavbar:u.anchorWithStickyNavbar,c.className),id:a}),c.children,n.createElement(s.Z,{className:"hash-link",to:`#${a}`,"aria-label":p,title:p},"\u200b"))}},85162:(e,t,a)=>{a.d(t,{Z:()=>o});var r=a(67294),n=a(34334);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return r.createElement("div",{role:"tabpanel",className:(0,n.Z)(l.tabItem,o),hidden:a},t)}},74866:(e,t,a)=>{a.d(t,{Z:()=>w});var r=a(87462),n=a(67294),l=a(34334),o=a(12466),i=a(16550),s=a(91980),u=a(67392),c=a(50012);function d(e){return function(e){return n.Children.map(e,(e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:r,default:n}}=e;return{value:t,label:a,attributes:r,default:n}}))}function p(e){const{values:t,children:a}=e;return(0,n.useMemo)((()=>{const e=t??d(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:a}=e;const r=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(l),(0,n.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(r.location.search);t.set(l,e),r.replace({...r.location,search:t.toString()})}),[l,r])]}function k(e){const{defaultValue:t,queryString:a=!1,groupId:r}=e,l=p(e),[o,i]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=a.find((e=>e.default))??a[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[s,u]=h({queryString:a,groupId:r}),[d,k]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,l]=(0,c.Nk)(a);return[r,(0,n.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:r}),f=(()=>{const e=s??d;return m({value:e,tabValues:l})?e:null})();(0,n.useLayoutEffect)((()=>{f&&i(f)}),[f]);return{selectedValue:o,selectValue:(0,n.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),k(e)}),[u,k,l]),tabValues:l}}var f=a(72389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:a,selectedValue:i,selectValue:s,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),p=e=>{const t=e.currentTarget,a=c.indexOf(t),r=u[a].value;r!==i&&(d(t),s(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const a=c.indexOf(e.currentTarget)+1;t=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(e.currentTarget)-1;t=c[a]??c[c.length-1];break}}t?.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:o}=e;return n.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},o,{className:(0,l.Z)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":i===t})}),a??t)})))}function v(e){let{lazy:t,children:a,selectedValue:r}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===r));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function y(e){const t=k(e);return n.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},n.createElement(b,(0,r.Z)({},e,t)),n.createElement(v,(0,r.Z)({},e,t)))}function w(e){const t=(0,f.Z)();return n.createElement(y,(0,r.Z)({key:String(t)},e))}},65130:(e,t,a)=>{a.d(t,{b:()=>o,k:()=>i});var r=a(67294),n=a(902);const l=r.createContext(null);function o(e){let{children:t,content:a}=e;const n=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(a);return r.createElement(l.Provider,{value:n},t)}function i(){const e=(0,r.useContext)(l);if(null===e)throw new n.i6("DocProvider");return e}},24928:(e,t,a)=>{a.d(t,{Ue:()=>u,xc:()=>i});var r=a(67294),n=a(39960),l=a(92503),o=a(90512);function i(e){let{name:t,url:a,description:o}=e;return r.createElement("div",{className:"col col--6 margin-bottom--lg"},r.createElement(n.Z,{class:"card padding--lg cardContainer_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module",to:a},r.createElement(l.Z,{as:"h2",class:"text--truncate cardTitle_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},t),r.createElement("p",{class:"text--truncate cardDescription_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},o)))}function s(e){let{name:t,image:a,url:i,description:s}=e;return r.createElement("div",{className:"col col--6 margin-bottom--lg"},r.createElement("div",{className:(0,o.Z)("card")},r.createElement("div",{className:(0,o.Z)("card__image")},r.createElement(n.Z,{to:i},r.createElement("img",{src:a,alt:`${t}'s image`}))),r.createElement("div",{className:"card__body"},r.createElement(l.Z,{as:"h3"},t),r.createElement("p",null,s)),r.createElement("div",{className:"card__footer"},r.createElement("div",{className:"button-group button-group--block"},r.createElement(n.Z,{className:"button button--secondary",to:i},"Download")))))}function u(){return r.createElement("div",{class:"row",style:{display:"flex",justifyContent:"center",alignItems:"center"}},r.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:()=>o,d9:()=>u,gm:()=>s,xb:()=>i,y$:()=>c});var r=a(65130),n=a(67294),l=a(52263);function o(e){let{children:t}=e;const{metadata:a}=(0,r.k)(),{editUrl:l}=a;return n.createElement("a",{href:l,target:"_blank",rel:"noopener noreferrer"},t)}function i(e){let{children:t,to:a,append:r=""}=e;const{siteConfig:o}=(0,l.Z)(),i=o.customFields[a.toLowerCase()];return n.createElement("a",{href:i.href+r,target:"_blank",rel:"noopener noreferrer"},t??i.label)}function s(e){let{children:t,cause:a}=e;return n.createElement("div",null,n.createElement("table",null,n.createElement("tbody",null,n.createElement("tr",null,n.createElement("td",null,n.createElement("strong",null,"Cause")),n.createElement("td",{style:{textAlign:"left",width:"100vh"}},a)),n.createElement("tr",null,n.createElement("td",null,n.createElement("strong",null,"Solution")),n.createElement("td",{style:{textAlign:"left",width:"100vh"}},t)))))}const u=e=>{let{children:t,color:a}=e;return n.createElement("span",{style:{color:a}},t)},c=e=>{let{children:t,color:a}=e;return n.createElement("span",{style:{backgroundColor:a,borderRadius:"2px",color:"#fff",padding:"0.2rem"}},t)}},48526:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>T,contentTitle:()=>y,default:()=>N,frontMatter:()=>v,metadata:()=>w,toc:()=>C});var r=a(87462),n=(a(67294),a(3905)),l=a(24928),o=a(74866),i=a(85162),s=a(90351),u=a(39960);const c={toc:[]},d="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("table",null,(0,n.kt)("thead",null,(0,n.kt)("tr",null,(0,n.kt)("th",null,"Manufacturer"),(0,n.kt)("th",null,"Headset"))),(0,n.kt)("tbody",null,(0,n.kt)("tr",null,(0,n.kt)("td",null,"HTC VIVE"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/VIVE/vpe",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Vive Pro Eye"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"HTC VIVE"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/VIVE/focus3",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Vive Focus 3 (with Face/Eye Tracking Add-ons)"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Meta"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/quest-pro",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Quest Pro"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Varjo"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/varjo",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Varjo Aero / Varjo XR-3 / Varjo VR-3"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Pico"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/pico4pe",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Pico 4 Pro / Enterprise"))))))}p.isMDXComponent=!0;const m={toc:[]},h="wrapper";function k(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("table",null,(0,n.kt)("thead",null,(0,n.kt)("tr",null,(0,n.kt)("th",null,"Manufacturer"),(0,n.kt)("th",null,"Hardware"))),(0,n.kt)("tbody",null,(0,n.kt)("tr",null,(0,n.kt)("td",null,"HTC VIVE"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/VIVE/face-tracker",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Vive Facial Tracker"))))))}k.isMDXComponent=!0;const f={toc:[]},g="wrapper";function b(e){let{components:t,...a}=e;return(0,n.kt)(g,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("table",null,(0,n.kt)("thead",null,(0,n.kt)("tr",null,(0,n.kt)("th",null,"Manufacturer"),(0,n.kt)("th",null,"Hardware"))),(0,n.kt)("tbody",null,(0,n.kt)("tr",null,(0,n.kt)("td",null,"Apple"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/iphone-arkit",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"iPhone"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Android"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/meowface",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Android Phone (MeowFace App)"))))))}b.isMDXComponent=!0;const v={sidebar_position:2},y="\ud83d\udee0\ufe0f Getting Started",w={unversionedId:"intro/getting-started",id:"intro/getting-started",title:"\ud83d\udee0\ufe0f Getting Started",description:"Follow this guide to setup your face-tracking hardware and start sending face tracking data to VRChat.",source:"@site/docs/intro/getting-started.mdx",sourceDirName:"intro",slug:"/intro/getting-started",permalink:"/docs/intro/getting-started",draft:!1,editUrl:"https://github.com/VRCFaceTracking/docs/edit/master/docs/intro/getting-started.mdx",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/docs/intro/"},next:{title:"VRCFT Software",permalink:"/docs/category/vrcft-software"}},T={},C=[{value:"Overview",id:"overview",level:2},{value:"Supported Hardware List",id:"supported-hardware-list",level:2},{value:"Detailed Setup guide",id:"detailed-setup-guide",level:2},{value:"0\ufe0f Check Compatibility",id:"0\ufe0f-check-compatibility",level:3},{value:"1\ufe0f Download and Install VRCFaceTracking",id:"1\ufe0f-download-and-install-vrcfacetracking",level:3},{value:"2\ufe0f Setup Hardware",id:"2\ufe0f-setup-hardware",level:3},{value:"Installing the VRCFaceTracking Module",id:"installing-the-vrcfacetracking-module",level:4},{value:"3\ufe0f Enable OSC In VRChat",id:"3\ufe0f-enable-osc-in-vrchat",level:3},{value:"4\ufe0f Test with a Public VRCFT Avatar",id:"4\ufe0f-test-with-a-public-vrcft-avatar",level:3},{value:"Avatar Setup",id:"avatar-setup",level:2}],E={toc:C},V="wrapper";function N(e){let{components:t,...u}=e;return(0,n.kt)(V,(0,r.Z)({},E,u,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"\ufe0f-getting-started"},"\ud83d\udee0\ufe0f Getting Started"),(0,n.kt)("p",null,"Follow this guide to setup your face-tracking hardware and start sending face tracking data to VRChat."),(0,n.kt)("admonition",{type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"Make sure your headset or hardware is supported first!")),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Download and install ",(0,n.kt)("a",{parentName:"li",href:"/docs/vrcft-software/vrcft"},"VRCFaceTracking")),(0,n.kt)("li",{parentName:"ol"},"Follow the setup instructions for your headset/hardware"),(0,n.kt)("li",{parentName:"ol"},"Enable OSC In VRChat"),(0,n.kt)("li",{parentName:"ol"},"Swap into a ",(0,n.kt)("strong",{parentName:"li"},"VRCFT Compatible Avatar"))),(0,n.kt)("h2",{id:"supported-hardware-list"},"Supported Hardware List"),(0,n.kt)("p",null,"Click through the tabs to see all the different currently supported hardware!"),(0,n.kt)(o.Z,{defaultValue:"vr-headset",values:[{label:"VR Headset",value:"vr-headset"},{label:"VR Add-on",value:"addon"},{label:"Desktop",value:"desktop"}],mdxType:"Tabs"},(0,n.kt)(i.Z,{value:"vr-headset",mdxType:"TabItem"},(0,n.kt)(p,{mdxType:"HardwareTableVR"})),(0,n.kt)(i.Z,{value:"addon",mdxType:"TabItem"},(0,n.kt)(k,{mdxType:"HardwareTableAddon"})),(0,n.kt)(i.Z,{value:"desktop",mdxType:"TabItem"},(0,n.kt)(b,{mdxType:"HardwareTableDesktop"}))),(0,n.kt)("h2",{id:"detailed-setup-guide"},"Detailed Setup guide"),(0,n.kt)("h3",{id:"0\ufe0f-check-compatibility"},"0\ufe0f Check Compatibility"),(0,n.kt)("p",null,"If your headset or hardware isn't listed in the ",(0,n.kt)("a",{parentName:"p",href:"#supported-hardware-list"},"Supported Hardware List")," above, maybe consider adding support by creating a ",(0,n.kt)("a",{parentName:"p",href:"/docs/vrcft-software/modules/"},"VRCFT module"),"!"),(0,n.kt)("h3",{id:"1\ufe0f-download-and-install-vrcfacetracking"},"1\ufe0f Download and Install VRCFaceTracking"),(0,n.kt)("p",null,"Download the AppInstaller for VRCFaceTracking below, or go to the ",(0,n.kt)("a",{parentName:"p",href:"/docs/vrcft-software/vrcft"},"VRCFaceTracking program page")," to find alternative methods of installation."),(0,n.kt)(l.Ue,{mdxType:"VRCFTInstallerCard"}),(0,n.kt)("h3",{id:"2\ufe0f-setup-hardware"},"2\ufe0f Setup Hardware"),(0,n.kt)("p",null,"Follow the link to the hardware page for your headset or face-tracking hardware in the ",(0,n.kt)("a",{parentName:"p",href:"#supported-hardware-list"},"supported hardware table")," above.\nEvery headset or hardware requires some kind of preparation to be used with VRCFaceTracking, whether that be a Quest Pro to an Android Phone, so ",(0,n.kt)("strong",{parentName:"p"},"be sure to follow the setup instructions for the headset/hardware!")),(0,n.kt)("h4",{id:"installing-the-vrcfacetracking-module"},"Installing the VRCFaceTracking Module"),(0,n.kt)("p",null,"Each hardware page should also direct you to the corresponding module(s) to use.\nYou can download the module directly from the VRCFaceTracking application."),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Example Module Installation"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Go to the Module Registry Tab in VRCFaceTracking")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Select the module you want to install (your headset/hardware page will list the available option(s))")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},'Click the "Install" button'),(0,n.kt)("hr",{parentName:"li"}),(0,n.kt)("p",{parentName:"li"},'This example shows installation of the "QuestProOpenXRTrackingModule" for the Quest Pro headset.'),(0,n.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,n.kt)("img",{src:a(21744).Z,alt:"VRCFT Module Registry Page tutorial"}))))),(0,n.kt)("h3",{id:"3\ufe0f-enable-osc-in-vrchat"},"3\ufe0f Enable OSC In VRChat"),(0,n.kt)("p",null,'To be able to use VRCFT, the OSC feature must be enabled in VRChat.\nVRCFaceTracking will automatically set the game\'s OSC toggle setting to "Enabled" if it detects that it was not already, but you can (and should) enable it manually to avoid having to restart the game for the automatic switch to take effect.'),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Don't know how to enable OSC?"),(0,n.kt)("div",null,(0,n.kt)("div",null,(0,n.kt)("ol",null,(0,n.kt)("li",null," Open the in-game radial menu "),(0,n.kt)("li",null,' Navigate through "Options" \u27a1\ufe0f "OSC" '),(0,n.kt)("li",null,' Ensure that the "OSC Enabled" option is toggled on (white box towards the right) '))),(0,n.kt)("br",null),(0,n.kt)("img",{src:a(7015).Z,alt:"VRChat OSC Menu with OSC Enabled",style:{margin:"auto",display:"flex"}}))),(0,n.kt)("h3",{id:"4\ufe0f-test-with-a-public-vrcft-avatar"},"4\ufe0f Test with a Public VRCFT Avatar"),(0,n.kt)("p",null,"Visit some of the worlds listed in the pinned posts in the ",(0,n.kt)(s.d9,{color:"#5763ee",mdxType:"TextColor"},"#avatar-showoff")," channel in the ",(0,n.kt)(s.xb,{to:"discord",mdxType:"CustomLink"}),' to try out a few face tracking avatars.\nIf you have eye tracking, you can also test the VRChat "native" eye tracking on almost any Av3.0 avatar.'),(0,n.kt)("admonition",{title:"Avatar Compatibility",type:"info"},(0,n.kt)("p",{parentName:"admonition"},"At this time, VRChat does ",(0,n.kt)("strong",{parentName:"p"},"not")," have a native face tracking solution.\nAvatars must have been specifically ",(0,n.kt)("a",{parentName:"p",href:"#avatar-setup"},"set up")," for face tracking to work with VRCFaceTracking.\n",(0,n.kt)("strong",{parentName:"p"},"However, ",(0,n.kt)("em",{parentName:"strong"},"most")," VRChat Av3.0 Avatars should have basic eye tracking support as is."),"\nYou can learn more about how ",(0,n.kt)("a",{parentName:"p",href:"/docs/facetracking101/breakdown"},"face tracking in VRChat")," works if this is confusing.")),(0,n.kt)("h2",{id:"avatar-setup"},"Avatar Setup"),(0,n.kt)("p",null,"If you have a working hardware and software setup, or only want to get started with setting up ",(0,n.kt)("em",{parentName:"p"},"avatars")," for using with VRCFaceTracking, you should follow the ",(0,n.kt)("a",{parentName:"p",href:"../category/avatar-setup-guide"},"Avatar Setup Guide")))}N.isMDXComponent=!0},7015:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/vrc_osc_menu-0dfc15dc367fdd919dd613fba4889670.png"},82648:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/vrcft_installer-ee91e492bc58e5982831a43ad159fa6e.png"},21744:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/vrcft_module_registry_tutorial-3e0dac40976eb22d2e86c32ea912668b.png"},90512:(e,t,a)=>{function r(e){var t,a,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tn});const n=function(){for(var e,t,a=0,n="";a{a.d(t,{Zo:()=>c,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),u=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=u(a),m=n,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||l;return a?r.createElement(h,o(o({ref:t},c),{},{components:a})):r.createElement(h,o({ref:t},c))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:n,o[1]=i;for(var u=2;u{a.d(t,{Z:()=>c});var r=a(87462),n=a(67294),l=a(34334),o=a(95999),i=a(86668),s=a(39960);const u={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function c(e){let{as:t,id:a,...c}=e;const{navbar:{hideOnScroll:d}}=(0,i.L)();if("h1"===t||!a)return n.createElement(t,(0,r.Z)({},c,{id:void 0}));const p=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:a});return n.createElement(t,(0,r.Z)({},c,{className:(0,l.Z)("anchor",d?u.anchorWithHideOnScrollNavbar:u.anchorWithStickyNavbar,c.className),id:a}),c.children,n.createElement(s.Z,{className:"hash-link",to:`#${a}`,"aria-label":p,title:p},"\u200b"))}},85162:(e,t,a)=>{a.d(t,{Z:()=>o});var r=a(67294),n=a(34334);const l={tabItem:"tabItem_Ymn6"};function o(e){let{children:t,hidden:a,className:o}=e;return r.createElement("div",{role:"tabpanel",className:(0,n.Z)(l.tabItem,o),hidden:a},t)}},74866:(e,t,a)=>{a.d(t,{Z:()=>w});var r=a(87462),n=a(67294),l=a(34334),o=a(12466),i=a(16550),s=a(91980),u=a(67392),c=a(50012);function d(e){return function(e){return n.Children.map(e,(e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:a,attributes:r,default:n}}=e;return{value:t,label:a,attributes:r,default:n}}))}function p(e){const{values:t,children:a}=e;return(0,n.useMemo)((()=>{const e=t??d(a);return function(e){const t=(0,u.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,a])}function m(e){let{value:t,tabValues:a}=e;return a.some((e=>e.value===t))}function h(e){let{queryString:t=!1,groupId:a}=e;const r=(0,i.k6)(),l=function(e){let{queryString:t=!1,groupId:a}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:t,groupId:a});return[(0,s._X)(l),(0,n.useCallback)((e=>{if(!l)return;const t=new URLSearchParams(r.location.search);t.set(l,e),r.replace({...r.location,search:t.toString()})}),[l,r])]}function k(e){const{defaultValue:t,queryString:a=!1,groupId:r}=e,l=p(e),[o,i]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!m({value:t,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=a.find((e=>e.default))??a[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:l}))),[s,u]=h({queryString:a,groupId:r}),[d,k]=function(e){let{groupId:t}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,l]=(0,c.Nk)(a);return[r,(0,n.useCallback)((e=>{a&&l.set(e)}),[a,l])]}({groupId:r}),f=(()=>{const e=s??d;return m({value:e,tabValues:l})?e:null})();(0,n.useLayoutEffect)((()=>{f&&i(f)}),[f]);return{selectedValue:o,selectValue:(0,n.useCallback)((e=>{if(!m({value:e,tabValues:l}))throw new Error(`Can't select invalid tab value=${e}`);i(e),u(e),k(e)}),[u,k,l]),tabValues:l}}var f=a(72389);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:a,selectedValue:i,selectValue:s,tabValues:u}=e;const c=[],{blockElementScrollPositionUntilNextRender:d}=(0,o.o5)(),p=e=>{const t=e.currentTarget,a=c.indexOf(t),r=u[a].value;r!==i&&(d(t),s(r))},m=e=>{let t=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":{const a=c.indexOf(e.currentTarget)+1;t=c[a]??c[0];break}case"ArrowLeft":{const a=c.indexOf(e.currentTarget)-1;t=c[a]??c[c.length-1];break}}t?.focus()};return n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},t)},u.map((e=>{let{value:t,label:a,attributes:o}=e;return n.createElement("li",(0,r.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:e=>c.push(e),onKeyDown:m,onClick:p},o,{className:(0,l.Z)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":i===t})}),a??t)})))}function v(e){let{lazy:t,children:a,selectedValue:r}=e;const l=(Array.isArray(a)?a:[a]).filter(Boolean);if(t){const e=l.find((e=>e.props.value===r));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return n.createElement("div",{className:"margin-top--md"},l.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function y(e){const t=k(e);return n.createElement("div",{className:(0,l.Z)("tabs-container",g.tabList)},n.createElement(b,(0,r.Z)({},e,t)),n.createElement(v,(0,r.Z)({},e,t)))}function w(e){const t=(0,f.Z)();return n.createElement(y,(0,r.Z)({key:String(t)},e))}},65130:(e,t,a)=>{a.d(t,{b:()=>o,k:()=>i});var r=a(67294),n=a(902);const l=r.createContext(null);function o(e){let{children:t,content:a}=e;const n=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(a);return r.createElement(l.Provider,{value:n},t)}function i(){const e=(0,r.useContext)(l);if(null===e)throw new n.i6("DocProvider");return e}},24928:(e,t,a)=>{a.d(t,{Ue:()=>u,xc:()=>i});var r=a(67294),n=a(39960),l=a(92503),o=a(90512);function i(e){let{name:t,url:a,description:o}=e;return r.createElement("div",{className:"col col--6 margin-bottom--lg"},r.createElement(n.Z,{class:"card padding--lg cardContainer_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module",to:a},r.createElement(l.Z,{as:"h2",class:"text--truncate cardTitle_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},t),r.createElement("p",{class:"text--truncate cardDescription_node_modules-@docusaurus-theme-classic-lib-theme-DocCard-styles-module"},o)))}function s(e){let{name:t,image:a,url:i,description:s}=e;return r.createElement("div",{className:"col col--6 margin-bottom--lg"},r.createElement("div",{className:(0,o.Z)("card")},r.createElement("div",{className:(0,o.Z)("card__image")},r.createElement(n.Z,{to:i},r.createElement("img",{src:a,alt:`${t}'s image`}))),r.createElement("div",{className:"card__body"},r.createElement(l.Z,{as:"h3"},t),r.createElement("p",null,s)),r.createElement("div",{className:"card__footer"},r.createElement("div",{className:"button-group button-group--block"},r.createElement(n.Z,{className:"button button--secondary",to:i},"Download")))))}function u(){return r.createElement("div",{class:"row",style:{display:"flex",justifyContent:"center",alignItems:"center"}},r.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:()=>o,d9:()=>u,gm:()=>s,xb:()=>i,y$:()=>c});var r=a(65130),n=a(67294),l=a(52263);function o(e){let{children:t}=e;const{metadata:a}=(0,r.k)(),{editUrl:l}=a;return n.createElement("a",{href:l,target:"_blank",rel:"noopener noreferrer"},t)}function i(e){let{children:t,to:a,append:r=""}=e;const{siteConfig:o}=(0,l.Z)(),i=o.customFields[a.toLowerCase()];return n.createElement("a",{href:i.href+r,target:"_blank",rel:"noopener noreferrer"},t??i.label)}function s(e){let{children:t,cause:a}=e;return n.createElement("div",null,n.createElement("table",null,n.createElement("tbody",null,n.createElement("tr",null,n.createElement("td",null,n.createElement("strong",null,"Cause")),n.createElement("td",{style:{textAlign:"left",width:"100vh"}},a)),n.createElement("tr",null,n.createElement("td",null,n.createElement("strong",null,"Solution")),n.createElement("td",{style:{textAlign:"left",width:"100vh"}},t)))))}const u=e=>{let{children:t,color:a}=e;return n.createElement("span",{style:{color:a}},t)},c=e=>{let{children:t,color:a}=e;return n.createElement("span",{style:{backgroundColor:a,borderRadius:"2px",color:"#fff",padding:"0.2rem"}},t)}},48526:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>T,contentTitle:()=>y,default:()=>N,frontMatter:()=>v,metadata:()=>w,toc:()=>C});var r=a(87462),n=(a(67294),a(3905)),l=a(24928),o=a(74866),i=a(85162),s=a(90351),u=a(39960);const c={toc:[]},d="wrapper";function p(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,r.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("table",null,(0,n.kt)("thead",null,(0,n.kt)("tr",null,(0,n.kt)("th",null,"Manufacturer"),(0,n.kt)("th",null,"Headset"))),(0,n.kt)("tbody",null,(0,n.kt)("tr",null,(0,n.kt)("td",null,"HTC VIVE"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/VIVE/vpe",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Vive Pro Eye"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"HTC VIVE"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/VIVE/focus3",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Vive Focus 3 (with Face/Eye Tracking Add-ons)"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Meta"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/quest-pro",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Quest Pro"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Varjo"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/varjo",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Varjo Aero / Varjo XR-3 / Varjo VR-3"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Pico"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/pico4pe",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Pico 4 Pro / Enterprise"))))))}p.isMDXComponent=!0;const m={toc:[]},h="wrapper";function k(e){let{components:t,...a}=e;return(0,n.kt)(h,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("table",null,(0,n.kt)("thead",null,(0,n.kt)("tr",null,(0,n.kt)("th",null,"Manufacturer"),(0,n.kt)("th",null,"Hardware"))),(0,n.kt)("tbody",null,(0,n.kt)("tr",null,(0,n.kt)("td",null,"HTC VIVE"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/VIVE/face-tracker",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Vive Facial Tracker"))))))}k.isMDXComponent=!0;const f={toc:[]},g="wrapper";function b(e){let{components:t,...a}=e;return(0,n.kt)(g,(0,r.Z)({},f,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("table",null,(0,n.kt)("thead",null,(0,n.kt)("tr",null,(0,n.kt)("th",null,"Manufacturer"),(0,n.kt)("th",null,"Hardware"))),(0,n.kt)("tbody",null,(0,n.kt)("tr",null,(0,n.kt)("td",null,"Apple"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/iphone-arkit",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"iPhone"))),(0,n.kt)("tr",null,(0,n.kt)("td",null,"Android"),(0,n.kt)("td",null,(0,n.kt)(u.Z,{to:"../hardware/meowface",target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"Android Phone (MeowFace App)"))))))}b.isMDXComponent=!0;const v={sidebar_position:2},y="\ud83d\udee0\ufe0f Getting Started",w={unversionedId:"intro/getting-started",id:"intro/getting-started",title:"\ud83d\udee0\ufe0f Getting Started",description:"Follow this guide to setup your face-tracking hardware and start sending face tracking data to VRChat.",source:"@site/docs/intro/getting-started.mdx",sourceDirName:"intro",slug:"/intro/getting-started",permalink:"/docs/intro/getting-started",draft:!1,editUrl:"https://github.com/VRCFaceTracking/docs/edit/master/docs/intro/getting-started.mdx",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/docs/intro/"},next:{title:"VRCFT Software",permalink:"/docs/category/vrcft-software"}},T={},C=[{value:"Overview",id:"overview",level:2},{value:"Supported Hardware List",id:"supported-hardware-list",level:2},{value:"Detailed Setup guide",id:"detailed-setup-guide",level:2},{value:"0\ufe0f Check Compatibility",id:"0\ufe0f-check-compatibility",level:3},{value:"1\ufe0f Download and Install VRCFaceTracking",id:"1\ufe0f-download-and-install-vrcfacetracking",level:3},{value:"2\ufe0f Setup Hardware",id:"2\ufe0f-setup-hardware",level:3},{value:"Installing the VRCFaceTracking Module",id:"installing-the-vrcfacetracking-module",level:4},{value:"3\ufe0f Enable OSC In VRChat",id:"3\ufe0f-enable-osc-in-vrchat",level:3},{value:"4\ufe0f Test with a Public VRCFT Avatar",id:"4\ufe0f-test-with-a-public-vrcft-avatar",level:3},{value:"Avatar Setup",id:"avatar-setup",level:2}],E={toc:C},V="wrapper";function N(e){let{components:t,...u}=e;return(0,n.kt)(V,(0,r.Z)({},E,u,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"\ufe0f-getting-started"},"\ud83d\udee0\ufe0f Getting Started"),(0,n.kt)("p",null,"Follow this guide to setup your face-tracking hardware and start sending face tracking data to VRChat."),(0,n.kt)("admonition",{type:"caution"},(0,n.kt)("p",{parentName:"admonition"},"Make sure your headset or hardware is supported first!")),(0,n.kt)("h2",{id:"overview"},"Overview"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Download and install ",(0,n.kt)("a",{parentName:"li",href:"/docs/vrcft-software/vrcft"},"VRCFaceTracking")),(0,n.kt)("li",{parentName:"ol"},"Follow the setup instructions for your headset/hardware"),(0,n.kt)("li",{parentName:"ol"},"Enable OSC In VRChat"),(0,n.kt)("li",{parentName:"ol"},"Swap into a ",(0,n.kt)("strong",{parentName:"li"},"VRCFT Compatible Avatar"))),(0,n.kt)("h2",{id:"supported-hardware-list"},"Supported Hardware List"),(0,n.kt)("p",null,"Click through the tabs to see all the different currently supported hardware!"),(0,n.kt)(o.Z,{defaultValue:"vr-headset",values:[{label:"VR Headset",value:"vr-headset"},{label:"VR Add-on",value:"addon"},{label:"Desktop",value:"desktop"}],mdxType:"Tabs"},(0,n.kt)(i.Z,{value:"vr-headset",mdxType:"TabItem"},(0,n.kt)(p,{mdxType:"HardwareTableVR"})),(0,n.kt)(i.Z,{value:"addon",mdxType:"TabItem"},(0,n.kt)(k,{mdxType:"HardwareTableAddon"})),(0,n.kt)(i.Z,{value:"desktop",mdxType:"TabItem"},(0,n.kt)(b,{mdxType:"HardwareTableDesktop"}))),(0,n.kt)("h2",{id:"detailed-setup-guide"},"Detailed Setup guide"),(0,n.kt)("h3",{id:"0\ufe0f-check-compatibility"},"0\ufe0f Check Compatibility"),(0,n.kt)("p",null,"If your headset or hardware isn't listed in the ",(0,n.kt)("a",{parentName:"p",href:"#supported-hardware-list"},"Supported Hardware List")," above, maybe consider adding support by creating a ",(0,n.kt)("a",{parentName:"p",href:"/docs/vrcft-software/modules/"},"VRCFT module"),"!"),(0,n.kt)("h3",{id:"1\ufe0f-download-and-install-vrcfacetracking"},"1\ufe0f Download and Install VRCFaceTracking"),(0,n.kt)("p",null,"Download the AppInstaller for VRCFaceTracking below, or go to the ",(0,n.kt)("a",{parentName:"p",href:"/docs/vrcft-software/vrcft"},"VRCFaceTracking program page")," to find alternative methods of installation."),(0,n.kt)(l.Ue,{mdxType:"VRCFTInstallerCard"}),(0,n.kt)("h3",{id:"2\ufe0f-setup-hardware"},"2\ufe0f Setup Hardware"),(0,n.kt)("p",null,"Follow the link to the hardware page for your headset or face-tracking hardware in the ",(0,n.kt)("a",{parentName:"p",href:"#supported-hardware-list"},"supported hardware table")," above.\nEvery headset or hardware requires some kind of preparation to be used with VRCFaceTracking, whether that be a Quest Pro to an Android Phone, so ",(0,n.kt)("strong",{parentName:"p"},"be sure to follow the setup instructions for the headset/hardware!")),(0,n.kt)("h4",{id:"installing-the-vrcfacetracking-module"},"Installing the VRCFaceTracking Module"),(0,n.kt)("p",null,"Each hardware page should also direct you to the corresponding module(s) to use.\nYou can download the module directly from the VRCFaceTracking application."),(0,n.kt)("details",null,(0,n.kt)("summary",null,"How To Install From the VRCFT Module Registry"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Go to the Module Registry Tab in VRCFaceTracking")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Select the module you want to install (your headset/hardware page will list the available option(s))")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},'Click the "Install" button'),(0,n.kt)("hr",{parentName:"li"}),(0,n.kt)("p",{parentName:"li"},'This example shows installation of the "QuestProOpenXRTrackingModule" for the Quest Pro headset.'),(0,n.kt)("div",{style:{width:"90%",height:"auto",margin:"auto",display:"block"}},(0,n.kt)("img",{src:a(21744).Z,alt:"VRCFT Module Registry Page tutorial"}))))),(0,n.kt)("h3",{id:"3\ufe0f-enable-osc-in-vrchat"},"3\ufe0f Enable OSC In VRChat"),(0,n.kt)("p",null,'To be able to use VRCFT, the OSC feature must be enabled in VRChat.\nVRCFaceTracking will automatically set the game\'s OSC toggle setting to "Enabled" if it detects that it was not already, but you can (and should) enable it manually to avoid having to restart the game for the automatic switch to take effect.'),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Don't know how to enable OSC?"),(0,n.kt)("div",null,(0,n.kt)("div",null,(0,n.kt)("ol",null,(0,n.kt)("li",null," Open the in-game radial menu "),(0,n.kt)("li",null,' Navigate through "Options" \u27a1\ufe0f "OSC" '),(0,n.kt)("li",null,' Ensure that the "OSC Enabled" option is toggled on (white box towards the right) '))),(0,n.kt)("br",null),(0,n.kt)("img",{src:a(7015).Z,alt:"VRChat OSC Menu with OSC Enabled",style:{margin:"auto",display:"flex"}}))),(0,n.kt)("h3",{id:"4\ufe0f-test-with-a-public-vrcft-avatar"},"4\ufe0f Test with a Public VRCFT Avatar"),(0,n.kt)("p",null,"Visit some of the worlds listed in the pinned posts in the ",(0,n.kt)(s.d9,{color:"#5763ee",mdxType:"TextColor"},"#avatar-showoff")," channel in the ",(0,n.kt)(s.xb,{to:"discord",mdxType:"CustomLink"}),' to try out a few face tracking avatars.\nIf you have eye tracking, you can also test the VRChat "native" eye tracking on almost any Av3.0 avatar.'),(0,n.kt)("admonition",{title:"Avatar Compatibility",type:"info"},(0,n.kt)("p",{parentName:"admonition"},"At this time, VRChat does ",(0,n.kt)("strong",{parentName:"p"},"not")," have a native face tracking solution.\nAvatars must have been specifically ",(0,n.kt)("a",{parentName:"p",href:"#avatar-setup"},"set up")," for face tracking to work with VRCFaceTracking.\n",(0,n.kt)("strong",{parentName:"p"},"However, ",(0,n.kt)("em",{parentName:"strong"},"most")," VRChat Av3.0 Avatars should have basic eye tracking support as is."),"\nYou can learn more about how ",(0,n.kt)("a",{parentName:"p",href:"/docs/facetracking101/breakdown"},"face tracking in VRChat")," works if this is confusing.")),(0,n.kt)("h2",{id:"avatar-setup"},"Avatar Setup"),(0,n.kt)("p",null,"If you have a working hardware and software setup, or only want to get started with setting up ",(0,n.kt)("em",{parentName:"p"},"avatars")," for using with VRCFaceTracking, you should follow the ",(0,n.kt)("a",{parentName:"p",href:"../category/avatar-setup-guide"},"Avatar Setup Guide")))}N.isMDXComponent=!0},7015:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/vrc_osc_menu-0dfc15dc367fdd919dd613fba4889670.png"},82648:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/vrcft_installer-ee91e492bc58e5982831a43ad159fa6e.png"},21744:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/vrcft_module_registry_tutorial-3e0dac40976eb22d2e86c32ea912668b.png"},90512:(e,t,a)=>{function r(e){var t,a,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tn});const n=function(){for(var e,t,a=0,n="";a{a.d(t,{Ue:()=>u,xc:()=>i});var n=a(67294),o=a(39960),r=a(92503),l=a(90512);function i(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(r.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:i,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:i},n.createElement("img",{src:a,alt:`${t}'s image`}))),n.createElement("div",{className:"card__body"},n.createElement(r.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:i},"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:()=>i,y$:()=>c});var n=a(65130),o=a(67294),r=a(52263);function l(e){let{children:t}=e;const{metadata:a}=(0,n.k)(),{editUrl:r}=a;return o.createElement("a",{href:r,target:"_blank",rel:"noopener noreferrer"},t)}function i(e){let{children:t,to:a,append:n=""}=e;const{siteConfig:l}=(0,r.Z)(),i=l.customFields[a.toLowerCase()];return o.createElement("a",{href:i.href+n,target:"_blank",rel:"noopener noreferrer"},t??i.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)},c=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:()=>p,contentTitle:()=>c,default:()=>g,frontMatter:()=>u,metadata:()=>d,toc:()=>h});var n=a(87462),o=(a(67294),a(3905)),r=(a(24928),a(90351)),l=a(22004),i=a(39960),s=a(44996);const u={},c="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"}},p={},h=[{value:"Why is this setup required?",id:"why-is-this-setup-required",level:2},{value:"Setup",id:"setup",level:2},{value:"Enable Developer Mode on the Headset",id:"enable-developer-mode-on-the-headset",level:3},{value:"Enable Eye and Face Tracking on the Headset",id:"enable-eye-and-face-tracking-on-the-headset",level:3},{value:"Oculus Link/Airlink PC Setup",id:"oculus-linkairlink-pc-setup",level:3},{value:"Modules",id:"modules",level:2},{value:"Tips and Tricks",id:"tips-and-tricks",level:2},{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:"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."),(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.\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)("h2",{id:"setup"},"Setup"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"While an ALXR module exists, Korejan has not released it yet. This page will only cover the Oculus Link/Airlink method.")),(0,o.kt)("admonition",{type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"There is currently ",(0,o.kt)("strong",{parentName:"p"},"no way")," to use Virtual Desktop with face tracking. VD simply just doesn't access the face tracking API and it seems pretty low priority on the VD developer's list of priorities.")),(0,o.kt)("p",null,"The Quest Pro currently has 1 readily available face-tracking compatible PCVR connection methods:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Oculus Link (or Airlink)")),(0,o.kt)("p",null,"Follow all the sub-sections: ",(0,o.kt)("a",{parentName:"p",href:"#enable-developer-mode-on-the-headset"},"Enable Developer Mode on the Headset"),", ",(0,o.kt)("a",{parentName:"p",href:"#enable-eye-and-face-tracking-on-the-headset"},"Enable Eye and Face Tracking on the Headset"),", and ",(0,o.kt)("a",{parentName:"p",href:"#oculus-linkairlink-pc-setup"},"Oculus Link/Airlink PC Setup")," to complete 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."),(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)("h3",{id:"enable-developer-mode-on-the-headset"},"Enable Developer Mode on the Headset"),(0,o.kt)("p",null,"Instructions originally from ",(0,o.kt)("a",{parentName:"p",href:"https://learn.adafruit.com/sideloading-on-oculus-quest/enable-developer-mode"},"https://learn.adafruit.com/sideloading-on-oculus-quest/enable-developer-mode")),(0,o.kt)("ol",null,(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".\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)("p",null,(0,o.kt)("img",{alt:"Developer Mode",src:a(71332).Z,width:"1280",height:"506"})),(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\n',(0,o.kt)("img",{alt:"Quest Settings",src:a(52683).Z,width:"742",height:"741"}))),(0,o.kt)("h3",{id:"oculus-linkairlink-pc-setup"},"Oculus Link/Airlink PC Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-developer-mode-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET IS IN DEVELOPER MODE"))),(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)("admonition",{parentName:"li",type:"warning"},(0,o.kt)("p",{parentName:"admonition"},"Do ",(0,o.kt)("strong",{parentName:"p"},"not")," skip these steps. Please follow the instructions for setting the headset to developer mode using the mobile app before proceeding.\nEven if you think it is in developer mode already, ",(0,o.kt)("strong",{parentName:"p"},"follow the instructions anyways"),"."))),(0,o.kt)("li",{parentName:"ol"},"Install and start the ",(0,o.kt)("a",{parentName:"li",href:"https://www.oculus.com/download_app/?id=1582076955407037"},"Oculus PC application")," (if it isn't already)."),(0,o.kt)("li",{parentName:"ol"},"Follow setup instructions for logging in and adding your Quest Pro to ",(0,o.kt)("inlineCode",{parentName:"li"},"Devices"),"."),(0,o.kt)("li",{parentName:"ol"},"In the Oculus PC application, click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," in the left sidebar, then ",(0,o.kt)("inlineCode",{parentName:"li"},"General")," tab. Turn on ",(0,o.kt)("inlineCode",{parentName:"li"},"Unknown Sources"),". Set the ",(0,o.kt)("inlineCode",{parentName:"li"},"OpenXR Runtime")," to Oculus",(0,o.kt)("admonition",{parentName:"li",type:"warning"},(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("strong",{parentName:"p"},"SET THE OPENXR RUNTIME TO OCULUS"),". This is the ",(0,o.kt)("em",{parentName:"p"},"second")," most forgotten step of Quest Pro setup.")),(0,o.kt)("img",{alt:"Oculus PC App General Tab",src:a(48084).Z,width:"965",height:"262"})),(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"),".\nYou can try enabling ",(0,o.kt)("inlineCode",{parentName:"li"},"Passthrough over Oculus Link")," but that ",(0,o.kt)("em",{parentName:"li"},"may")," cause issues. ",(0,o.kt)("admonition",{parentName:"li",type:"note"},(0,o.kt)("p",{parentName:"admonition"},"If you do not see these options, you did not follow the previous steps correctly."))," ",(0,o.kt)("img",{alt:"Oculus PC app Beta Tab",src:a(1100).Z,width:"1156",height:"841"})),(0,o.kt)("li",{parentName:"ol"},"PC and Headset setup complete! Please continue to ",(0,o.kt)("a",{parentName:"li",href:"#modules"},"Modules")," for which VRCFT module to install to use the Quest Pro with VRCFT.")),(0,o.kt)("h2",{id:"modules"},"Modules"),(0,o.kt)("p",null,"Install the ",(0,o.kt)("strong",{parentName:"p"},'"QuestProOpenXRTrackingModule"')," from the ",(0,o.kt)(i.Z,{to:(0,s.Z)("docs/vrcft-software/vrcft#module-registry"),target:"_blank",rel:"noopener noreferrer",mdxType:"Link"},"VRCFaceTracking Module Registry")),(0,o.kt)("p",null,"Interested in the source code? Check out the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/regzo2/VRCFaceTracking-QuestProOpenXR"},"QuestProOpenXRTrackingModule source repository"),'\n(Currently maintained by Regzo2 / Azmidi / "Mitchell Moment")'),(0,o.kt)("h2",{id:"tips-and-tricks"},"Tips and Tricks"),(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,"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)("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,"Error in headset: ",(0,o.kt)("code",null,"com.oculus.bodyapiservice keeps stopping")),(0,o.kt)(r.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)(i.Z,{to:"#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)(i.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)(r.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)(i.Z,{to:"#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)(i.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)(r.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)(i.Z,{to:"#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)(i.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)(r.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)(i.Z,{to:"#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)(r.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)(i.Z,{to:"#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)(r.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.'),(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)("h3",{id:"general-problems"},"General Problems"),(0,o.kt)("details",null,(0,o.kt)("summary",null,'When using Oculus Link/Airlink, I cannot see SteamVR because it is blocked still running "VRCFaceTracking"'),(0,o.kt)(r.gm,{cause:"The nature of the way VRCFaceTracking must pull data from the Oculus OpenXR runtime 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)(i.Z,{to:"https://github.com/LibreQuest/OculusKiller",mdxType:"Link"},"OculusKiller")," to avoid dealing with the Oculus Dash entirely.")),(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)(r.gm,{cause:"Meta Moment",mdxType:"TroubleShootTable"},"Try toggling the eye and face tracking enables in the headset settings, and restarting your headset completely.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,'"Oculus Link/Airlink: My playspace calibration resets if I take off the headset"'),(0,o.kt)(r.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)(i.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.")),(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)(r.d9,{color:"#5763ee",mdxType:"TextColor"},"#hardware-software-help")," forum in the ",(0,o.kt)(r.xb,{to:"discord",mdxType:"CustomLink"}),"."))}g.isMDXComponent=!0},2658:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/windows_set_custom_graphics_settings-73bffe242c191a1a7ee29efb9d898aea.png"},82648:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/vrcft_installer-ee91e492bc58e5982831a43ad159fa6e.png"},71332:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/dev-mode-1b01d292cb6ca7873ad6831cd870cfec.png"},1100:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/oculus_pc_app_beta-ad7c8e052a4f74f4eebbd2f7c2218d29.png"},48084:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/oculus_pc_app_general-d87b3a1f7b967baba62015a2f5480656.png"},52683:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/quest_pro_settings_eye_tracking-b24a4c4e658fd0506850dea5c17f0739.jpeg"}}]); \ No newline at end of file diff --git a/assets/js/199fe866.7ae7d473.js b/assets/js/199fe866.7ae7d473.js new file mode 100644 index 00000000..3b1ecc2e --- /dev/null +++ b/assets/js/199fe866.7ae7d473.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkvrcft_docs=self.webpackChunkvrcft_docs||[]).push([[6915],{24928:(e,t,a)=>{a.d(t,{Ue:()=>u,xc:()=>l});var n=a(67294),o=a(39960),r=a(92503),i=a(90512);function l(e){let{name:t,url:a,description:i}=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(r.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"},i)))}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,i.Z)("card")},n.createElement("div",{className:(0,i.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(r.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:()=>i,d9:()=>u,gm:()=>s,xb:()=>l,y$:()=>d});var n=a(65130),o=a(67294),r=a(52263);function i(e){let{children:t}=e;const{metadata:a}=(0,n.k)(),{editUrl:r}=a;return o.createElement("a",{href:r,target:"_blank",rel:"noopener noreferrer"},t)}function l(e){let{children:t,to:a,append:n=""}=e;const{siteConfig:i}=(0,r.Z)(),l=i.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:()=>p,contentTitle:()=>u,default:()=>k,frontMatter:()=>s,metadata:()=>d,toc:()=>c});var n=a(87462),o=(a(67294),a(3905)),r=(a(24928),a(90351)),i=a(22004),l=a(39960);a(44996);const s={},u="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"}},p={},c=[{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:"Enable Developer Mode on the Headset",id:"enable-developer-mode-on-the-headset",level:4},{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:"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:"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}],h={toc:c},m="wrapper";function k(e){let{components:t,...s}=e;return(0,o.kt)(m,(0,n.Z)({},h,s,{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 non-trivial 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 face-facing 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.\nDepending on your chosen PCVR connection method, setup may or may not be trivial."),(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)("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)("p",null,"The Quest Pro currently has ",(0,o.kt)("strong",{parentName:"p"},"4")," 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)("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."),(0,o.kt)("p",null,"If you need a general recommendation for what to use"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"If you don't want to spend money: you should start with ",(0,o.kt)("strong",{parentName:"li"},"Oculus Link/Airlink")," as it is free and the offical PCVR method."),(0,o.kt)("li",{parentName:"ul"},"If you don't mind spending money: you should use ",(0,o.kt)("strong",{parentName:"li"},"Virtual Desktop")," for ease of use.")),(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 excluded).\nYou can learn more about improving your Quest PCVR streaming experience with the many guides available online.'),(0,o.kt)("h3",{id:"oculus-linkairlink-setup"},"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)(i.Z,{controls:!0,url:"https://www.youtube.com/watch?v=Keh__Lw7dEk",mdxType:"ReactPlayer"})),(0,o.kt)("h4",{id:"enable-developer-mode-on-the-headset"},"Enable Developer Mode on the Headset"),(0,o.kt)("p",null,"Instructions originally from ",(0,o.kt)("a",{parentName:"p",href:"https://learn.adafruit.com/sideloading-on-oculus-quest/enable-developer-mode"},"https://learn.adafruit.com/sideloading-on-oculus-quest/enable-developer-mode")),(0,o.kt)("ol",null,(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 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)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("a",{parentName:"li",href:"#enabling-developer-mode-on-the-headset"},(0,o.kt)("strong",{parentName:"a"},"MAKE SURE YOUR HEADSET IS IN DEVELOPER MODE"))),(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 and start the ",(0,o.kt)("a",{parentName:"li",href:"https://www.oculus.com/download_app/?id=1582076955407037"},"Oculus PC application")," (if it isn't already)."),(0,o.kt)("li",{parentName:"ol"},"Follow setup instructions for logging in and adding your Quest Pro to ",(0,o.kt)("inlineCode",{parentName:"li"},"Devices"),"."),(0,o.kt)("li",{parentName:"ol"},"In the Oculus PC application, click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," in the left sidebar, then ",(0,o.kt)("inlineCode",{parentName:"li"},"General")," tab. Turn on ",(0,o.kt)("inlineCode",{parentName:"li"},"Unknown Sources"),", and set the ",(0,o.kt)("inlineCode",{parentName:"li"},"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",{parentName:"li"},(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"},"Install one of the following modules from the VRCFaceTracking module registry:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Oculus Quest OpenXR Module")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"ALXR Local Module")," | ",(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)("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)("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",null,(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)("ol",{start:5},(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",null,(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)("ol",{start:6},(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)("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:"note"},(0,o.kt)("p",{parentName:"admonition"},"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"},"Install the ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/guygodin/VirtualDesktop/releases/tag/v1.29.0"},"1.29.0 Beta version of Virtual Desktop"),". If 1.29.0 has been promoted to live release, or the current live version of Virtual Desktop is greater than 1.29.0, please use the most recent live version of Virtual Desktop."),(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"},"Install the ",(0,o.kt)("strong",{parentName:"li"},"Virtual Desktop VRCFT tracking module"))),(0,o.kt)("h2",{id:"modules"},"Modules"),(0,o.kt)("p",null,"There are a total of ",(0,o.kt)("strong",{parentName:"p"},"5")," 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)("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)("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,"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)("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,"Error in headset: ",(0,o.kt)("code",null,"com.oculus.bodyapiservice keeps stopping")),(0,o.kt)(r.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:"#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)(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)(r.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:"#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)(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)(r.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:"#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)(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)(r.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:"#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)(r.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:"#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)(r.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)("h3",{id:"general-problems"},"General Problems"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"When using Oculus Link/Airlink, I cannot see SteamVR because Oculus is stuck loading some random app"),(0,o.kt)(r.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,"\"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)(r.gm,{cause:"Meta Moment",mdxType:"TroubleShootTable"},"Try toggling the eye and face tracking enables in the headset settings, and restarting your headset completely.")),(0,o.kt)("details",null,(0,o.kt)("summary",null,'"Oculus Link/Airlink: My playspace calibration resets if I take off the headset"'),(0,o.kt)(r.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.")),(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)(r.d9,{color:"#5763ee",mdxType:"TextColor"},"#hardware-software-help")," forum in the ",(0,o.kt)(r.xb,{to:"discord",mdxType:"CustomLink"}),"."))}k.isMDXComponent=!0},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"},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.81041c67.js b/assets/js/runtime~main.b015d17a.js similarity index 72% rename from assets/js/runtime~main.81041c67.js rename to assets/js/runtime~main.b015d17a.js index 48616b29..e9df2cc3 100644 --- a/assets/js/runtime~main.81041c67.js +++ b/assets/js/runtime~main.b015d17a.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:"d8347246",2535:"f5d11b78",2829:"2c2b5512",2886:"efbc1219",3085:"337343a9",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:"c8fc4daa",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:"652dff53",6938:"f6e83769",6939:"4557fd29",6945:"7ecc2c2e",7171:"7fb91947",7178:"f8ea06d7",7273:"024da418",7414:"fe07734d",7593:"19fd215e",7645:"ac08b299",7808:"5227db2f",7918:"05859733",7920:"7730dd74",7965:"05607311",7994:"fe32073e",8034:"85d037eb",8096:"9a792d7f",8212:"00ba768b",8271:"45f90499",8276:"c8aae7eb",8391:"ebd399ce",8403:"e712dcc0",8570:"8f5e6757",8610:"7a1c2efc",8628:"92bbe118",8636:"8a23e797",8686:"9130f781",8718:"1694b274",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:"a9e94f62",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,f,a,d,b,c={},t={};function r(e){var f=t[e];if(void 0!==f)return f.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=c,r.c=t,e=[],r.O=(f,a,d,b)=>{if(!a){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[a,d,b]},r.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return r.d(f,{a:f}),f},a=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={};f=f||[null,a({}),a([]),a(a)];for(var t=2&d&&e;"object"==typeof t&&!~f.indexOf(t);t=a(t))Object.getOwnPropertyNames(t).forEach((f=>c[f]=()=>e[f]));return c.default=()=>e,r.d(b,c),b},r.d=(e,f)=>{for(var a in f)r.o(f,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:f[a]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((f,a)=>(r.f[a](e,f),f)),[])),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:"d8347246",2535:"f5d11b78",2829:"2c2b5512",2886:"efbc1219",3085:"337343a9",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:"c8fc4daa",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:"7ae7d473",6938:"f6e83769",6939:"4557fd29",6945:"7ecc2c2e",7171:"7fb91947",7178:"f8ea06d7",7273:"024da418",7414:"fe07734d",7593:"19fd215e",7645:"ac08b299",7808:"5227db2f",7918:"05859733",7920:"7730dd74",7965:"05607311",7994:"fe32073e",8034:"85d037eb",8096:"9a792d7f",8212:"00ba768b",8271:"45f90499",8276:"c8aae7eb",8391:"ebd399ce",8403:"e712dcc0",8570:"8f5e6757",8610:"7a1c2efc",8628:"92bbe118",8636:"8a23e797",8686:"9130f781",8718:"1694b274",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,f)=>Object.prototype.hasOwnProperty.call(e,f),d={},b="vrcft-docs:",r.l=(e,f,a,c)=>{if(d[e])d[e].push(f);else{var t,o;if(void 0!==a)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(a))),f)return f(a)},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=(f,a)=>{var d=r.o(e,f)?e[f]:void 0;if(0!==d)if(d)a.push(d[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var b=new Promise(((a,b)=>d=e[f]=[a,b]));a.push(d[2]=b);var c=r.p+r.u(f),t=new Error;r.l(c,(a=>{if(r.o(e,f)&&(0!==(d=e[f])&&(e[f]=void 0),d)){var b=a&&("load"===a.type?"missing":a.type),c=a&&a.target&&a.target.src;t.message="Loading chunk "+f+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,d[1](t)}}),"chunk-"+f,f)}},r.O.j=f=>0===e[f];var f=(f,a)=>{var d,b,c=a[0],t=a[1],o=a[2],n=0;if(c.some((f=>0!==e[f]))){for(d in t)r.o(t,d)&&(r.m[d]=t[d]);if(o)var i=o(r)}for(f&&f(a);n