You're asking a pretty complex thing. As others said, your best bet would be a physics library.
Faking it works okay with perfectly round spheres, but it'd probably be pretty hard to get a fake that works with an egg, and you can probably forget about more complicated shapes.
In order to model this yourself, I think you need to move the object forward, and use the points where it contacts the ground to apply rotational motion to it. In other words, if you have a simple ball, and you push it forward, the point where it contacts the ground moves backward relative to the center of mass. This pulls that point backward, which in turn causes the ball to roll forward, and another point to come into contact with the ground instead.
Imagine you place a pivot at each point where the object comes into contact with the ground. These pivots are pixed to the surface of the object, but also fixed in positon where they touched the ground. As you push the center of mass of the object forward, you pivot the object around the pivots that are in contact with the ground. This in turn causes some of the pivots to lose contact with the ground.
In some cases you might have three or four pivots touching the ground. The other pivots must limit the way the object moves, but they must also be allowed to lose contact with the ground if need be. I'm not sure how you decide which pivots are important and which are not.
Anyway you can see it's pretty complex. And what I talked about doesn't even take into account the possiblity of the pivots sliding across the ground with ground friction. If you push a table at a certain height it'll just slide along the ground. If you push it higher up though and apply enough force, it might tip over.
Faking it works okay with perfectly round spheres, but it'd probably be pretty hard to get a fake that works with an egg, and you can probably forget about more complicated shapes.
In order to model this yourself, I think you need to move the object forward, and use the points where it contacts the ground to apply rotational motion to it. In other words, if you have a simple ball, and you push it forward, the point where it contacts the ground moves backward relative to the center of mass. This pulls that point backward, which in turn causes the ball to roll forward, and another point to come into contact with the ground instead.
Imagine you place a pivot at each point where the object comes into contact with the ground. These pivots are pixed to the surface of the object, but also fixed in positon where they touched the ground. As you push the center of mass of the object forward, you pivot the object around the pivots that are in contact with the ground. This in turn causes some of the pivots to lose contact with the ground.
In some cases you might have three or four pivots touching the ground. The other pivots must limit the way the object moves, but they must also be allowed to lose contact with the ground if need be. I'm not sure how you decide which pivots are important and which are not.
Anyway you can see it's pretty complex. And what I talked about doesn't even take into account the possiblity of the pivots sliding across the ground with ground friction. If you push a table at a certain height it'll just slide along the ground. If you push it higher up though and apply enough force, it might tip over.