660 bytes
a=[];b=100;c=30;m=Math;function f(a){return m.sqrt((a[0]*a[0])+(a[1]*a[1])+(a[2]*a[2]))}function g(a){l=f(a);return[a[0]/l,a[1]/l,a[2]/l]}function i(a,t){return[a[0]*t,a[1]*t,a[2]*t]}function j(a,b){return[a[0]+b[0],a[1]+b[1],a[2]+b[2]]}function k(p,a){a=.005;return f(p)-.6+m.sin(p[0]*15+r*a)*.05+m.cos(p[1]*15+r*a)*.05}function v(){for(t=.2;t<6;){h=k(j(d,i(e,t)));if(h<.001)return t;t+=h}return 10}n=" !0%@M##@@.";d=[0,0,.9];function o(){r=+new Date();for(y=0;y<c;y++){s=[];u=y/c;for(x=0;x<b;x++){t=x/b;e=g([(-1+2*t)*b/c/2,-1+2*u,-1]);w=v()*10;s[x]=n[m.floor(m.min(w,10))];}a[y]=s.join("");}document.body.innerHTML=a.join("<br>");requestAnimationFrame(o)}o()