$TX value referencing a different TX value from past frame

   9482   17   3
User Avatar
Member
60 posts
Joined: July 2005
Offline
Hello All,

Need some help on this one to get me started.

Imagine you have a “line” sop with two points (point 0, and 1).

Point “0” get's grouped (lead group), as does point “1” (follow group).

Then a “Transform” sop has some “sin” animation on it's “tx” for point “0” (lead group).

What I want to be able to do is to take the value of point 0 (lead group),
and then apply that to point “1” (follow group).
Easy enough right?

Well I want to offset the reference in time.

In other words: I want Point 1 (follow group) to get the “tx” info of Point 0 (lead group) but have it's value not be the current value of point 0 (lead group), but instead have it be the value of what happened 15 frames ago.

I know that there is the “trail” sop, but this won't worlk for my purposes.

I think the solution must involve the Cache sop some how…
but I'm not sure.

Any ideas?
Thanks

Jim
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Member
268 posts
Joined: July 2005
Offline
Couldnt you just offset the time in your expression for the second point? If your leader is somethin like $TY=sin($TX) then apply the same expression to your follower but just offest the time in it $TY=sin($TX+5).

Another approach would be to grab the channels into CHOPS and offset the motion curve based on the id of the point.
User Avatar
Member
60 posts
Joined: July 2005
Offline
Thanks Adam for the reply

Yes those things would all work,
but my goal is more complex.
I tried to make the most basic example to try to keep things simple.

but what I'm really after is a method by which to access past frame values,
without being reliant upon any “key framed” information.

So it kind of like this:
$TX = $TX -15frames

As I said before, I believe this would involve a “Cache” sop.
I really don't even want channels
I just want to cache something out,
and then access that cached information.

Why… because I think it can lead to some really sick stuff with very little work involved.
I know that the “Trail” sop is good for this,
but I really want to be able to get in there and access the cached data to be able add specific variation.
Sort of like having more direct control of the “copy stamp”, applied to a “trail” sop.
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Member
141 posts
Joined: July 2005
Offline
Maybe I'm missing the point here but what about the chf() expression?


echo `chf(“string channel”, $F-15)`


Edit: Sorry, I just read the bit where you said you don't want channels. But but..I don't see how you can do it without channels.
/Rick
User Avatar
Member
60 posts
Joined: July 2005
Offline
That's IT!
That's what I'm after!
Maybe it was too basic…
still a newbie in many ways!

thanks so much Rick
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Member
141 posts
Joined: July 2005
Offline
cool, glad it helped.
/Rick
User Avatar
Member
60 posts
Joined: July 2005
Offline
actually that doesn't work after all.
It's fine if there is only one point, or on a primitive basis.

However this won't approach won't work on mulitple points.
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Member
60 posts
Joined: July 2005
Offline
The basic idea is to make a copy of a piece of geometry (let's say a sphere),
thats points are getting positional information from another sphere,
but then that postional information is being offset in time.

This way the copy might have -15 fames in X and -10 frames in Y.
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Member
141 posts
Joined: July 2005
Offline
how about writing a custom expression or a vex sop to do what you need on a per point basis?
/Rick
User Avatar
Member
60 posts
Joined: July 2005
Offline
good Idea!

I'll give it a try, but I'm still kinda new to this fancy custom expression writing,
and this one seems like it might be a toughy. :?

Maybe I might mave more luck in Vops, not sure.

I just thought maybe there was a pretty simple way to do this.

Thanks again
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Member
2199 posts
Joined: July 2005
Online
It sounds to me like you should just use the geometry chop set to animated, that will let you read in all the positions of all your points over time, just follow that up with a lag chop or whatever and then read the result back into sops with a channel sop.
The trick is finding just the right hammer for every screw
User Avatar
Member
141 posts
Joined: July 2005
Offline
Simon
It sounds to me like you should just use the geometry chop set to animated, that will let you read in all the positions of all your points over time, just follow that up with a lag chop or whatever and then read the result back into sops with a channel sop.

I thought about this but the lag chop doesn't let you offset but exactly n frames. Does it?

In any case I did some digging around today and it seems to work fine with shift chop. Just be sure to set the units to Frames under the common tab of the shift chop.
/Rick
User Avatar
Member
2199 posts
Joined: July 2005
Online
Yeah lags a bit different, shift using frames is the way to go.
The trick is finding just the right hammer for every screw
User Avatar
Member
31 posts
Joined:
Offline
Yesterday i dealth with very similar problem, and after struggling for a while with the geometry CHOP i talked with somebody at SESI and it appears that there is a refreshing problem with it - be aware.

All the time while working on that task i tought how good would be if the time in Houdini was not global, but like in Maya, everything can live in it's local time - each one ( the times ) defined by it's timeNode. Extracting dependencies like the one, Jim Ellis talked about, is not even considered as a task.

RFE - local time(s).
User Avatar
Member
321 posts
Joined: July 2005
Offline
Jim Ellis 2001
Hello All,

Need some help on this one to get me started.

Imagine you have a “line” sop with two points (point 0, and 1).

Point “0” get's grouped (lead group), as does point “1” (follow group).

Then a “Transform” sop has some “sin” animation on it's “tx” for point “0” (lead group).

What I want to be able to do is to take the value of point 0 (lead group),
and then apply that to point “1” (follow group).
Easy enough right?

Well I want to offset the reference in time.

In other words: I want Point 1 (follow group) to get the “tx” info of Point 0 (lead group) but have it's value not be the current value of point 0 (lead group), but instead have it be the value of what happened 15 frames ago.

I know that there is the “trail” sop, but this won't worlk for my purposes.

I think the solution must involve the Cache sop some how…
but I'm not sure.

Any ideas?
Thanks

Jim
As soon as you have a time offset, you need to use one of a few approaches: write files out to disk, use a cache SOP, use a POPs simulation, or a CHOPs solution. Those are pretty much it. Here are a couple of options:

1) write files out to disk; use a file SOP with a stamp() function as the frame number to read, and then in the copy SOP (where stamping is done), set the stamp parameter to read the desired frame.

2) cache SOP is fairly simple, as long as you rember that it cooks the current frame, then current-1, current-2, and so on, so simulations upstream would need to be written to disk first.

BTW, with your description, one trick is to animate just a single point, and then cache SOP that, and connect it after the fact.
Antoine Durr
Floq FX
antoine@floqfx.com
_________________
User Avatar
Member
60 posts
Joined: July 2005
Offline
thanks all for your comments and help!
I'm going to give this one another try later in the week…
see what happens.

What Peship described is really closest to what I'm after.
This notion of Local times.
The means to have “Local Times” be fluid,
and affected by other objects/channels/etc..
Very powerful in combination with Houdini's proceduralism.

This ends up being along the lines of other constant pursuit: “Dark Matter”.
Yes there is Meta, Cookies, Grouping, Delete, and Trims…
but always searching for more methods… but I digress.

I know that there are many ways to skin this cat,
and all of your suggestions are wonderful.
Just would really like to be able to “slide around” time of the reference object with some easy expression.
I thought before of the GEO chop and the Shift chop…
which I think is the way I'll end up going…
that and explore more with the Cache sop.

thanks again

Jim
Jim Ellis
www.emsh.calarts.edu/~jim
User Avatar
Staff
1072 posts
Joined: July 2005
Offline
Antoine gives a very complete overview of how to approach problems of this nature.

Antoine Durr
2) cache SOP is fairly simple, as long as you rember that it cooks the current frame, then current-1, current-2, and so on, so simulations upstream would need to be written to disk first.

To the best of my knowledge, the cache SOP cooks forward in time and should cache upstream simulations correctly. Though I am not willing to claim that's always been the case.
User Avatar
Member
321 posts
Joined: July 2005
Offline
Ondrej
Antoine gives a very complete overview of how to approach problems of this nature.

Antoine Durr
2) cache SOP is fairly simple, as long as you rember that it cooks the current frame, then current-1, current-2, and so on, so simulations upstream would need to be written to disk first.

To the best of my knowledge, the cache SOP cooks forward in time and should cache upstream simulations correctly. Though I am not willing to claim that's always been the case.

Oops, you're right! I was confusing it with the trail SOP (which is another way to get geometry from previous frames).

– Antoine
Antoine Durr
Floq FX
antoine@floqfx.com
_________________
  • Quick Links