Equivalent of Feedback TOP with SOP Geometry?

I love using feedback with TOP networks and was wondering if there is some kind-of equivalent way to control feedback with SOPS? By that I mean being able to add, subtract geometry piece by piece without blowing up CPU load and killing frame rate, ideally similar to how you can use opacity slider in a feedback loop with TOPS. I would like to be able to build up or subtract points, lines etc at will to achieve a similar level of amazing results like we can get with TOP feedback…

What I have tried today is Copy SOP with CHOP control by LFO’s, which is promising but not quite what I want yet. Any suggestions gurus? Sorry I have not searched too deeply yet, but just looking for best starting direction…

Instancing sort of does this for you, just perhaps not in the same way. SOPs work on the CPU, so anything you do exclusively in SOPs is going to be heavy on the CPU.

Thanks luxnaut. Yes it sounds like it will be some form of SOP instancing - that is what I am working on now, with some sort of controlled adding and subtracting, and I realize that can be CPU intensive. The trick will be to keep it from blowing up the way big L systems do after ten generations say. I am trying to figure out how to do this controlled adding and subtracting of parts of geometry now. Not super familiar with SOP family yet…

Trail SOP does basically a feedback type effect with geometry, but its CPU SOPs so your input geometry needs to be simple or it will ‘blow up your CPU’.

Try it with a Box SOP first.

Thank you Ben. I will try that out! In theory could we do some sort of python query about number of polygons each frame then react to cull geometry if it is blowing up too much cook time?

I tried turning off cooking with a CHOP EXECUTE but my first experiment with feeding back geometry via a Merge crashed before I could kill it. It is this throttling ability of geometry by balancing adding and subtracting I am hoping could be possible. Is there some easy way to stop a process when frame rate gets too low? (before td crashes) Line of python maybe?

its possible with some glsl magic… its like writing each frame of 3d geo animation to a texture wich holds the positions of each vertex, and have the instancer read that texture the next frame. its complex to set up but runs smooth… use this if you want to trail your 3d model animation…
here’s a tutorial wich explains the technique Instance and offset an animated FBX using GLSL in Touchdesigner - Part 2 - YouTube

Since you already tried the Copy SOP - did you also venture a bit into the parameter stamping ideas? As this let’s you go “backwards” in the network you can achieve a more iterative result… not really feedback but thought I mention it.

@pantov2 thanks for the link - I will take a look but am no GLSL code writer yet (I do have one book on it to try).

@snaut - thanks Markus - I don’t really know what you mean by “parameter stamping” but I will look it up. Is there a good place to learn about the origins and motivations for all the SOPS? I find the op snippets useful but a bit cryptic. I am wondering how to best apply all the adding/subtracting geometry ideas. Where they mainly intended to do small geometry edits of 3D models given how heavy they are in cook time?

Hey @gordharris,

check out the snippets for the Copy SOP, there is an example showing how stamping can be used to change the parameters of the input operator branch to the SOP.

Any stamp parameter defined on the Stamp page of the Copy SOP’s parameters, can be used via fetchStamp('stampparmname', [default value]).
Things you can do with this is for example changing the number of points of a circle depending on what copy index it is or change the geometry alltogether by controlling the index parameter of a Switch SOP.


Thank you very much Markus! I will check that out! Much obliged for the hints.