Yes yes its allmost working allready. But i havea bit fo indexing problems in the around direction.
how could one work with the all purpose deformer softbody?!?!
Softbody makes it a particle object, and then you can run a particle expression on the objects vertices. Since that is what a deformer IS it makes a particle object a defomer with custom input. Lets take something simple, like makeing a noise deformer.
Its not a ideal deformer (since maya 5 or so) if you change the number of polygons during the nimation but as long as you change the number in the first frame its ok.
Heres a trivial exemple:
file -f -new;
-activeOnly false modelPanel4;
polyCone -r 1 -h 2
-sx 20 -sy 7
-sz 3 -ax 0 1 0
-rcp 0 -cuv 3 -ch 1;
// there is no noise deformer,
// but theres softbodies
addAttr -ln pos1 -dt vectorArray pCone1ParticleShape;
dynExpression -s ".pos1=.pos;.pos=.pos1+noise(.pos1)*0.3;" -c pCone1ParticleShape;
// now maya history appears to have gone,
// it hasnt ist still there its just not
// visible in attribute editor or channelbox
// maya just does not traverse over the partcile object
// see the hypergraph.
// But see we can still change the values of the cone:
setAttr "polyCone1.height" 5;
setAttr "polyCone1.subdivisionsHeight" 20;
// now they broke softbodies in maya 5 because now it
// caches too much, but yes its still there:
currentTime 1 ;
// however since i dont update this runtime it
// only updates on frame 1
you could animate the results too.
Now since a torus knot is only a deformed torus its possible to just move the points in place, since the number of points wont change (but even if they would you could still make it work with this method just a bit hacking involved thats all) , you can just animate the mesh/nurbs directly in the particle expression.
Now the problem with polycount changing mid anim is fixable you need is one deformer node in between to kill the caching. But then making a custom deformer is not more complex than using particle expressions in first place.
PS you havent suggested yet the second way you could do this.