Home

Awesome

<img src=https://openavatarify.s3-avatarify.com/media/einstein_flexin.gif width=600>

Avatarify Desktop

Avatarify for desktop with a user friendly interface.

System requirements

Installation

  1. Download Avatarify Desktop (897 Mb).
  2. Double click on the installer. Windows Defender warning screen may pop up telling that the app comes from an unknown source. Click "More info", then "Run anyway".
  3. Follow the instructions of the setup Wizard. You may opt to the default settings.

Running

  1. The app starts automatically after the installation. If that didn't happen, press Windows button and start typing "Avatarify" and select "Avatarify Desktop". Windows Defender warning screen may pop up telling that the app comes from an unknown source. Click "More info", then "Run anyway".
  2. In the Settings section of the main window, choose your web camera in the drop-down menu.
  3. Position your head in the center of the frame and press C to calibrate.
  4. Left-click on any avatar and start driving.

Tip: whenever your avatar screws, press C (or click Calibrate button) to reset the initial pose.

To break into video conferencing with an avatar, set up the Virtual camera.

Virtual camera

This example is for Zoom, but the procedure is similar in the other video-conf apps.

  1. In Zoom, go to Settings -> Video.
  2. In the Camera drop-down menu, choose Avatarify Camera.
  3. You should see your avatar immediately. If you see image from your web camera, go back to Avatarify and left-click on an avatar.

Add new avatar

  1. Click on Open image file in the main window.
  2. Browse to your image with an avatar and open it. Requirements to images: one face, neutral emotion, frontal look.
  3. Crop your image. Using the slider under the window, zoom image so that shoulder are slightly captured. Drag the image using left mouse button and center the head of the avatar. Leave some space between top of the head and image border.
  4. Click on Save button. The new avatar will appear on the left of the avatar reel.

<img src=https://user-images.githubusercontent.com/4682236/101614195-b16b6480-3a1d-11eb-967d-465f3028b94d.PNG width=250>

Use overlay

Avatar driving works better when your calibration pose matches the avatar's pose.

  1. If an avatar is selected, left-click on it to switch to the web camera mode.
  2. Right-click on the avatar to make it appear as an overlay on your web camera image.
  3. Use Overlay slider in the Settings section to change opacity of the overlay.
  4. Match your pose and expression with the avatar and press C to calibrate.
  5. Left-click on the avatar to drive it.

<img src=https://user-images.githubusercontent.com/4682236/101615548-4fabfa00-3a1f-11eb-8258-c6d4dca85034.png width=400>

Smart crop

The app has a function to automatically track the position of your head. It's useful when your web camera is mounted sidewise and you not appear in the center of the frame.

In the Settings section, switch Smart crop slider. The app will start tracking your head and move it to the center of the frame. When it's done, press C to calibrate.

Controls

KeyAction
CCalibrate.
⬅️ ➡️Switch to previous / next avatar.
FFullscreen mode

Build from source

<!-- ### Notes * **VS compiler**. Precompiled libtorch libraries are built with VS compiler. Libtorch sources compile without errors with VS compiler, but mingw causes errors. It seems reasonable to buy a license for VS compiler than make libtorch support for mingw. * **AKVitrualCamera**. We use my fork of [AKVitrualCamera](https://github.com/vlivashkin/akvirtualcamera) to support vcam. It has GNUv3 license, can we use it? In the fork, I've added CMake support for Windows (you'll need to add MacOS support). You also need to rename all stuff there (e.g. service name) to avoid collision with Webcamoid. -->

Dependencies

  1. Download online installer
  2. Run the installer and on the Select Components page select these components:
    • Qt -> Qt 5.15.2. Deselect all components except MSVC 2019 64bit to save disk space
    • Qt -> Developer and Designer Tools -> OpenSSL 1.1.1d Toolkit
<!-- * **libyuv**. Library for fast frame format conversion, e.g. YUYV -> RGB. [Official manual](https://chromium.googlesource.com/libyuv/libyuv/+/HEAD/docs/getting_started.md). * **dlib**. Library for fast face tracking (needed by kalman crop). [Link](https://github.com/davisking/dlib/releases/tag/v19.21). * **eigen3**. Library for fast matrix computations (needed by kalman crop). [Link](http://eigen.tuxfamily.org/index.php?title=Main_Page). * **OpenSSL**. StackOverflow answer: ``` On Windows if you install Qt via online installer, you can select OpenSSL Toolkit as an optional component. This should provide you with the version definitely compatible with your Qt. If you haven't checked it during installation, you can rerun C:\Qt\MaintenanceTool.exe and select Add or remove components. OpenSSL Toolkit is located under the Developer and Designer Tools section, it is the last entry. However, there's a note in the sidebar: Qt installer doesn't set up OpenSSL environment. User needs to define the path and environment variables. So once installed, you should add the directory with the DLLs to the PATH environment variable or place the needed DLLs near the .exe file (copy them to the debug and release directories of your project). The directory is located at C:\Qt\Tools\OpenSSL\Win_x64\bin (or Win_x86 if you need 32-bit version). The DLLs are named libssl-1_1-x64.dll and libcrypto-1_1-x64.dll in my case. But this wasn't enough to deploy it to another machine, after copying it all I got the same error again. The reason came out to be that OpenSSL DLLs depend on another MSVC runtime version than the Qt app itself, and these errors go unreported. Open these DLLs in Dependency Walker to find out what's missing. In my case it was MSVCR100.dll, so I had to install MSVC 2010 Redistributable x64 (x86 is here). ``` -->

Build project

git clone https://github.com/vlivashkin/avatarify-desktop
cd avatarify-desktop
git submodule update --init --recursive

Build installer

(not very clean solution, but at least it works)