SMASH: Physics-guided Reconstruction of Collisions from Videos, SIGGRAPH Asia 2016
C++ Python CMake
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bundle_physics
common
external
img
smash_blender_plugin
vis
.gitignore
CMakeLists.txt
LICENSE
README.md

README.md

SMASH

Project page: SMASH: Physics-guided Reconstruction of Collisions from Videos,
Venue: SIGGRAPH Asia 2016
Authors: Aron Monszpart1, Nils Thuerey2, Niloy J. Mitra1
1University College London 2 Techincal University of Munich

Teaser Starting from an input video of a collision sequence behind a curtain (top), SMASH reconstructs an accurate physically valid collision (bottom) using laws of rigid body physics for regularization. Note the reconstructed spin (i.e., angular velocity) of the objects.

Videos: Project, Fast forward

Abstract

Collision sequences are commonly used in games and entertainment to add drama and excitement. Authoring even two body collisions in the real world can be difficult, as one has to get timing and the object trajectories to be correctly synchronized. After tedious trial-and-error iterations, when objects can actually be made to collide, then they are difficult to capture in 3D. In contrast, synthetically generating plausible collisions is difficult as it requires adjusting different collision parameters (e.g., object mass ratio, coefficient of restitution, etc.) and appropriate initial parameters. We present SMASH to directly read off appropriate collision parameters directly from raw input video recordings. Technically we enable this by utilizing laws of rigid body collision to regularize the problem of lifting 2D trajectories to a physically valid 3D reconstruction of the collision. The reconstructed sequences can then be modified and combined to easily author novel and plausible collisions. We evaluate our system on a range of synthetic scenes and demonstrate the effectiveness of our method by accurately reconstructing several complex real world collision events.


This repository

Dependencies

Eigen (link)
OpenCV (link)
Core modules: Contrib modules:
imgproc cudabgsegm
highgui cudalegacy
core xfeatures2d
Note: see opencv_contrib/README.md for installation.
[Google] Ceres (link)
VTK (link)
  • vtkCommonMath
  • vtkCommonCore
  • vtkRenderingOpenGL
  • vtkRenderingLOD
  • vtkInteractionStyle

Platform

The code was developed and tested on Ubuntu 16.04 LTS with gcc 6.2.


Installation

git clone git@github.com:amonszpart/SMASH.git
cd SMASH
mkdir build && cd build
cmake [-DOpenCV_DIR=<path/to/opencv/share/OpenCV>]..
make -j 8

Example

wget http://geometry.cs.ucl.ac.uk/projects/2016/smash/paper_docs/smash_data.zip
unzip smash_data.zip
cd data/duckElephant
cat run.sh
../../bin/smash --intr intrinsics.txt \
                --frames 0,101,203 \
                --init 2dparabolasInit.json \
                --cub cuboids.json \
                --img-pattern orig240/color_%05d.jpg \
                --fps 240 \
                --show-flags 100000 \
                --weight-velocity 3.16 \
                --weight-conservation-lin 3.16 \
                --weight-observed-q 1. \
                --weight-observed-x 3.16

SMASH Blender plugin

  • Open the user File -> User Preferences,
  • select the Add-ons tab,
  • press Install from File and
  • select smash_blender_plugin/physacqPanel.py.

If you want it to be enabled on restart, press Save User Settings.


TODO

  • Rest of the dataset
  • Initialization code