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
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
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.
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
The code was developed and tested on Ubuntu 16.04 LTS with gcc 6.2.
git clone [email protected]:amonszpart/SMASH.git
cd SMASH
mkdir build && cd build
cmake [-DOpenCV_DIR=<path/to/opencv/share/OpenCV>]..
make -j 8
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
- 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.
- Rest of the dataset
- Initialization code