Dice Algorithm Problem

Lets say I have a few dice models, I get them loaded up, apply ODE and bounce them around in a small box.

Not terribly difficult, a few days and I figured it out for the most part and they are happy little campers.

But now I’m wondering, how do I determine which side is up on each die when they come to rest?

Any ideas?

Match the H/P or R rotations of the dice node, using node.getHpr(), with the side of the face.

For instance, (You’ll have to determine which way is correct), if your dice has a 4 on top when it’s node.getP() value is 0, then you know:

if dice.getP() == 0:
    diceSide = 4
elif dice.getP() == 180:
    diceSide = 0 # whatever the other side is

Soo, you get the idea. You’ll have to match the correct rotation’s with the side of your dice (it depends on how it’s modeled)


P.S. This probably belongs in Scripting Issues

Yes, that looks promising. Seeing patterns if I print the hpr of each die in the simTask. Thanks.


The parallel sides on a regular six-sided cube always give a sum of 7 (although a zero would be quite funny, too)

Something you need to remember if you don’t like to be cheated at games :smiley:

Alternative to that is to make empties on center of each side and properly tag them. After that, just iterate trough them and see which one has highest apsolute Z coordinate.