*update, after requests now working with maya 2011 and 2012.
To use, copy to scripts folder or load in maya and command: " ar_heatSpread() "
example video: http://www.youtube.com/watch?v=0riWZKHugfshttp://www.youtube.com/watch?v=0_nR9lK_Abc
This script creates a heat system that spreads heat among assigned objects, giving the ability to use that attribute ($obj+`.heat` - in a scale from -1 to 1) to control and drive other attributes per object.
This system works on the distances between the objects themselves and not from a certain point in the scene.
The system is compromised of the controller object and the igniter locator:
Igniter: This locator starts the heat by igniting one or multiple objects which are assigned to the same heat system as the igniter. If needed, Igniters can be duplicated to ignite from more then one spot.
controller hold the attributes that drive the simulation. The following attributes are availabe:
Igniter Radius: Defines the radius in which the igniter/s affect the objects in units
Igniter Impact: Defines the impact the igniter/s have on the objects - in heat units (-1 - 1)
Start Frame: At which frame will the sim start
Number of Neighbours: As the sim is distance based between objects, this attribute controls how many `other` object can each object affect
Check Distances: If on, the distance to the objects is checked again (its automatically on for the 1st frame) - good if at a certain point the distance between the objects change to maintain goo sim.
Always Check: If on the distances are always checked, again, good in case the objects movement is affected.
Check At Start: If on every time you restart the scene the system will check distances
Fuel Consume: Range 0 - 10, controls the speed at which the fuel to keep the heat s depleted, 0 means fuel forever.
Heat Cool Speed: Range 0 - 10, controls the speed at which once fuel runs out, how fast will the objects cool off.
Randomize Spread Speed: Range 0 - 1, controls the amount of randomness of the spread, 0 - non, 1 - most likely the sim won’t get to finish.
Randomize Direction: If on, the direction of heat - if heat is positive or negative, is randomised.
Spread Speed: The speed at which objects heat up. Careful, its a multiplier - Default is 0.1.
Material Convection: Range 1 - 10, How hot does an objects have to be in order to spread heat. 1 almost no spread, 10 spread a lot.
Cycle From Igniter: If on, after sim has ended and all objects have been depleted, sim will restart from igniter.
Cycle From End: If on, after sim has finished and all objects have been depleted, sim will start from last depleted object AND from Igniter
Reverse heat: Next cycle will spread heat in the opposite positive negative direction. Has no effect if randomize direction is on.
Wave: If on creates waves of heat based on the interval provided by the wave time.
Wave Time: If wave is on, guess what...
The controller also holds an animation curve akes in the heat and produces manipulated heat, so you can use that one also. The manipulation section is connected to the manipulated heat.
Next Attributes control built in manipulation for the objects:
Randomize Manipulation: Control the amount of randomness to add to the desired manipulation amount. 0 - no rand.
Translation: turn translation built in manipulation on.
Translation Local: If on translation is affecting objects local space.
TransX -Y -Z: Amount of total change
other attrs should be obvious by now :)
Each object has an attribute controlling which heat system affects him, same for igniters.
There are some known bugs with pivot manipulation and local manipulation together, im working on it
UI creation options:
The list to the left specifies affected objects, you can add, remove and clear with assigned buttons.
The `add to existing system check box is basically for safety, as if there is a mismatch after execution a prompt dialog will show so no systems will be overridden.
Heat system number is the system you wish to add or create for the objects.
Remove from systems button will remove the selected list objects from all systems and kill unneeded attributes
This script uses a method influenced by Nick Pisca method of finding closest objects, look it up at http://nickpisca.com/sherpa/ lots of cool stuff there, Thanks!!!
Hope you will enjoy it, for questions, my e-mail is Amitrojtblat@gmail.com.
(Im planning on making a same thing that will work on components rather then objects, some time in the near future.)