[Bf-committers] Random IPO Generator

Mal mal at candomultimedia.com
Tue Jan 10 21:17:57 CET 2006


Hi Reuben,

Perlin noise might help here...

http://mrl.nyu.edu/~perlin/

Ken Perlin, who "invented" it, has also wrote articles on using this for 
animations.

See...
http://mrl.nyu.edu/~perlin/experiments/facedemo/  ( for just one example )

Mal

>Hi,
>
>I just now joined this list because I wanted to see if anybody would
>be interested in fleshing out an idea I had for being able to generate
>random IPO curves. They're not _totally_ random, but they would allow
>the user to set some variables that would set the limits and
>characteristics of the generated IPO curves.
>
>The practical use for this would be in situations where the user wants
>to create some controlled randomness in the IPO driver without having
>to go through the tedious process of manually creating the IPO curves.
>For instance, when using wind, a user might want to add turbulence by
>adjusting the "speed" setting to make it's effect on softbodies or
>particles more animated. This is a case where the work flow of
>adjusting the IPO curves could easily be speed up be able to set
>limits and then letting the IPO curves be randomly set for the
>duration of the scene. Should the user wish to manually adjust them,
>they could always go and do that after the curves are generated.
>
>I hope the following "sudo-code" will give an idea of what I'm talking
>about. (Yes, it's awful, but I haven't written serious code in almost
>10 years)
>
>var max_ipo_value;	//sets upper limit for the IPO
>var min_ipo_value;	//sets lower limit for the IPO
>var ipo_value;		//the value that the random IPO key will have
>var ipo_time;		//the time at which the random IPO key will be placed
>var speed;		//the higher the value, the slower the IPO curves move
>var momentum;		//the lower the value, the more erratic the IPO curves are
>var step_sze;		//the higher the value, the steeper the slope of the IPO curves
>
>
>direction = generate_random_bool();
>
>if (direction = true) then (
>	for (i = 0, i < momentum, i++) do (
>		ipo_value += step_size;
>		if (ipo_value > max_ipo_value) then ipo_value = max_ipo_value;
>		ipo_time += speed;
>		set_ipo_key (ipo_value, ipo_time);
>		)
>	)
>
>else (
>	for (i = 0, i < momentum, i++) do (
>		ipo_value -= step_size;
>		if (ipo_value < min_ipo_value) then ipo_value = min_ipo_value;
>		ipo_time += speed;
>		set_ipo_key (ipo_value, ipo_time);
>		)
>	)
>
>
>Hope that gives the "general idea" of how the randomness would be controlled.
>
>So... Does this interest anybody? Suggestions?
>
>regards,
>-Reuben
>_______________________________________________
>Bf-committers mailing list
>Bf-committers at projects.blender.org
>http://projects.blender.org/mailman/listinfo/bf-committers
>
>  
>



More information about the Bf-committers mailing list