import{_ as t,i as o}from"./chunks/index.98715216.js";import{o as l,c as d,O as a,E as i,l as n,k as r,a as s}from"./chunks/framework.13163686.js";const m=JSON.parse('{"title":"VRCFT ETVR Tracking module, or simply the ETVR tracking module","description":"","frontmatter":{},"headers":[],"relativePath":"software_guide/VRCFT_tracking_module.md","filePath":"software_guide/VRCFT_tracking_module.md","lastUpdated":1720893602000}'),h={name:"software_guide/VRCFT_tracking_module.md"},f=Object.assign(h,{setup(u){return(c,e)=>(l(),d("div",null,[e[0]||(e[0]=a('
VRCFT ETVR Tracking module is an extension for VRCFT. It allows ETVR to send out tracking data and have it converted to parameters expected by VRCFT and avatars compatible with VRCFT.
In effect, ETVR will be compatible with whichever game or program that supports VRCFT, thanks to this module.
It is required for all avatrs that are setup to use Unified Expression(UE) or V2 parameters, optional for ones setup with so-called legacy or v1 parameters.
To make ETVR work with VRCFT, you'll need two things. VRCFT itself, and the tracking module.
To get VRCFT head over to: their docs page!
Once you've installed VRCFT, you can find the most recent version of the module in the registry.
',12)),i(t,{options:n(o).vrcft_etvr_module_registry},null,8,["options"]),e[1]||(e[1]=r("p",null,[s("Clicking on "),r("code",null,"install"),s(" will download and load the module, VRCFT will now be setup to listen for ETVR data. That's it!")],-1)),e[2]||(e[2]=r("h3",{id:"setting-up-etvr-to-use-the-module",tabindex:"-1"},[s("Setting up ETVR to use the module "),r("a",{class:"header-anchor",href:"#setting-up-etvr-to-use-the-module","aria-label":'Permalink to "Setting up ETVR to use the module"'},"")],-1)),i(t,{options:n(o).vrcft_etvr_setitgs_page},null,8,["options"]),e[3]||(e[3]=a('settings tabUse the ETVR ModuleSettings will apply automatically, no need to change port or restart the app. ETVR will automatically start sending the data to the module.
If you're running a hybrid setup where one machine does all of the ETVR tracking, and the other has VRCFT and other software running, you'll need to adjust the settings a bit.
First, make sure that both machines are on the same network and they can see each other. If they're connected via Ethernet to the same router, or to the same WiFi network, things should just work.
Next, find out that's the IP address of the machine running VRCFT. For how to, refer to Microsoft's documentation
With that, head over to ETVR, select the VRCFT Module Settings tab. Notice the VRCFT Module listening IP section. By default it's set to 127.0.0.1, change it to the IP the PC that runs VRCFT.
This is also taken care of by the app, simply make sure that VRCFT is running and the ETVR module got loaded in.
Then, in ETVR head back over to VRCFT Module Settings tab and hit Reset Settings to default.
This will reset the module's settings to default values for both - ETVR and VRCFT.
When we say there's a breaking change, we mean that something changed so drastically that there's a high chance of the module failing to load. This is a very rare thing, usually happens when settings get modified so much that they're no longer compatible.
In such cases, deleting the module's settings file is enough. Check the FAQ section - Where's the module's configuration file? For locating and deleting it.
Sometimes, we'll have a new version of the module ready for test, or a special one with a lot of additional logging to help us debug some stuff on your end. This version won't be available in the registry right away so how you install it?
Uninstall your current ETVR Module installation.
Similarly to installing it for the first time, navigate to VRCFT's module registry, find the ETVR Module and hit uninstall.
Download the latest release / pre-release from the repo or from the discord.
Navigate to:
C:\\Users\\<Your PC name>\\AppData\\Roaming\\VRCFaceTracking\\CustomLibs
And place the module there. If CustomLibs doesn't exist yet, create it. VRCFT will use it to load the development version of the module next time you launch the app.
First, just like you'd do with the apps source, download it from github. Either via downloading and extracting a zip or by using git clone.
Download the VRCFT Source from their github. It's important to put next to the ETVR module. Your directory should look more or less like this:
parent_directory
- ETVR Module
- VRCFT RepoBuilding the module requires some of the VRCFT stuff to be present, namely the Core directory. To make it easier to compile, we've set the project up so that it will look for it, next to its own directory.
Whichever IDE you prefer, both just work, both make it easier to work with the source code.
Once installed, open the project in them and wait for everything to load.
That's the last step, now we just need to verify that everything is setup correctly. Click on build, or hit ctrl+b and watch the output.
It should build just fine and the resulting file should get copied to the VRCFT CustomModules\` directory.
Note, the copying will fail when VRCFT is running. If it does, close VRCFT and hit build again, this time only the copy step will be executed
In the rare cases where you need to modify the configuration file, here's how to find it:
Since CRVFT is an UWP app and those behave quite a bit differently than regular apps, there's no easy way to access that file. Instead, you'll need to search on your C:/ drive for 'ETVRModuleConfig.json and it should show up.
Range explanation: 0 - fully closed, 1 - fully open.
OutputMultiplier: Defines by how much the output should be multiplied, it helps with making your tracking less or more expressive. 1 by default, [0 - 2] range.
PortNumber: the port under which the module will be listening for OSC messages, by default 8889
ShouldEmulateEyeWiden: Toggle for emulating eye widen, think surprised face. On by default, will at 0.97 of fully open eye
ShouldEmulateEyeSquint: Toggle for emulating squinting, think shutting your eyes with a bit of force. On by default, will activate at 0.05 of eye openness.
ShouldEmulateEyebrows: Togggle for emulating eyebrow movement, depending on eye openness, the module will try and move the avis eye brows a little. On by default at 0.89, range [0 - 1]
EyebrowThresholdRising: Defines when eyebrow emulation should kick in, by default at 0.89, range [0 - 1]
EyebrowThresholdLowering: Defines when eyebrow emulation should kick in but in the opposite direction, by default at 0.06, range [0 - 1]
SqueezeThresholdV1 - Defines when squeeze emulation should begin, and how "fast" should it be. By default, [0.06, 0.51], with range first: [0 - 1], second: [0 - 2]. This is used for v1 or legacy parameters
-SqueezeThresholdV2 - Defines when squeeze emulation should begin, and how "fast" should it be. By default, [0.06, -0.99], with range first: [0 - 1], second: [-2 - 0]. This is used for v2 or Unified Expressions parameters
WidenThresholdV1 - Defines when Widen emulation should begin, and how "fast" should it be. By default, [0.93, 1.01], with range first: [0 - 1], second: [0 - 2]. This is used for v1 or legacy parameters
WidenThresholdV2 - Defines when widen emulation should begin, and how "fast" should it be. By default, [0.96, 1.04], with range first: [0 - 1], second: [0 - 2]. This is used for v2 or Unified Expressions parameters
To better explain how Widen / Squeeze emulation thresholds work: They're implemented via a simple smoothstep, you can play around with it here, simply plug in the values in smoothstep() and watch how the graph reacts.