• Stars
    star
    837
  • Rank 54,466 (Top 2 %)
  • Language
    C++
  • License
    Other
  • Created almost 6 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An automated algorithm to extract the linear blend skinning (LBS) from a set of example poses

Dem Bones

BSD3 Clause Version

This repository contains an implementation of Smooth Skinning Decomposition with Rigid Bones, an automated algorithm to extract the Linear Blend Skinning (LBS) with bone transformations from a set of example meshes. Skinning Decomposition can be used in various tasks:

  • converting any animated mesh sequence, e.g. geometry cache, to LBS, which can be replayed in popular game engines,
  • solving skinning weights from shapes and skeleton poses, e.g. converting blendshapes to LBS,
  • solving bone transformations for a mesh animation given skinning weights.

This project is named after "The Skeleton Dance" by Super Simple Songs.

Contents

  • include/DemBones: C++ header-only core library using Eigen and OpenMP. Check out the documentations in docs/index.html.
  • bin: pre-compiled command line tools for Windows, Linux, and MacOS that read and write FBX and Alembic files. Check out the usage by running DemBones --help.
  • src/command: source code for the command line tool. Check out AbcReader.cpp, FbxReader.cpp, and FbxWriter.cpp for the usage of the core library.
  • data: input/output test data for the command line tool. Run and check out the scripts run.bat (Windows) or ./run.sh (Linux/MacOS).

Compiling

Tested platforms:

  • Visual Studio 2019 on Windows 10 x64
  • g++ 9.3.0 on Ubuntu Linux 20.14
  • LLVM 10.0.0 (Homebrew) on MacOS 10.13.6

Compiling steps:

  1. Install cmake
  2. Copy the following libraries to their respective folders in ExtLibs so that cmake can find these paths:
  3. Run cmake:
mkdir build
cd build
cmake ..
  1. Build:
cmake --build . --config Release --target install

Notes for Linux

Notes for MacOS

  • Apple Clang (default compiler) does not support OpenMP and Eigen. We recommend using LLVM. Assuming LLVM is installed in the default path: /usr/local/opt/llvm/bin, instead of cmake .., you can run:

    cmake -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ ..
    
  • The pre-compiled tool bin/DemBones requires dynamic libomp for LLVM. If you have an error messeage related to OpenMP, please install libomp, e.g. with Homebrew using $ brew install libomp.

  • bin/MacOS/DemBones was compiled with the optimization flag -O3. It looks like LLVM uses fast math so the results are slightly different with those generated by Windows version. Removing optimization flags (in CMakeLists.txt) helps to reproduce the same results with Windows version but the tool will run 10x slower.

References

If you use the library or the command line tool, please cite the paper:

Binh Huy Le and Zhigang Deng. Smooth Skinning Decomposition with Rigid Bones. ACM Transactions on Graphics 31(6), Proceedings of ACM SIGGRAPH Asia 2012.

BibTeX:

@article{LeDeng2012,
    author = {Le, Binh Huy and Deng, Zhigang},
    title = {Smooth Skinning Decomposition with Rigid Bones},
    journal = {ACM Trans. Graph.},
    volume = {31},
    number = {6},
    year = {2012}
} 

The skinning weights smoothing regularization was published in the paper:

Binh Huy Le and Zhigang Deng. Robust and Accurate Skeletal Rigging from Mesh Sequences. ACM Transactions on Graphics 33(4), Proceedings of ACM SIGGRAPH 2014.

Authors


Search for Extraordinary Experiences Division (SEED) - Electronic Arts
http://seed.ea.com

We are a cross-disciplinary team within EA Worldwide Studios.
Our mission is to explore, build and help define the future of interactive entertainment.

Dem Bones was created by Binh Le (binh.graphics). The logo was designed by Phuong Le (phuongle.com).

Contributing

Before you can contribute, EA must have a Contributor License Agreement (CLA) on file that has been signed by each contributor. You can sign here: http://bit.ly/electronic-arts-cla

Licenses

  • The source code, including include/DemBones and src/command, uses BSD 3-Clause License as detailed in LICENSE.md
  • The pre-compiled command line tool bin/DemBones(.exe) uses third party libraries: Eigen, tclap, Alembic, FBXSDK, and zlib with licenses in 3RDPARTYLICENSES.md

More Repositories

1

CnC_Remastered_Collection

C++
18,221
star
2

EASTL

EASTL stands for Electronic Arts Standard Template Library. It is an extensive and robust implementation that has an emphasis on high performance.
C++
7,676
star
3

ea-async

EA Async implements async-await methods in the JVM.
Java
1,367
star
4

EAStdC

EAStdC is a package which implements basic library facilities that are similar to those in the standard C library.
C++
478
star
5

EAThread

EAThread implements a unified cross-platform interface for multithreaded programming.
C++
288
star
6

character-motion-vaes

Character Controllers using Motion VAEs
Python
239
star
7

EACopy

Robocopy alternative with a bunch of different features
C++
232
star
8

EABase

EABase is a small set of header files that define platform-independent data types and platform feature macros.
C++
157
star
9

RenderWare3Docs

White Papers and User Guide from the RenderWare game engine release for PC.
145
star
10

gatling-aws-maven-plugin

The Gatling AWS Maven plugin takes the pain out of scaling up your Gatling tests. It runs your load test on a configurable number of EC2 instances, aggregates a single load test report, and uploads the results to S3. All EC2 instances are terminated at the end of the test to ensure you are only paying for what you need.
Java
99
star
11

ea-agent-loader

EA Agent Loader is a collection of utilities for java agent developers.
Java
92
star
12

Tunable-Colorblindness-Solution

A tunable colorblindness solution that improves color-shifting and luminosity to address common colorblind issues relating to color differentiation and visibility in colorblind accessibility settings.
HLSL
89
star
13

IRIS

EA’s photosensitivity analysis tool
C++
69
star
14

cpp-ml-intro

C++ ML Intro
C
65
star
15

ava-capture

Ava Capture is a distributed system to control and record several cameras from a central UI. This system would typically be used for a photogrammetry or 4D capture rig based on Ximea cameras.
Python
64
star
16

rig-inversion

Example code for the technique described in the paper "Rig Inversion by Training a Differentiable Rig Function" published at SIGGRAPH Asia 2022.
Python
60
star
17

SimpleTeamSportsSimulator

Python
54
star
18

CNC_TS_and_RA2_Mission_Editor

FinalSun & FinalAlert2 Level Editors
C++
52
star
19

awsudo

Automated AWS API access using a SAML compliant identity provider
Ruby
43
star
20

fastnoise

Filter-adapted Spatiotemporal Sampling for Real-Time Rendering
C++
42
star
21

EAMain

EAMain provides a multi-platform entry point used for platforms that don't support console output, return codes and command-line arguments.
C++
41
star
22

EAAssert

EAAssert is a simple and lightweight assert technology.
C++
39
star
23

EATest

EATest is a C++ unit testing framework. It's goal is to have a scalable architecture, have minimal dependencies, and simple usage.
C++
37
star
24

fonttik

Fonttik is a text size & contrast checking solution created by EACC Tech to check accessibility criteria regarding text readability
C++
35
star
25

siggraph-asia-2019-gata

Supports SIGGRAPH Asia 2019 paper "GATA: Multi-Theme Generative Adversarial Terrain Amplification"
Python
29
star
26

MELE_ModdingSupport

C
28
star
27

interactive_training

Jupyter Notebook
18
star
28

minicoros

C++
17
star
29

orbit

Moved to https://github.com/orbit/orbit
14
star
30

NetTAP

TAP parser for .NET
C#
12
star
31

helmci

helmci is a program that takes a set of helm release values and automatically deploys them to a Kubernetes cluster
Rust
10
star
32

kara

Automated generation of Finagle HTTP/JSON services and Swagger UI from Thrift service definitions.
Scala
8
star
33

harmony

Java
5
star