Where do the well-versed learn their trade?

Hi,

I have a rather lengthy set of queries that have been bugging me ever since I started trying to learn TouchDesigner. Generally, this query is:
“Where/how do people learn about the principles underlying manipulating CHOP, SOP and TOP data in TouchDesigner?”

But really what I’m asking is how can I equip myself with the tools and knowledge to experiment with these in the right way. Thus far,

I’ll use one tutorial from Simon Alexander Adams as an example, but I find myself asking the same question after nearly every tutorial that I watch, regarding TOP operations, clever use of Noise data…

In this tutorial, he uses a ‘Grid’ SOP to generate data, and then uses this to position series of lines running across the screen.

He then uses a Noise TOP, with a specifically tailored resolution to reflect the data generated by the Grid SOP. He prepares data from this Noise TOP to be compatible with data from the Grid SOP, so that it can manipulate the lines across the screen to a particular aesthetic effect.

It carries on such that he manipulates the form and colour of the lines even further with data from a rotating square and more Noise TOPs.

I think this tutorial is great, but the same queries strike me when I see so many other TD tutorials. It seems to me that there is a high functioning knowledge at play here with regard to manipulating data that describes 3D form and image texture, thus manipulating what we see on the screen.

While I have had some success, merely experimenting with manipulating this data via pattern CHOPs etc generally proves too ham-fisted an approach. There is a high level of specificity to the way that the data needs to be processed before it can be effective in manipulating data for a particular source; where do people learn about these principles?

Are these sort of mechanics unique to TouchDesigner as a platform or are they also reflected in other platforms that might be built from a loosely-similar foundation?

Do people learn this from learning TouchDesigner in-depth or in an academic environment? Is it experience that they carry over from graphic shading or computer game-design?

Where can I learn about these principles and theory?

Also as an aside: I’ve to write about my efforts for a thesis, so any resources (apart from the wiki docs which are great) that decently explain the nature of TouchDesigner and its operations to an outsider would be great!

2 Likes

Hi there,

I think everyone learning TouchDesigner have their own path they follow, some have a design background and get introduced to programming through TD, some already have a coding background.
So I dont think there is 1 answer to your question, it really depends on what you are interested
in and what your background is.
Nowadays I guess it can be hard to find the right tutorial since there are millions of them. A
good place to start is Jan’s alltd.org, but still hard to pick 1 perfect path to follow.

Concerning TOPs, CHOPs and SOPs. It may feel confusing that data sometimes is processed as SOPs, CHOPs or TOPs. To understand what is happening you’ll need to know what those operator
types are representing.

SOPs (surface operators) are used for manipulating 3d objects (vertices, triangles/quads, colors etc.). Like you mentioned a GridSOP, which is a rectangular object with multiple vertices
layout in a grid (similar to a rectangleSOP, but with more vertices).

TOPs (texture operators) are used to manipulate data on your GPU (graphical processing unit). Most operations are run on your graphics card in a parallel fashion (which is way faster than
the CPU (serial)). This can be confusing if you only think about TOPs as being rendered output
(such as a renderTOP or circleTOP that shows an image as output). However you can use TOPs a
different way (like simon is doing as well), where every pixel is a data point. The RGBA values
can be represented as 4 different floats and used like for example as X Y Z positions. Then using different TOPs you can manipulate lots of positions super fast. (like adding a
noiseTOP to displace the positions gradiually).

CHOPs (channel operators) are used to manipulate data on your CPU. So for example if you have a CHOP with 3 channels (x y and z) and 100 samples. If you would like to displace them (for example with a noiseCHOP) you can add values using a mathCHOP. Similar to the TOP way, but in
this case it’s processed on your CPU (serial), so it’s slower.

You can move data back and forth using soptoCHOPs, choptoSOPs, choptoTOPs, toptoCHOPs. Though this process of converting (especially chop<->top, which is cpu<->gpu) is rather slow, so best
is to do this as minimal as possible.

Not sure if this very brief summary helps a little, my advice is to play around alot. Try for example creating a tableDAT with 3 columns calling them x, y, z. Then adding multiple rows and
adding in arbitrary positions. Convert it to chops (dattoCHOP), so you get a chop with 3
channels and the amount of points as samples. Then use a choptoTOP, so see how it looks in
TOP world. There is a wonderful feature Derivative added not so long ago, that you can view
your TOP data (pixels) as points. (by pressing ‘V’ when the operator is viewed/active (little + sign in the right corner)). Then from there on try to get those positions in SOPs to see it
in a geometryCOMP, etc. Playing around (for me at least) is the best and most fun way to learn.

It may feel like a big mountain to climb in the beginning, but if you focus more on the little steps and the fun of rediscovering/learning/growing, you suddenly look back a month from now and realized you learnt so much. It’s quite the rabbit hole :smiley:

Cheers,
tim

5 Likes

I think one thing you can try to do when either converting data from OP family types or manipulating one type of data with another is try to do it 1-to-1 when you start out.

For example, If you have a Sphere SOP with 400 points on on it, try to use TOPs with 400 pixels or a CHOP channel with 400 samples. This 1:1 approach will let you see more closely what is happening. The TOP might be 1x400 or 20x20, depending on what you are trying to achieve, but simplifying it down to this 1:1 data might help you explore that data more easily. At the very least, it is the most optimal way to unique data for each datapoint.

This is probably what Simon Adams was doing in the tutorial when he had a Grid SOP and then prepared a specific Noise SOP - making sure to use 1-to-1 to make the mapping easier and also save on resources and memory.

1 Like

Thanks very much for your responses guys!