Skip to content

Commit cea3edc

Browse files
committed
(wip) Start of blog
1 parent e449e3a commit cea3edc

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
title: Reverse Engineering the Vive Facial Tracker
3+
---
4+
5+
# The cool intro
6+
7+
My name is Hiatus, and I am one of the developers on the Project Babble Team.
8+
9+
For the past 2 years (at the time of writing this), me and a team have been working on the eponymous Project Babble, a VR lower-face expression tracking solution for VRChat, Resonite and ChilloutVR namely.
10+
11+
This is the story of how the Vive Facial Tracker, another (abandoned) VR face tracking accessory, was reverse engineered to work with the Babble App.
12+
13+
Buckle in.
14+
15+
# The Vive Facial Tracker
16+
17+
The Vive Facial Tracker is a VR accessory released in March 24th 2021. It is worn underneath a VR headset, and captures camera images an AI, SRanipal ("Super Reality Animation Pal") converts into expressions other programs can understand*.
18+
19+
Sidenote here, it's really hard to describe the *impact* this had on the entirety of Social VR, at least in my experience.
20+
21+
Unfortunately, the VFT has been discontinued. [You can't even see it on their own store anymore.](https://www.vive.com/us/accessory/). Even worse, it's being scalped on eBay in excess of $1,000. Remember, this accesory cost ~$150 when it came out!!
22+
23+
# The rising action: A curious conversation
24+
25+
I was in voice chat with some people from the Babble Discord, when someone said they knew someone else in the Project Babble discord had gotten their VFT working with a fork of the Babble App. On Linux. *What*
26+
27+
Curious, I asked for more details so they linked me a conversation that had happened earlier that week. I reached out to the person who made the post to understand what they did, and what followed was a pleasent conversation.
28+
29+
# The Babble App
30+
31+
Before we go on, we need to briefly cover how the Babble App works. In short, it runs an ONNX model that accept a (256x256) grayscale image, fed in from one of two video sources:
32+
33+
1) Via OpenCV. Think webcameras, ip-cameras, etc. This handles 80% of all things cameras.
34+
2) Via Serial. Presently, our Babble Boards send image data via a wired USB connection a computer for processing.
35+
*If the Babble Board is running in wireless mode, it just spins up an IP Camera. Plain and simple stuff.
36+
37+
:::note
38+
I do want to create an article about how are training/trained our ONNX models too!
39+
:::
40+
41+
Got all that?
42+
43+
44+
# Understanding the VFT's hardware
45+
46+
The VFT consists of 2 OVXXX infrared cameras and and IR Led. See here https://archive.is/NFlaO. This produces a combined 800x400 image, at 400x400 pixels per camera, encoded in YUV2.
47+
48+
:::note
49+
In SRanipal, these would be used to compute stereo disparity IE provide how close objects are to the camera. This is useful for expressions in which parts of the face are closer to the camera, such as `JawForward` and `TongueOut`.
50+
:::
51+
52+
Babble doesn't care about 3D, so we have 2 options:
53+
1) Just pick either the left or right frame.
54+
2) Do something fancier that requires more work.
55+
56+
Guess which one we did?
57+
58+
With that in mind, we needed to
59+
1) Open the camera(s) (done!)
60+
2) Turn on the LEDs and other components
61+
3) Process/Convert the VFT's camera into something Babble can understand
62+
63+
# Conclusions, Reflections
64+
65+
At the end of all of this, I couldn't help but wonder
66+
67+
Becuase it's fun!
68+
69+
Also, if you're interested in a Babble Tracker we're looking to restock sometime later this March, maybe April if things go slowly.
70+
71+
Until next time,
72+
73+
- Hiatus
74+
The Project Babble Team
75+
76+
77+
### Credits

0 commit comments

Comments
 (0)