What 'axis vis3d' does is freeze the aspect ratios at their current values. This is useful if you're going to rotate the object, because otherwise MATLAB will keep computing new aspect ratios for each frame.
But in a case like this, you might want a particular aspect ratio, rather than the one that MATLAB computed on the first frame. In that case you're going to want to set the aspect ratio, instead of just freezing the one you have. There are a couple of options here.
If you look at "teapotdemo", you'll see that it does this:
That means that it should make the scale factors it's using for each of the X, Y, & Z directions be exactly the same. The result looks like this:
That's probably what you want here. But if you rotate it, you'll see that it still jumps around a bit. That's because the axes is still trying to take as much of the figure as possible, and it'll keep adjusting things like the limits, even if it can't adjust the scales.
So another option is this:
This does the same thing as daspect([1 1 1]), but it also locks the limits and "plot box" down. The result looks similar:
But there's even less jumping as you rotate it around.
Does that make sense?