The animations on this page were generated using the Markov chain Monte Carlo, or MCMC, algorithm for solving multi-body constraint problems. All the animations are in Quicktime format, with no audio. They were generated from frames intended for video, so the quality is high, but so is the file size.
|The first example is a physically simplified 2D ball bouncing such that it lands near a specific point, indicated by the green target. The surface normal at each collision point, each red arrow, is allowed to vary. We associate a probability density function with this scenario that defines normals near vertical as more likely than other. To enforce the constraint, we modify the distribution to favor sets of normals that cause the ball to land near the target. Our MCMC algorithm then samples sets of normals according to the distribution. A sequence of animations was produced, from which we randomly chose the five shown below. Note that the ball does not always land at the center of the target. Such unacceptable animations could easily be filtered out if a user so desired. This example does no look very realistic, due to the poor underlying physical model. We use it here only as a simple example.|
|This set of examples shows constrained ten-pin
bowling shots. On the left are three very different strikes, coming from
different parts of the lane and with different speeds. We did not explicitly
request any particular style of strike - our algorithm explores the space
of possibilities without user intervention.
The bowling model allows for variation in the size and mass of the ball, its release point and its linear and angular velocities. The position of each pin is also allowed to vary slightly. A user specifies which pins are standing and which should remain standing at the en, so we can specify any bowling shot. The MCMC algorithm generates a sequence of animations in which the desired outcome is more likely than any other.
This model uses an impulse-based simulator, which is adequate for capturing the behaviors shown, but lacking the quality friction model required to knock down a seven-ten split. Our method will not produce animations that the simulator says can never happen, which is essential for ensuring that only plausible simulations are generated.
|On the left are four rounds, in which the leftmost
shot sets up a six-seven split, and the second shot bowls the spare. The
set-up shot is hard to bowl, because it is difficult to knock down the
lower left pins while leaving the six pin in place. The spares do not show
much variation - there are not many ways to bowl such a shot.
The strikes came from a single MCMC chain, the splits from another and the spares from a third. Each chain ran for a few hours on a 200MHz PC, and produces hundreds of examples of each shot. Fewer of the split shots were generated because the constraints are difficult to satisfy.
The split set-up shots have similar initial conditions, but generate very different animations. This chaotic behavior makes multi-body constraint problems difficult to solve, because a small change in the simulation parameters can cause major, discontinuous changes in the quality of the outcome with respect to the constraints.
|These examples demonstrate marbles that spell words. The marbles move quickly because they are small, hard and dense. Each falls from a random location above the partitioned box, in this case spelling HI. The partition shape is allowed to vary slightly - too little to be perceived in this rendering. All of these examples were hand chosen from a single chain that produced around 100 good animations in a five hours run of 10000 iterations on a 200MHz PC.|
|In this bigger example, 30 balls fall into 105 bins. These solutions were hand chosen from a chain that produced several hundred examples in 200000 iterations, taking seven days to compute on a PC. The longer computation time is due to the greater number of balls, because each simulation takes longer and the constraints are much harder to satisfy.|
|Finally, we show slow motion dice that are controlled by varying the shape on the table on which they bounce. Each die was animated separately, and a different table was used for each. The dice all have the same distribution on initial conditions. We did NOT manipulate the texture maps - the dice were told to land with a particular side up in a particular place. It took an hour or so to find a good trajectory for each die.|
Back to Directing Physics home