Source code for the article "Code vs Data Driven Displacement"

Code vs Data Driven Displacement

This repo contains the source code for all the demos from this article.

It uses raylib or more specifically raygui so if you have that installed it should be easy to play around and out.

The data required if you want to regenerate the database is from from this dataset which is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License (unlike the code, which is licensed under MIT).

Owner
Daniel Holden
Animation Researcher at Ubisoft Montreal. Writer / Programmer.
Daniel Holden
Comments
  • How to build custom

    How to build custom "character.bin" ?

    @orangeduck Thanks for your cool work !

    • I want to make the character looks more like a humanoid robot, how can I change the character.bin ?
    • Are there any recommended editing tools ?
  • How to generate features for 'Chair' scenario? 19-dimension I guess?

    How to generate features for 'Chair' scenario? 19-dimension I guess?

    Thanks for your wonderful work!

    Features are designed differently in each scenario according to the 'Learned Motion Matching' paper. Could you please kindly share your ideas on how to design features for 'Chair' scenario?

    Features for 'Chair' are supposed to be 19-dimension rather than the 27-dimension feature for locomotion as described in the paper.

    Thanks!

  • database_build_bounds copy paste error?

    database_build_bounds copy paste error?

    Thank you so much for sharing this - I did find a copy-paste bug I think, feature bounding boxes are updating maximums wrong...

                db.bound_sm_min(i_sm, j) = minf(db.bound_sm_min(i_sm, j), db.features(i, j));
                db.bound_sm_max(i_sm, j) = maxf(db.bound_sm_min(i_sm, j), db.features(i, j));   // !! want sm_max here ?
                db.bound_lr_min(i_lr, j) = minf(db.bound_lr_min(i_lr, j), db.features(i, j));
                db.bound_lr_max(i_lr, j) = maxf(db.bound_lr_min(i_lr, j), db.features(i, j));   // !! want lr_max here ?
    
  • How should I modify features.bin

    How should I modify features.bin

    Thanks again for the open source code, it helped me a lot to understand motion match.

    When I change database.bin, how should I modify the features.bin corresponding to it, or tell me what the 27-dimensional features of features.bin represent.

    Thanks.

  • end_of_anim

    end_of_anim

    Hi, Looking through the code, as far as I understood, the end of the clip problem has not been handled. Once the animation reaches the end of the clip, best_index is set to -1, and then trns_bone_positions are accessed by this index, which raises the assertion error of assert(i >= 0 && i < rows).

  • how to run this in linux?

    how to run this in linux?

    got to admit that I'm poor in C++!

    How to run this code? I've downloaded raygui and installed raylib in ubuntu 18.04. Should I put raygui in the program folder, and make or something like this?

    When running"g++ controller.cpp", errors show:

    /tmp/ccomEtPp.o:in function 'GuiGroupBox':
    controller.cpp:(.text+0x559):Undefined reference 'GetColor'
    controller.cpp:(.text+0x568):Undefined reference  'Fade' 
    

    What should I do? Is there a instructions like the one in #2 available?

  • How should I get the switching of other actions to work

    How should I get the switching of other actions to work

    Thanks for your great work, following your way I managed to switch between running/jumping, but when I want to switch between other actions, such as lifting/kicking, it has some problems, I put the position of the end joint of the hand Information is used as features, and three models are retrained, and the cpp file you gave is also changed to make the dimension of features.bin larger (added hand position). But the results were not as expected. Please tell me what should I do to make the switching of other actions work normally.

    Looking forward to your reply.

  • Question re: rotation adjustments harming trajectory features...

    Question re: rotation adjustments harming trajectory features...

    Thanks again Daniel for sharing this excellent demo - one thing that jumped out while tuning sim/adjustment is how distorted trajectory futures become. I expect this is not avoidable if you want correction but wondered if you had any thoughts/guidance on it?

    With rotation correction turning the root faster or slower than the animation your future position features become deflected (of course they are, because they are stored relative to the queried animation frame) - for our content this means my 180 idle-to-jog get tossed out in favor of visually worse 'turning jogs' because of this deflection. Intuitively it doesn't seem like a benefit to matching quality, the future positions are not actually deflected in the animation (the turn 180 stays along the axis).

    I can iterate with animators to more closely match the sim of course to reduce the harm but I wondered if you've already put thought into this?

  • Again Makefile for build in Linux ::)

    Again Makefile for build in Linux ::)

    Use make build_depends && make mmatching && make run

    CC=g++
    INCLUDE_DIR = -I./
    INCLUDE_DIR+= -I./depends/raylib/raylib/include
    INCLUDE_DIR+= -I./depends/raygui/src
    LIBRARY_DIR = -L./depends/raylib/raylib
    LIBRARY_DIR+= -L./depends/raylib/raylib/external/glfw/src
    LIBRARY_LINK = -lraylib -lglfw3 -ldl -pthread
    BUILD_DEP = $(INCLUDE_DIR) $(LIBRARY_DIR) $(LIBRARY_LINK)
    
    all: mmatching
    
    clean:
    	-rm mmatching
    
    mmatching:
    	$(CC) controller.c -o [email protected] $(BUILD_DEP)
    
    run:
    	./mmatching;
    
    
    
    build_depends:
    	mkdir -p depends/raygui
    	mkdir -p depends/raylib
    	git clone --depth 1 https://github.com/raysan5/raylib.git depends/raylib
    	git clone --depth 1 https://github.com/raysan5/raygui depends/raygui
    	cd depends/raylib && cmake . && make
    
    patch-back:
    	mv controller.old.c controller.c
    
    
    .SILENT: clean
    

    P.S.:

    Im not have gamepad :( If you don't, then you can apply a patch. Only move and zoom works. The rest I did not touch. Basic keyboard support -> https://gist.github.com/fedor-elizarov/2a14307a34112f8d605ee2198855b8af

    wasd move key pad 1 zoom in key pad 2 zoom out You need to apply a patch for it. Maybe it will be useful to someone

Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem-CP-M This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so ev

Aug 31, 2022
Project is to port original Zmodem for Unix to CP/M and provide binaries and source code for platform specific modification as needed. Based on 1986 C source code by Chuck Forsberg

Zmodem4CPM This repository is intended to foster a RetroBrewComputers community effort to port the original Zmodem source code for Unix to CP/M so eve

Aug 31, 2022
Reverse engineered source code of the engineowning cheat for cod9 (tags, ignore. Fortnite cheat, engineowning, engineowning cracked, cheat cracked, cod cracked cheat, cod cheat source)

engineowning-cod9 Reverse engineered source code of the engineowning cheat for cod9 Cracked by CODEX notinjector = C:\Windows\Release\ .exe drSYS = C:

Oct 12, 2022
Nov 12, 2022
Open Source Cheat for Apex Legends, designed for ease of use. Made to understand reversing of Apex Legends and respawn's modified source engine as well as their Easy Anti Cheat Implementation.
Open Source Cheat for Apex Legends, designed for ease of use. Made to understand reversing of Apex Legends and respawn's modified source engine as well as their Easy Anti Cheat Implementation.

Apex-Legends-SDK Open Source Cheat for Apex Legends, designed for ease of use. Made to understand reversing of Apex Legends and respawn's modified sou

Nov 20, 2022
Sourcetrail - free and open-source interactive source explorer
Sourcetrail - free and open-source interactive source explorer

Sourcetrail Important Note: This project was archived by the original autors and maintainers of Sourcetrail by the end of 2021. If you want to know mo

Nov 27, 2022
Single source file ASTC texture decompression in C++ (derived from Google's open source Android project)

astc_dec astc_dec is a single source file ASTC texture decompressor with the Apache 2.0 license, derived from Google's open source Android sources. Th

Oct 22, 2022
This is the source code of SATCH a SAT solver written from scratch in C.

The main purpose of this solver is to provide a simple and clean code base for explaining and experimenting with SAT solvers. It is simpler than the source code of CaDiCaL and of Kissat in particular, while still featuring most important implementation techniques needed to obtain a state-of-the-art SAT solver

Nov 18, 2022
Official Vanguard Anti-Cheat source code.

Vanguard Official Vanguard Anti-Cheat source code. Using the compiled binary For ease, an unprotected compiled version of Vanguard is available. Downl

Nov 17, 2022
Companion source code for "Programming with C++20 - Concepts, Coroutines, Ranges, and more"
Companion source code for

Companion Source Code for "Programming with C++20 - Concepts, Coroutines, Ranges, and more" 1. Edition Code examples This repository contains runnable

Nov 24, 2022
Rasdisys Open Source code for a LTE eNB on Qualcomm FSM9955

Downloaded on June 1st, 2021 from https://www.radisys.com/OpenRadisys-4G-RAN-Software which clearly stated that this code was licensed under GNU AGPLv

Nov 26, 2022
Flutter-v2 Firebase Messaging, Foreground and Background Notifications + Topic Subscription and Broadcast Notifications Source code

Flutter Notification & FCM The repo is about flutter notification and FCM (Firebase Cloud Messaging). It is updated with Flutter v2 and new updates of

Nov 10, 2022
Some source code to demonstrate avoiding certain direct syscall detections by locating and JMPing to a legitimate syscall instruction within NTDLL.

hiding-your-syscalls What is this? This repository contains all of the source code from my blog post about avoiding direct syscall detections, which y

Dec 1, 2022
Open source release of challenges and other code used in the Hack-A-Sat 2 Qualifier in 2021.

Hack-a-Sat 2 Qualifier This repository contains the open source release for the Hack-a-Sat 2 qualifier from 2021. Released artifacts include: Source c

Sep 18, 2022
Despertar del Cementerio and M33 CFW source code

DC-M33 Despertar del Cementerio and M33 CFW source code This project is a continuation of the M33 Team's work with using modern technics and exploits.

Nov 26, 2022
Source Code for 'Clean C++20' by Stephan Roth

Apress Source Code This repository accompanies Clean C++20 by Stephan Roth (Apress, 2021). Download the files as a zip using the green button, or clon

Oct 8, 2022
Fully reverse engineered source code of a pasted valorant spoofer called archine.

Archine Valorant Spoofer Fully reverse engineered source code of a pasted valorant spoofer called archine. Please do not buy archine spoofer, the owne

Feb 18, 2022
A Bouncing Seal Discord Bot's Source Code.

A Bouncing Seal It's a fun bot with leveling and funny bouncing seal videos. Information Invite Support Server How to run locally You need DPP, follow

Sep 10, 2021
Historic source code for version 0.01 of the Linux kernel

Linux v0.01 Source Code (A historic repository of the first official release of the Linux Kernel) About This Repo This repo is a means of keeping and

Jun 27, 2022