Homing Missile v0.46 :
works on Lightwave 7.x

(C) Alexandre Labedade 2006
Last update : 11 / 05 / 2006

Comments , suggestions and bugs reports: earthwormjim@free.fr


Download Script + Demo scene: homingmissile.zip

Happy massive destruction :)


Changes since version 0.45 :
- Removed limitations and alerts...

Changes since version 0.4 :
- Now the parent and the target are kept from the LW parameters, set the parent and the target in the motion panel directly.
- Some optimizations everywhere.
- Bug fix ...

Changes since version 0.35 :
- Modified a bit the target detection, now the missile go straight to the target more easily
- More accurate motion baking (thanks to Fujio)
- Bug fix ...

Changes since version 0.3 :
- Real time preview re-activated.
- Bug fix ...


Test an earlier shockwave demo of this algorythm...


PARAMETERS :

Target : Use the Lightwave native Target in the motion panel of the missile

Parent : Simply parent the missile to any object in the scene. The missile will follow this parent until the 'Startframe' is reached, then the missile is launched.
THE MISSILE MUST HAVE A PARENT, else the script doesn't works.

Speed : Speed of missile in meters / seconds

Turning : Turning Factor from 10 to 100
10 means low turning, so the missile will travel more around the target to touch it
100 means high turning, the missile will go to the target more quickly and will have more 'reactivity' if the target change suddendly it's direction.

Emergency turning : will replace the default turning value when a wall is detected.

Sharp turning near target: will use the Emergency turning value when the missile is near the target, this fix the 'orbit' problem in most cases.

Missile radius: the radius of the bounding sphere of the missile to detect collision with walls and of course, the target.
NB : the X scaling of the target object is used as target radius.... so it's better to use a scaled null parented to your real object, as target for the script

Wall detection interval: the frame interval for wall detection, 0 means the wall are detected at each frame, 50 means walls are detected every 50 frames, etc....

Wall detection: Activate / desactivate the wall detection.
Wall objects must be called : Wall_
Clones are supported, so you can have as many walls as you want.
Walls are detecteds as "spheres to avoid", the X scaling of the object is use to determine the radius of this sphere.
I recommend to use nulls + item shape custom object plugin to view them correctly (like in the test scene)

Forward Launch : the missile will go forward it's starting direction during a short time (specified in seconds) before seeking the target.

Start Frame : specify the launch frame of the missile.

Bake motion : when activated, a key frame will be created every 5 frames for the X,Y and Z channels of the missile. The rotation is controlled by the 'Align to path' LW feature.

Clear Motion : remove all keyframes from X,Y and Z channels from the "startframe" to the end


HOW TO BAKE CORRECTLY A MISSILE MOTION :

1) Create 3 objects : a missile launcher, the missile, and a target object
NB : The missile object must be oriented on Z+ axis and parented to the launcher
The target must be specified using the standard Target selector in the motion panel.

2) Assign the missile script to the missile object in its motion options panel (shortcut [m]) : Add Modifier / LScriptRT / load script

3) Be sur to be on frame 0, then open the missile script parameters, set the parameters as you like

4) Check the 'bake motion' option, and clic on 'Clear motion'

5) Clic on 'OK'

6) Clic on the 'Play' button and wait... press the 'Pause' button before the timeline slider loop to frame 0

7) that's All !
I've automated the process :
If the missile explode (on the target or on a wall), the baking is automatically disabled,
from frame 0 to startframe the missile will follow its parent position and rotation, so the script MUST stay activated
from startframe to impact, the missile rotation will swicth to "align to path" automatically, and follow it's baked path to the target.

BUT !

If the missile doesn't explode, you'll need to desactivate manually the bake option....

TIPS : to have a faster refresh rate, disable the display of "motion path" in the "display options" panel (shortcut d)


Technical limitations :

- The missile object cannot be cloned, you must create another missile and assign the script again....
- To bake correctly the motion, the baking must always be done from frame 0, and motions must be cleared before baking.