Questions about inter-touch-process communication

Hi,

I have 4 Touch processes.

process A is sending channel info about object (Y) to process B, which uses deform outs to send (Y)'s deformations to process C, which renders (Y).

I now have an object (X) that doesn’t need deform out, and ultimately I would like to send channel info from A to C directly so that C can simply apply a simply overall rotation to (X).

The questions I have to do with synchronicity.

(X) and (Y) have to be in synch with one another.

Now, process A can send out info in a synchronized manner for both (X) and (Y), so the question arises on whether or not both object’s info should go through process B before getting to C, to ensure that both stream of info travel - or get stalled - together.

I would think it’s wiser that A sends everything to B, then B sends to C. But still other questions remain.

1 - can there be sync differences in what C renders - differences having to do with wheter the object is received from B in the form of a deform in, or whether a channel is received and the object is transformed locally to C then rendered?

2 - can B hiccup in different ways? ie. is it possible that B - for a given frame - manages to get a deform out for (Y) but not a channel update for (X) through a touch pipe? Or viceversa (which sounds more plausible in this case since all (X) would be is reading a Y rotation from a pipe in and sending it out on a pipe out to C, while (Y) channels coming from A would require a skeleton xform and then be fed to a deform out?

I know the surest solution is probably to just deform X with a bone instead of just having a y rotation and therefore a different transformation methodology… but…other than that?

tx
d

There isn’t any guaranteed sync between Touch In/Out nodes, and Deform In/Out (Deform In/Out is a shared memory OP, need to rename those actually…). In fact Touch In/Out are almost always going to be delayed relative to Shared Memory OPs because of a delay we built in to smooth out the animation.

However when using the Global feature of shared memory OPs, all shared memory OPs (CHOPs, MATs, TOPs, Object COMPs) will be in sync.

So to achieve perfect sync you should use Touch Out to go from from A->B. Either use a single Touch Out CHOP, or use the Global feature in the Touch Out CHOPs if you are using multiple Touch Out CHOPs.

For B->C, use shared memory OPs (CHOPs and MATs, or ), also using the Global feature (there is no connection between Global for Touch Out, and Global for shared memory OPs).

thanks - that’s very helpful.

One of the things you said - about a built in delay in the touch in/outs, brings up the fact that I’m noticing a lag between channels in A and response in C. I’m not sure why that would happen, and the delay has been bothering me (because on that of that you’d like to add some filtering, but that while softening some joystick channels also increases the apparent reaction time).