Open fire opened 3 years ago
This should be doable by:
utils/OpenSeeFace.gd
Once this is completed, it should also make it possible to run the face tracker on a different computer on your local network. Since the UDP receiver would be decoupled, we could actually switch out face tracker runtimes which might make it possible to use face tracking data from an iPhone or Android device.
Not necessary for a 1.0.0 release but nice to have.
There's already a standard format using OSC. Not sure of the details.
Is the suggestion to make bvh the standard data format?
Sending data from OpenSeeFace -> OpenSeeFace is easy enough, just repack the data in an equivalent buffer. I think once that's handled and support for alternative face trackers is possible, I can start looking into an intermediate data layer.
I mean VMC.
I don't speak Japanese that well. https://protocol.vmc.info/specification
One approach is reuse the vmc2bvh module and directly connect godot engine. VMC to Godot
Basic approach
class PoseCapture {
protected:
static void _bind_methods();
public:
virtual Ref<PoseCaptureInstance> instance() override;
void set_buffer_length(float p_buffer_length_seconds);
float get_buffer_length();
bool can_get_buffer(int p_frames) const;
PackedVector<Ref<Animation>> get_buffer(int p_len);
void clear_buffer();
int get_frames_available() const;
int64_t get_discarded_frames() const;
int get_buffer_length_frames() const;
int64_t get_pushed_frames() const;
};
See https://github.com/godotengine/godot/blob/6f7d45d2109246e3888fc2b16136915e6fec89fd/scene/resources/animation.h#L67 for the different types of tracks.
We use nodepath, the key and time (absolute time).
\
Pull in alongside your own (display 2+ models at once).