Going in unknown directions!

May 11th, 2005 by Patrick Boucher - Viewed 16680 times -

Remember Softimage|3D? Remember Jitter+?

Here is my take on Jitter+ for XSI: PB_Jitter! Just drop both files in the Application/Plugins folder and don’t forget to install the buzz.xsi library first.

Back in the days of Softimage|3D there was a plug-in called Jitter. It was used to create random movement on objects. My take on this idea, thanks to the XSI architecture, takes it one little step further. If it’s animateable, you can add a PB_Jitter to it. Which means you can add a PB_Jitter to almost anything. Once you add this Scripted Operator to a marked parameter (Animate -> Create -> Parameter -> Jitter Marked Parameter) you’ve basically piped a procedural animation generator into your parameter.

Here is the main tab of PB_Jitter:
The main tab for PB_Jitter

This generator has two facets to it. A sine wave generator and a random noise generator.

The first part of the generator creates a sine wave. This regular motion can be toggled on or off, it’s amplitude can be animated and the base wave can be shifted left or right. A concept of octaves is also available. Each successive octave’s computed value is added to the total value for that calculation but each octave’s wavelength is half the preceding octave’s and each successive octave’s amplitude is diminished by a factor corresponding to the overall persistance. This means that the higher your persistance and the larger the number of octaves the wilder your motion, while the lower the persistance and the lower the number of octaves the smoother the motion.

The sine tab of PB_Jitter

The second part of the generator creates random noise. The wavelength of this noise is animateable as well as it’s amplitude. The octaves/persistance concepts show up again like in the sine wave generator. This time around the extra features you get are a choice of curve interpolation and a smoothing option. The horizontal shift this time can be used as such or it can be used as a random seed by inputing ridiculous numbers and shifting the curve left by, say, -2845037.

The random tab of PB_Jitter

Another neat thing about the PB_Jitter is that if the parameter you want to jitter allready has an f-curve animation, this animation will be preserved in the offset parameter of the PB_Jitter and the computed sine or noise values will be added to the allready existing animation.

There are two bugs that I know about that are both related to the layout of a runtime scripted operator. The first is, if you plug a PB_Jitter in the offset value of a PB_Jitter (why not), the next time you want to inspect the outer PB_Jitter, the PPG layout and all it’s parameters will be gone. The second is if you save a scene that has a PB_Jitter inside it, next time you open the scene the PPG layout will be gone – though you still have access to the parameters, they’re just not nicely laid out in tabs.

Because of these little problems and the lack of documentation this is release 0.9 but hopefully I’ll be able to call it a full 1.0 in a short amount of time.

Hope you like! If you have questions, comment or verbal abuse, don’t be shy!

6 Responses to “Going in unknown directions!”

  1. DAN says:

    Hi Patrick, this looks fantastic, thank you very much for sharing! I”ve been yearning for such a tool for a long time and this surpasses whatever I was thinking.

  2. brad says:

    Hey, I get the following error when running the command:

    ”ERROR : Traceback (most recent call last):
    ” File “”, line 41, in PB_Jitter_Execute
    ” op = factory.CreateScriptedOpFromFile(”PB_JitterOp”, os.path.join(cmd.OriginPath, ”PB_JitterOp.py”), ”Python”)
    ” File “C:\Python23\Lib\site-packages\win32com\client\__init__.py”, line 454, in __getattr__
    ” raise AttributeError, “”%s” object has no attribute ”%s”” % (repr(self), attr)
    ”AttributeError: ”” object has no attribute ”OriginPath”
    ” – [line 40]
    ”ERROR : OLE error 0×80020101

    Any ideas?

  3. [...] XSIBlog
    People and thoughts behind XSI in production…

    « Going in unknown directions! Forcing dynamic dispatching in Python’s win32com May 12th, 2005 [...]

  4. stubbe says:

    how about a good documentation (specially installation) on buzzlib?

  5. [...] More Jitters December 9th, 2006 by Patrick Boucher A while ago I posted a Scripted Operator for XSI that generates jittering animation. Well, a colleague of mine, Etie [...]

  6. Tim Salikov says:

    Thanks for the great plugin ! Works great with XSI 6.0 x64