[Closed] Animotions – live cyclic drawing
I’ve seen those projects in Behnace. This guy, had an old program with a bug that let him draw, while a GIF animation was played in a loop. I even tried to miminc the technic with 3ds Max here. Then, I found that I lack the loop thingy, and I got to a conclusion that a sciprt should be done. so here how it works:
You choose an object, then running the script. It starts playing the animation over and over till you press ESC. While the playing, you can move the object, and 3ds max records its moves with a simple motion capture using the mouse. When, getting to the end of the time, the script should duplicate the object, and progressing the recording to the new object, continuing looping.
I really know nothing about scripting, but it sounds very easy... I can even try to factorize it:
mocup $this.x and $this.y by mouse... ($object is an object, right? :) )
loop {
zzzzzzif end of time
zzzzzzthen {
zzzzzzzzzzzzduplicate $this
zzzzzzzzzzzzclear $this.x and $this.y
zzzzzzzzzzzz}
zzzzzzif ESC is pressed, stop script
}
Anyway, if someone who knows maxscript and wanna play with me... ;)
should the recording be at regular time intervals, or whenever the object moves (many events)?
If the former – set up a timer, either using .NET or stick a timer control in a rollout (if you’re already using a rollout, stick it in there).
If the latter, set up a changeHandler for the object.
You have to use one of these methods as you can’t interact with objects while maxscript is in a pseudo-infinite loop like the one you described.
You can then cancel recording with a button press in the UI if you’d like, or check ‘keyboard.escPressed == true’.
I don’t really get the questions… the animation should go in normal speed, and ESC should be the trigger to stop the script.
I think max is probably not the right application to handle such task.
For example you would have to count how many times the playbar has looped and create/delete objects on playback/rendertime
How would you handle the end result? Rendering loop over loop?
Though it would be a nice example of the capabilities of max it would be rather a max hack. Environments like processing or even maybe flash are much more suited for such things.
There is a thread somewhere about a script that allows you to paint geometry on the viewport over time – a port of a known maya mel script – this might help you – maybe.
Georg
After pressing ESC, you get a result of duplicated objects completeing each path, so if the path takes 1000 frames and u have only 100 frames, you’ll have 10 objects doing each 1/10 of the path. When rendering there’s no need to create or delete more objects…
Errr… why not use the motion capture tool? say capture a point moving – then process it into animated curve. Then do it again?
That’s exactly what I’ve done here (as I written in the 1st post), but in the origin animations which inspired me, the animation is much shorter then the path the object does. Because when capturing the motion, the animation played in a loop, so if you see an object passes one part of the path, there’s a 2nd object to continue the other part of the path, and then a 3rd object to continue the 3rd part etc. etc. In the end, you result in a stream of instances which make a longer path then the animation.
I see, well i think this is possible.Essential you want to make the base movement and you want it to carry on right?
Well you could use a derivative of the movement.
e.g f(x)*t
Another way to do it really easily is, to just store the transform space of the first frames movement and keep adding it on each frame and setting a new transform. ( this is infact really easy to do)
I’ll have a think for you.
Noooo, it’s not like 3dmax’s loop options, one of them does continue the flow. You can’t predict the continuation of the path, the continuation is defined by the capture, when you keep moving the mouse in the 2nd and the 3rd loop etc. etc.