What is Mixamo Downloader

Mixamo Downloader is a project which can help organize 3D model character animations generated by Mixamo.com website.

Mixamo.com is a website where you can animate 3d characters and download the file containing the animation, for free. The website has 2484 animations, and it could take forever to download all animations for a character by hand. Mixamo Downloader will download all animations, store them in Google Cloud storage bucket and expose REST WebServices for manage them.

The saved animations can be further used for implementing character animation in a video game, as seen in the video below.

Mixamo Downloader features:

  • is exposing WebServices for:
    • User management:
      • registration
      • authentication
    • Character management:
      • sync characters from Mixamo Website to applications DB
      • get list of characters saved in DB
    • Animation management:
      • sync animations from Mixamo Website to applications DB
      • get list of animations saved in DB
    • CharacterAnimation management:
      • export character animation from Mixamo Website
      • download exported character animations and save them in Google Cloud Storage
      • get list of saved characters animation
  • The WebServices will be called by an Angular2 Application

Project implementation details:

  • The application is implemented using Spring Boot Suite:
    • spring-boot-starter-web running Jetty for Rest WebServices
    • spring-boot-starter-data-jpa for managing data using Hibernate and MySql
    • spring-boot-starter-security for securing the application (the application is secured using JWT)
Project Structure:

Bitbucket Repository -> https://bitbucket.org/deviscool/mixamo-backend

  • Mixamo Downloader is composed of 2 subprojects:
    • MixamoDownloaderUtil
      • is a library project, here is implemented the main logic, the library can be used further for implementing WebServices or Worker Applications
    • MixamoDownloaderWebServices
      • in this project are implemented the REST WebServices using MixamoDownloaderUtil library
Code Structure:

MixamoDownloaderUtil

  • cool.devis.mixamo.util.entity
    • in this package are present the JPA Entity Classes

User.java

  • cool.devis.mixamo.util.repository
    • in this package are present the JPA Repository Interfaces

UserRepository.java

  • cool.devis.mixamo.util.service
    • in this package are present the Service Classes

CharacterAnimationService.java

  • cool.devis.mixamo.util.google
    • in this package is present the GoogleStorageUtil class which contains methods for manage google cloud bucket files

GoogleStorageUtil.java

  • cool.devis.mixamo.util.pojo
    • in this package are present the POJO classes used for calling Mixamo Website REST API, they were generated with the help of http://www.jsonschema2pojo.org  after investigating the rest methods which are called by Mixamo Website using Google Chrome Network monitor

AnimationDetails.java

  • cool.devis.mixamo.util.common
    • in this package we find some common class which is containing utility methods which can be used in other classes

MixamoDownloaderWebServices

  • cool.devis.mixamo.webservice.Application.java
    • is the main entry point of the application, here the Spring Boot Application will be initialized

  • cool.devis.mixamo.webservice.controller
    • in this package we have the REST Controller Class, methods present here will be exposed as REST WebServices

  • cool.devis.mixamo.webservice.security
    • in this package we have the classes used for configuring the Security; Application is secured using JWT Authentication

The Application is packaged in a single Capsule .jar as described here -> http://devis.cool/java/java-gradle-capsule-template-project/

To Do next:

  • implement proper logging in every class
  • implement exception handling mechanism
  • write automated tests
  • implement upload of exported character animation in Google Cloud
  • implement download character animation method to be used by frontend
  • implement Worker for exporting character animations