Tag Archives: blend

Nov 12 2014

Cycle CHOP tutorial.

The Cycle CHOP. TouchDesigner 088. 2014.
The Cycle CHOP allows you to create customized behaviors for out-of-range Channel Operator values. It can help you design loop cycles from input sources with mismatched heads and tails.

1
00:00:00,267 –> 00:00:03,333
Let’s take a look at the cycle
CHOP.

2
00:00:03,333 –> 00:00:09,767
The cycle CHOP creates cycles,
or repetitions, of incoming CHOP
data.

3
00:00:09,767 –> 00:00:15,633
I’ve built 2 example networks,
let’s take a look at the first.

4
00:00:15,633 –> 00:00:23,333
If a CHOP channel contains many
samples, the first and last
sample value may not always
match.

5
00:00:23,333 –> 00:00:30,033
The cycle CHOP can create a
seamless blend, so the CHOP
loops smoothly.

6
00:00:30,033 –> 00:00:40,567
I’m animating a circle, using a
noise CHOP as a constraint, and
using feedback to visualize its
path over time.

7
00:00:40,567 –> 00:00:48,567
You can see the circle follows
the path defined by the sample
values of the noise CHOP.

8
00:00:48,567 –> 00:00:57,667
The start and end values are
very different, so we get a gap
in the in and out loop points.

9
00:00:57,667 –> 00:01:06,600
We can use a cycle CHOP to force
the start and end values to
match, creating a seamless loop.

10
00:01:06,600 –> 00:01:14,033
Notice I’m not creating any
extra cycles, we’ll examine that
feature next.

11
00:01:14,033 –> 00:01:27,800
I changed the blend region from
0 to 1 second, which pushes the
start value towards the end
value, and the end value towards
the start value.

12
00:01:27,800 –> 00:01:34,533
When I turn off the blend
region, you can see the loop
points are mismatched.

13
00:01:34,533 –> 00:01:45,833
You can use the cycle CHOP to
sculpt incoming channel data,
making it more or less suited
for smooth looping.

14
00:01:45,833 –> 00:01:52,433
Now let’s take a look at how we
can use the cycle CHOP to create
loops.

15
00:01:52,433 –> 00:02:01,533
We start with a wave CHOP and a
noise CHOP, and feed those two
into a cross CHOP.

16
00:02:01,533 –> 00:02:07,233
I set the cycle CHOP to loop the
incoming channel data twice.

17
00:02:07,233 –> 00:02:16,633
The cycle CHOP can create loops
both before and after the
initial range of incoming sample
data.

18
00:02:16,633 –> 00:02:28,400
When using the “Mirror”
parameter, remember that the
incoming samples are not
mirrored, only the new cycles
that are created by the cycle
CHOP.

19
00:02:28,400 –> 00:02:41,800
By combining CHOPs using
operators like the cross and
cycle CHOPs, you can create
waveforms that are very exotic
and original.

20
00:02:41,800 –> 00:02:48,733
You can use these waveforms to
drive animations of all types in
Touch Designer.

21
00:02:48,733 –> 00:02:53,833
Notice the incoming CHOP has
only 60 samples.

22
00:02:53,833 –> 00:02:59,800
When we create new cycles, we
extend the sample range of the
CHOP.

23
00:02:59,800 –> 00:03:01,800
As I add new cycles, the sample
range grows accordingly.

Posted In
Tagged
Nov 12 2014

Cross CHOP tutorial.

The Cross CHOP. TouchDesigner 088. 2014.
The Cross CHOP is a multi-input Channel Operator that allows you to interpolate between input values.

1
00:00:00,200 –> 00:00:03,067
Let’s examine the cross CHOP.

2
00:00:03,067 –> 00:00:12,900
The cross CHOP allows you to
switch between multiple inputs,
but interpolate between the
incoming values.

3
00:00:12,900 –> 00:00:20,167
You can use integers as cross
values to simply switch between
inputs.

4
00:00:20,167 –> 00:00:31,133
I’ve created a box SOP with its
“sizex” parameter referencing
the cross CHOP channel named
“chan1”.

5
00:00:31,133 –> 00:00:35,733
This will help you visualize the
cross CHOPs’ effect.

6
00:00:35,733 –> 00:00:49,367
The interpolation is straight,
or linear, so a cross value of
.5 will blend the first 2 inputs
at 50% each.

7
00:00:49,367 –> 00:00:51,367
The cross CHOP is a commonly
used operator that can
compliment or replace standard
switching.

Nov 12 2014

Sequencer CHOP tutorial.

The Sequencer CHOP. TouchDesigner 088. 2014.
The Sequencer CHOP allows you to create complex animation sequences. This is a specialized Channel Operator, and it can be difficult to master.

1
00:00:00,833 –> 00:00:05,133
Let’s examine the sequencer
CHOP.

2
00:00:05,133 –> 00:00:16,067
The sequencer CHOP is an
operator that allows you to
create and control complex
animation sequences.

3
00:00:16,067 –> 00:00:24,400
The sequences are held in CHOPs,
and referenced by a table DAT.

4
00:00:24,400 –> 00:00:33,633
Each CHOP can represent a simple
animation state, or a complex
animation.

5
00:00:33,633 –> 00:00:43,467
In this network I’ve built a
series of 5 animations that
control a character.

6
00:00:43,467 –> 00:00:51,433
The character is a simple face
with 5 possible animatable
features.

7
00:00:51,433 –> 00:01:02,733
We can animate the eyes and the
mouth, with simple values for
rotation, position, and scale.

8
00:01:02,733 –> 00:01:12,567
Each of the 5 constant CHOPs
holds 5 animation states for
each facial feature.

9
00:01:12,567 –> 00:01:24,333
The sequencer CHOP gives us the
ability to dynamically choose
any state we want, and blend
them together over time.

10
00:01:24,333 –> 00:01:31,367
We can combine static, or still
states, with complex animations.

11
00:01:31,367 –> 00:01:41,033
The face character is a network
of TOPs and SOPs that lives
inside a container component.

12
00:01:41,033 –> 00:01:45,400
I’ve built a mouth from a line
SOP.

13
00:01:45,400 –> 00:01:55,967
We can animate the 3 points on
the line: 2 for the left and
right side, and 1 for the
middle.

14
00:01:55,967 –> 00:02:01,000
The eyes are constructed from a
rectangle TOP.

15
00:02:01,000 –> 00:02:11,067
We vary the rotation and scale
of the rectangle to create
expressive animations.

16
00:02:11,067 –> 00:02:18,633
I won’t go into detailed
explanation of this network, you
can explore it on your own.

17
00:02:18,633 –> 00:02:33,200
The most important note is that
I use Python expressions to
reference the values stored in
the constant CHOPs above this
container.

18
00:02:33,200 –> 00:02:46,100
These values are the rotation,
position, and scale values that
drive the facial animation.

19
00:02:46,100 –> 00:02:56,000
Now that we’ve seen how the face
is constructed, let’s look again
at the complete network.

20
00:02:56,000 –> 00:03:03,967
The sequencer CHOP is now
referencing the constant CHOP
named “BASE”.

21
00:03:03,967 –> 00:03:14,000
I can adjust the values of the
base animation state, and see
the results applied to the face
character.

22
00:03:14,000 –> 00:03:22,500
By doing this, you will realize
that to create a new animation
state is a simple matter.

23
00:03:22,500 –> 00:03:35,167
You can copy the “BASE”
operator, add it to the
sequence, and adjust the
parameters to create a new
facial expression.

24
00:03:35,167 –> 00:03:42,100
This is the method I used to
create the following 4 animation
states.

25
00:03:42,100 –> 00:03:54,067
The last animation is here to
showcase the ability of the
sequencer CHOP to combine static
states with complex animations.

26
00:03:54,067 –> 00:03:58,933
I created this animation from 5
noise CHOPs.

27
00:03:58,933 –> 00:04:07,167
Each will generate random
states, over time, for each of
the 5 facial features.

28
00:04:07,167 –> 00:04:19,233
For this, or any animation, to
work properly with the sequencer
CHOP, you need to pay close
attention to how your channels
are named.

29
00:04:19,233 –> 00:04:26,367
I’m using 2 Python scripts to
control the sequencer CHOP.

30
00:04:26,367 –> 00:04:40,767
The logic is simple: 1st, copy
the contents of the table DAT
named “felipeSequence” to the
DAT named “sequencer1_sequence”.

31
00:04:40,767 –> 00:04:51,333
The reason we use a custom table
to create our sequence will
become apparent in a moment.

32
00:04:51,333 –> 00:04:54,800
Next, we reset the sequencer
CHOP.

33
00:04:54,800 –> 00:05:06,800
This forces the sequencer to
load the 1st entry in the table
DAT, which in turn, points to
the 1st animation CHOP.

34
00:05:06,800 –> 00:05:10,833
Now, our sequence is loaded and
ready.

35
00:05:10,833 –> 00:05:17,567
This script simply tells the
sequencer CHOP to step to the
next sequence.

36
00:05:17,567 –> 00:05:20,533
Now let’s step through some
animations.

37
00:05:20,533 –> 00:05:24,167
Pay attention to the sequencer’s
table DAT.

38
00:05:24,167 –> 00:05:32,200
You’ll see that at the end of
each sequence, the row
containing that sequence is
deleted.

39
00:05:32,200 –> 00:05:36,533
The second row of the table DAT
is never deleted.

40
00:05:36,533 –> 00:05:41,833
That’s why I use it to store a
base animation state.

41
00:05:41,833 –> 00:05:46,267
Let’s step through the entire
process again.

42
00:05:46,267 –> 00:05:50,000
I run the “LOAD_SEQUENCE”
script.

43
00:05:50,000 –> 00:05:59,833
This fills the sequence table
with our custom contents, and
resets the sequencer so it’s
ready to play the next
animation.

44
00:05:59,833 –> 00:06:07,800
I’ll make an adjustment here:
the “blendtime” parameter
between the first and second
animations.

45
00:06:07,800 –> 00:06:17,633
I must reset the sequencer, and
you’ll see the change in blend
time when I step to the next
animation.

46
00:06:17,633 –> 00:06:25,100
The sequencer CHOP can play
animations independently of
Touch Designer’s master
timeline.

47
00:06:25,100 –> 00:06:35,133
Therefore, you can use it to
create animations that react to
user input or any other realtime
events.

48
00:06:35,133 –> 00:06:45,400
The sequencer CHOP is a very
powerful tool that requires a
very specific network design to
work properly.

49
00:06:45,400 –> 00:06:47,400
When you master the process of
building these networks, you can
begin to create very amazing
animation effects.

Nov 12 2014

Blend CHOP tutorial.

The Blend CHOP. TouchDesigner 088. 2014.
The Blend CHOP is a special multi-input CHOP. It can combine CHOP Channel values using different weighting calculations.

1
00:00:00,233 –> 00:00:03,133
Let’s examine the blend CHOP.

2
00:00:03,133 –> 00:00:09,533
The blend CHOP is very powerful,
but its usage can be difficult
to understand.

3
00:00:09,533 –> 00:00:18,900
Unlike other CHOPs that combine
multiple inputs, the blend CHOP
uses its first input as a
controller.

4
00:00:18,900 –> 00:00:27,600
The reason for this architecture
is that the blend CHOP can
control an arbitrary amount of
inputs.

5
00:00:27,600 –> 00:00:31,233
The second input is a base
value.

6
00:00:31,233 –> 00:00:35,867
These are the values that all
other inputs will be compared
to.

7
00:00:35,867 –> 00:00:41,067
This network uses 3 states, plus
a base state.

8
00:00:41,067 –> 00:00:47,567
We will use the “Difference”
method for blending the incoming
channels.

9
00:00:47,567 –> 00:01:00,467
The states of “rx”, “ry”, and
“rz” represent rotations, and
they are applied to a geometry
component by using Python
expressions.

10
00:01:00,467 –> 00:01:03,967
The base state is 0 rotation.

11
00:01:03,967 –> 00:01:08,033
Adjusting its amount with the
controller has no effect.

12
00:01:08,033 –> 00:01:12,000
This is because we are using the
“Difference” method.

13
00:01:12,000 –> 00:01:17,300
Try using the “Proportional”
method to blend in the base
state.

14
00:01:17,300 –> 00:01:22,033
Now I increase the amount of
influence of state 1.

15
00:01:22,033 –> 00:01:30,133
Again, notice that the base
state is only calculated as a
comparative starting point.

16
00:01:30,133 –> 00:01:35,967
I’ll increase the influence of
state 1 to its maximum value.

17
00:01:35,967 –> 00:01:39,733
No other states are influencing
the blend.

18
00:01:39,733 –> 00:01:45,900
In this way the blend CHOP can
be used as a simple switch.

19
00:01:45,900 –> 00:01:50,500
Now I’ll begin combining states.

20
00:01:50,500 –> 00:01:56,933
The blend CHOP calculates state
influences in real time.

21
00:01:56,933 –> 00:01:58,933
It can be used as a way to morph
any type of value or state in
Touch Designer.