Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

vTuber Kit

An All-In-One Free vTubing Program! · By Kyuppin

Linux Test Results for Kyuppin

A topic by JimmyGeovanni created 23 days ago Views: 85 Replies: 3
Viewing posts 1 to 4

Hi! I’m testing the Linux build of vTuber Kit v0.2.2 on CachyOS/KDE and found what appears to be an OpenSeeFace/camera initialization issue.

**System:**

* OS: CachyOS (Arch Linux), KDE

* Laptop: HP ENVY x360 Convertible 15m-ed0xxx

* Camera: HP Wide Vision HD Camera

* Integrated GPU: Intel Iris Plus Graphics (ICL GT2)

* Mesa: 26.2.1

* Unity: 2021.3.45f2

The Linux build launches successfully after fixing one filename case-sensitivity issue:

`Custommouth2.png` was packaged, while the application expected `CustomMouth2.png`.

The webcam itself works correctly under Linux. `v4l2-ctl` reports:

`/dev/video0` — MJPEG up to 1280x720 @ 30 FPS and YUYV up to 640x480 @ 30 FPS.

I also successfully tested streaming directly from the camera with:

`v4l2-ctl --stream-mmap --stream-count=100 -d /dev/video0`

and it captured at approximately 30 FPS.

However, selecting any of the camera options (Option A, B, or C) in vTuber Kit does not open `/dev/video0` or `/dev/video1`. Checking with `lsof /dev/video0 /dev/video1` returns nothing.

The Unity `Player.log` shows this error when attempting to list/start the camera:

`EntryPointNotFoundException: CreateJobObject`

with the relevant stack:

`OpenSee.Job.CreateJobObject`

`OpenSee.OpenSeeLauncher.CheckSetup`

`OpenSee.OpenSeeLauncher.ListCameras`

and when starting tracking:

`OpenSee.OpenSeeLauncher.StartTracker`

`OpenSee.OpenSeeLauncher.CameraToggle`

I also inspected the bundled OpenSeeFace directory. It contains Windows components such as:

* `facetracker.exe`

* `dshowcapture_x64.dll`

* `dshowcapture_x86.dll`

* `escapi_x64.dll`

* `escapi_x86.dll`

* `python37.dll`

* multiple `win_amd64.pyd` files

but there are no OpenSeeFace Linux `.so` or Linux executable files present. The only `.bin` found under OpenSeeFace is the model `models/benchmark.bin`.

This makes me suspect the Linux build is currently attempting to use the Windows OpenSeeFace backend, or that the Linux-specific OpenSeeFace component is missing/not being loaded correctly.

The webcam itself appears to be fully functional under Linux, so I don't think this is a V4L2/driver issue.

Hopefully this helps track down the Linux camera/tracking issue. 

Developer (1 edit)

Hihi, as I said in the application description, I am aware the camera tracking doesn't work in Linux and I'm not smart enough to fix it lol. I included the build so people can use the mouse tracking mode if they want to, if the application even runs. I have not tested it. I basically just set the Unity build to Linux and exported it.


Thanks for all the info though, the custommouth png is probably a bug I have to fix either way

I cloned the official OpenSeeFace source and ran its native Python tracker under Linux. Using Python 3.10 with the required dependencies, this command works:

python facetracker.py -c 0 -W 1280 -H 720 -F 30

It successfully accesses /dev/video0, detects and tracks the face, and sends tracking data to the default OpenSeeFace destination: 127.0.0.1:11573

With this running, vTuber Kit immediately responds to my face. The webcam and Unity OpenSee UDP receiver both work correctly on Linux. The problem appears isolated to the OpenSeeLauncher/bundled OpenSeeFace tracker portion of the Linux build. 

The existing Unity OpenSee receiver already works on Linux, so the simplest fix may be to provide a Linux-compatible OpenSeeFace tracker and have the Linux build launch that instead of the Windows facetracker.exe. No changes to the vTuber Kit UDP receiver were required for this workaround.

I did some fixes for my girlfriend running CachyOS on her Victus 15 laptop


APP / RUNTIME FIXES

-------------------

1. Custom mouth case-sensitivity crash

   - Problem: Startup FileNotFoundException for CustomMouth2.png

   - Cause: On disk the file was Custommouth2.png (lowercase "m");

     Windows is case-insensitive, Linux is not.

   - Fix: Renamed Custommouth2.png → CustomMouth2.png

2. Executable permissions

   - Set executable bits on the main binary (vTuber Kit.x86_64)

     and required .so / plugin libraries so the app can launch.

3. NVIDIA / hybrid GPU routing

   - Launchers prefer prime-run (or NVIDIA PRIME env vars) so the

     Unity app runs on the RTX 3050 instead of Intel Mesa.

   - Important: OBS and vTuber Kit must both use NVIDIA, or Game

     Capture fails with "Cannot create EGLImage".

4. Unity save-path symlinks

   - Created symlinks under ~/.config/unity3d/Kyuppin/ for

     Windows-style backslash paths so saves/config resolve on Linux.

FACE TRACKING (OpenSeeFace)

---------------------------

5. Native OpenSeeFace tracker as the Linux tracking path

   - Starts before the kit; sends UDP tracking to 127.0.0.1:11573

   - Script: bin/run-openseeface-tracker.sh

   - Log: logs/openseeface.log

   - Note: In-app camera dropdown may throw CreateJobObject on Linux —

     ignore it; external tracker provides tracking.

6. OpenSeeFace Python dependencies installed

   - Including python-opencv, python-onnxruntime-cpu, and related deps.

7. OpenSeeFace compatibility patches

   - NumPy 2: replaced removed aliases such as np.float

   - OpenCV 5: fixed solvePnP argument / shape expectations

LAUNCHERS & DESKTOP INTEGRATION

-------------------------------

8. Launch / stop scripts

   - bin/run-vtuber-kit.sh          — tracker + kit (+ optional OBS capture hooks)

   - bin/run-openseeface-tracker.sh — face tracker only

   - bin/stop-vtuber-kit.sh         — stop kit / tracker

   - bin/run-obs-vtuber.sh          — OBS on NVIDIA with vTuber scene

   - bin/run-vtuber-kit-with-obs.sh — start OBS then kit with capture hooks

9. Desktop entries + icon

   - "vTuber Kit" desktop entry

   - "vTuber Kit + OBS" desktop entry

   - onionbug icon wired for the app menu / desktop

10. Environment overrides supported by launchers

    - VTUBER_KIT_CAMERA

    - VTUBER_KIT_MODEL (0–3)

    - VTUBER_KIT_WIDTH / VTUBER_KIT_HEIGHT

    - VTUBER_KIT_OBS_CAPTURE=0 to disable obs-gamecapture wrapping

OBS CAPTURE SETUP

-----------------

11. Installed OBS stack

    - obs-studio 32.2.2

    - obs-vkcapture 1.5.6 (Game Capture + Allow Transparency)

12. Preconfigured scene collection

    - Collection: "vTuber Kit"

    - Scene: "vTuber"

    - Source: "vTuber Kit (Game Capture)" with allow_transparency = true

    - Canvas: 1920×1080 @ 60 FPS

13. Capture hooks on kit launch

    - run-vtuber-kit.sh wraps the app with obs-gamecapture when available

    - OBS_VKCAPTURE_NAME defaults to "vTuber Kit"

KNOWN LINUX LIMITATIONS (not fixed — expected)

----------------------------------------------

- Windows UnityCapture virtual camera does not load

  (DllNotFoundException: UnityCapturePlugin)

- Use OBS Game Capture on window "vTuber Kit" with Allow Transparency

- Capture gameplay behind the avatar by stacking sources under the

  transparent Game Capture source in OBS