Posted 14 January 2014 - 04:26 PM
If you already have a physics engine, you just need a box container and the dice. While they are shaking you apply a force to keep the dice suspended and apply torques and forces based on the shaking of the controller. Then you just let them go and allow the physics engine to run until stable. You can get the object's orientation from the physics system and do a small bit of math to determine which side is 'up'.
Unfortunately many problems abound. The dice don't always land well, sometimes they touch each other or the corners of the box, making it difficult to decide what way is up. In a real world situation you might reroll those dice. Physics engines produce numerically pleasing results, but not visually pleasing results; even after many adjustments to the physics configuration it is difficult to make dice appear as you expect them to look. There is the strong possibility of cheaters, people who will not vigorously shake the dice but very carefully tumble them midair until they hit a good position and then carefully release them. If you have network play, trying to keep the details in sync is a nightmare.
All told it is much easier to have animators put together a few animation sequences. You can use the player's input to help feed the random number generator, but really you are just picking the number and then playing the corresponding animation. You might have animators create multiple animations for some of the numbers if you are afraid of them appearing too common.
We also learned that players really don't want long dice rolling sequences. They want to play a game, not watch movies of dice rolls. Just let them push a button to display a random result.
I worked on a Wii app where we tried something similar, but it was a mistake. I assume you have a motion sensitive controller, perhaps such as a phone with accelerometers.