The Interactive & Immersive HQ

Five Creative Prompts to Kickstart your next TouchDesigner Project

Missing inspiration? Here are some ideas to help you find it. Take a look at these five prompts for your TouchDesigner projects and let’s get creative. […]

prompts for touchdesigner projects, the interactive & immersive hq

Missing inspiration? Here are some ideas to help you find it. Take a look at these five prompts for your TouchDesigner projects and let’s get creative.

Sometimes a lack of inspiration just happens. Maybe you’re already developing a project but hit a dead end. Or maybe you’re still in the early stages and don’t know how to begin. In my personal opinion – and experience – we often struggle with creativity simply because we approach things the same way every single day.

Each of us has our own mental routines, but every now and then those routines can limit us. So when we need some fresh air, we can use prompts to boost our creativity. Let’s take a look at five examples.

Use as Few Operators as Possible

Simplicity is the ultimate sophistication (Leonardo da Vinci)

Minimalism can be embraced in every aspect of our lives, and TouchDesigner is no exception. So when we’re searching for fresh perspectives, applying minimalism to our projects can open the door to interesting ideas. What about creating a patch with just four operators?

The idea is to visualize a dictionary definition. First, we create a Text TOP. Then we add a Web Client DAT and set the URL for the request. For this example, I am using the Free Dictionary API, a lovely project that allows us to retrieve word definitions via API.

This is the structure of the API:

https://api.dictionaryapi.dev/api/v2/entries/en/cat

To dynamically change the word, we can simply reference our Text TOP at the end of the URL. This is the result:

“https://api.dictionaryapi.dev/api/v2/entries/en/” + op(‘text4’).par.text

To get the JSON data, we can add this script in the Web Client callback Text DAT:

import json
def onConnect(webClientDAT, id):
	return
def onDisconnect(webClientDAT, id):
	return
def onResponse(webClientDAT, statusCode, headerDict, data):
    body = data.decode('utf-8')
    clean = op('text3')
    clean.clear()
    clean.write(body)
    return

The script stores data inside a Text DAT. Finally we connect it to a JSON DAT and we apply this path filter:

$[0].meanings[0].definitions[0].definition

So, when we write a word in the Text TOP and make a new API call request in the Web Client DAT operator, we get the word definition.

That’s all! A simple visualization with just four operators.

Make Mistakes

Honor your mistake as a hidden intention (Brian Eno)

Intentional mistakes can sometimes open the door to new inspiration. In fact, the whole glitch culture was essentially born from this idea. So let’s make some nice glitchy visuals.

The starting point of the patch is the WebBrowser component (you can find it in the Palette), which plays a one-hour YouTube video of 80s commercials. We simply insert the URL in the parameters and open the video in full screen. Then we add a Null TOP, convert pixels to samples with a TOP to CHOP operator, and select the red and blue channels.

The red channel goes into a Noise CHOP, is converted back to a TOP, and is dynamically cropped using the Noise values. The blue channel is used to reorder the alpha channel with a Reorder TOP. Finally, we composite the original video stream with the modified signal to create a nice effect that resembles the kind of signal interference typical of the analog televisions of my childhood.

Use Code

It works on my machine (anonymous programmer)

OK, don’t make that face. Coding can actually be a lot of fun, and it allows us to think differently when approaching a new project. Python is our friend and, thanks to its clarity and data structures, it can lead us to unexpected creative results.

In this example, I wanted to visualize the DNA helix structure using Python inside TouchDesigner. Luckily for me, I found a well-structured Python script on Stack Overflow that I adapted for my needs.

So, here’s the code:

import math

phaseA = math.pi/1.5
phaseB = 0
step = math.pi/80
num_points = int(30.0 / step)

table = op('table1')

table.clear()
table.appendRow(['point', 'x', 'yA', 'zA', 'yB', 'zB', 'helix'])

x = 0.0
point_index = 0

while True:
    x += step
    if x > 30.0:
        break
    
    yA = math.sin(x + phaseA)
    zA = math.cos(x + phaseA)
    yB = math.sin(x + phaseB)
    zB = math.cos(x + phaseB)
    
    table.appendRow([
        point_index,
        x,
        yA,
        zA,
        '',
        '',
        'A'
    ])
    
    table.appendRow([
        point_index,
        x,
        '',
        '',
        yB,
        zB,
        'B'
    ])
    
    point_index += 1

The script generates the points for the two DNA filaments, which are stored inside a Table DAT. We then create two Sphere SOPs, instance them using the data from the Table DAT, render them, and composite the results. To add some extra vibe, we can rotate the filaments with a simple CHOP workflow.

And voilà! An elegant visualization of the DNA helix.

Get Our 7 Core TouchDesigner Templates, FREE

We’re making our 7 core project file templates available – for free.

These templates shed light into the most useful and sometimes obtuse features of TouchDesigner.

They’re designed to be immediately applicable for the complete TouchDesigner beginner, while also providing inspiration for the advanced user.

Use Text

I can’t believe it! Reading and writing actually paid off (Homer Simpson)

TouchDesigner offers so many operators for creative purposes that sometimes what we really need is to go back to the roots. What I mean is that we can kickstart a project by focusing on basic elements, such as text. Let’s look at an example.

We create a Text SOP and duplicate it 8 times using a Copy SOP. Then we connect it to a Texture SOP and render it. We use a Phong MAT and a Ramp TOP as the color map. On the CHOP side, we create a Pattern CHOP and a Noise CHOP, merge them, and visualize their history with a Trail CHOP. We use this data to drive rotation, translation, and scaling of the text copies along the Y axis. We also use the same data to modify parameters in the Texture SOP and to instance the geometry along the Y axis.

Finally, we add some blurring and caching operations before compositing everything together to achieve our final visual effect.

Use Only One Operator Family

Rejoice with your family in the beautiful land of life (Albert Einstein)

Constraining our workflow to a single operator family can be surprisingly creative. It forces us to rethink the entire project with a completely new logic, which can lead to interesting results.

So, since the POP operator family is the big recent news, why not create a project using only POPs?

Here are some articles to help you get more familiar with POPs:

Wrap Up

When inspiration is missing, we need a strategy to bring it back. As we have seen, there are several ways to kickstart your next TouchDesigner projects with unconventional perspectives and out-of-the-box ideas. Since there is no perfect recipe, start experimenting on your own, find your path, make mistakes, and repeat. As always, the sky is the limit.

Download the patch

Subscribe to Immersive Mondays, the only newsletter for professionals working in immersive design, creative technology, and interactive media.

Our Categories