Category Archives: Uncategorized

PALETTE REFERENCE – 36 – THROWER – PART 32 – Bible Reference

 

Incomplete as of 3/29/2021

#1 – AutoReturn – Triggered by throw1, throw2, or throw3
Only applies if:
greater than zero
IS Throwable:
NOT FollowSpotable
and NOT Attachable
Changes to NON-PHYS
happens in Receiver script

#2 – Boomerang – Triggered by throw1, throw2, or throw3
Ricochet must be OFF
1st Target is always ThrowerObjectTargetName1
2nd Target is always ThrowerObjectTargetName2
Collision Post Actions are Ignored
Reverses any Spin
Stops Angular Vel.
Attaches IF AttachOnRange and Attachable

#3 – BoomHoverDelay – How long a Boomerang hovers in place after reaching target1

#4 – CollisionPostActions – Cause the “Posts Collision” parameters to be examined and performed upon collision.

#5 – CollisionPostActions2 – Same as CollisionPostActions but uses ApplyImpulse2 and AngularVelocity2 instead

#6 – CollisionPostActions3 – Same as CollisionPostActions but uses ApplyImpulse3 and AngularVelocity3 instead

#7 – IgnoreFirstCollision – bypasses “Posts Collision” parameters.
Rezzing a Palette in same position as
rezzer can cause a premature collision which we want to ignore
NEW for 2021! Automatically ignores collisions within 1 meter of rezzer so no need for Ingnore unless there
IS a collision down the way that you want to ignore.

#8 – RangePostActions,off – this must be on in order to process “Posts Range” parameters when thrower is “in range” of target

#9 – Receiver – When NOT ZERO, the thrower will attach to a secondary person. This allows someone other than the thrower to “catch” a thrown Palette. The secondary person must touch Palette and grant ATTACH permission. The body part is the number following Receiver

#10 – RemoveFolder – If not BLANK then the script will sleep for RemoveFolderDelay seconds then remove the full contents of the RLV RemoveFolder. This name must be fully qualified and be located
under #RLV and RLV must be enabled. The folder must be WORN prior in order to activate it.

#11 – RemoveFolderDelay – Number of seconds after throw before contents of RemoveFolder are removed. Ignored if RemoveFolder is BLANK.

#12 – RezMe – Use this when you want to rez the inner Palette PERMANENTLY when RezObjectName has a value and (Thrower0123OnRez must be 1,2, or 3 OR Boomerang is on). A rezzable Palette must have either RezMe or TempRezMe on, otherwise the inner rezzable Palette will not rez.

#13 – Ricochet – Used to control a target1 AND a target2. Works same as Boomerang but there is no auto-attach at end.
1st Target is always ThrowerObjectTargetName1
2nd Target is always ThrowerObjectTargetName2
It only responds to 2 targets maximum.
RangePost Actions must be enabled since Ricochet expects to use targeting.
Attaching is disabled.

#14 – ShowInMidFlightAfter – if this is not zero then maximum visibility is delayed the amount of seconds entered on the nc. Of course the success of this assumes that it is thrown with visibility off (at MinAlpha).
It shows just before Matrix and RemoveFolder

#15 – ThrowOnCollide – this will cause this Palette to execute a throw upon colliding with another object…An example is the 3-hat-carom demo video. The value must be 1, 2, or 3 to tell the thrower which throw (ApplyImpulse and AngularVelocity) to execute

/*Rezzer section
These are the important parameters you will need in order to make a rezzer. Its why they are grouped together. Rezzers are used to simulate an attached-throw. as in someone holding a Palette and throwing or dropping it.

#16 – Rezzer,on – This must be ON and when on causes the RezObjectName to automatically become a candidate for a rezzed throw. This makes this Palette the “rezzer Palette”.

#17 – RezObjectName,HatTemp – this is the name of a Palette that must be inside the ‘rezzers’ inventory and will be propelled using its own parameters of how it is to be thrown.

#18 – RezSource,HatSource – the name of an object that will be used to tell the rezzed object where to rez and what rotation it should have. The Rez Velocity matches the ApplyImpulse value.

#19 – Thrower0123OnRez,1 – This tells the rezzer what value to pass to the rezzed Palette so it knows which ApplyImpulse/AngularVelocity pair to use. It will automatically throw upon rezzing if this parameter has a value.

/*Targets Section – this is where you specify target names. They are used to
1) either to guide a throw using SetMoveToTarget,on AND/OR
2) used for controlling the Post Target disposition.

#20 – DirectionalVector,Local – I have only used “Local” but the other value is “World“. World might be easier to work with if your practice site is the same location as your show-time site. When specifying rotational vectors, its important that you go in to EDIT on the Palette and make sure the reference matches. Local if Local and World if World

#21 – ThrowerTarget,(off/Both/Avatar/Object) – If this is off then the next 3 fields are ignored.
if Both, then ThrowerObjectTargetName1 and ThrowerObjectTargetName2
must exist and are used for 2-phase throwing.
If Object then only ThrowerObjectTargetName1 is required If Avatar then only ThrowerAvatarTargetName is required
Ricochet and Boomerang require Both

#22 – ThrowerObjectTargetName1,HatTarget1 – name of the target1. Required when ThrowerTarget is Both or Object
#23 – ThrowerObjectTargetName2,HatTarget2 – name of the target2. Only required when .ThrowerTarget is Both
#24 – ThrowerAvatarTargetName,Lat Lovenkraft – name of an avatar that is to be target when ThrowerTarget is Avatar

/*Motions Section – only one usually
This section has choices for the motion and propulsion method of the throw. Usually you will choose either

#25 – ApplyImpulse or MoveToTarget

#26 – SetApplyImpulse,off – if this is off then the 3 ApplyImpulses are ignored. If on then all may be in play depending on the throw (i.e. throw1, throw2, and throw3)

#27 – ApplyImpulse,<x,y,z> – If SetApplyImpulse is on and a throw1 is executed then this becomes the instantaneous impulse. This will decay over time assuming there is some gravity and the Palette will fall to the ground. This is the motion-method I use most often. It reacts to mass(density) and applies 1 newton of force of acceleration equal to 1kg thrust one meter and lasting 1 second, per unit of xyz, velocity in the direction xyz and for a magnitude of (xyz) (effective inertial velocity) . Using it will force the Palette to go physical. It is center-of-mass based so be careful with link-sets. The velocity caps are dependent on the energy, a topic for another discussion but keep in mind 202 meters/sec as a yardstick for very fast impulses.

#28 – ApplyImpulse2,<x,y,z> – same as ApplyImpulse only it is used in place of ApplyImpulse when a throw2 action is taken

#29 – ApplyImpulse3,<x,y,z> – same as ApplyImpulse only it is used in place of ApplyImpulse when a throw3 action is taken

#30 – SetMoveToTarget,off – when off, then MoveToTargetTau and AtTargetRange, are ignored
when on , this Palette behaves like a heat-seeking-missile IF a thrower-target has been specified(not off). Depending on other conditions, the Palette will move towards the target upon a throw and stop when it gets at or near the target. The flightpath will curve upward or downward to meet the target AGAINST the normal gravitational forces that are most likely in play.

#31 – SetVelocity,off – when on will apply an instantaneous impulse the same as ApplyImpulse only “mass” is not taken into consideration. The direction and magnitude is dependent upon the velocity vector as specified by Velocity

#32 – SetAngularVelocity,off – when on the appropriate AngularVelocity (rotation) is applied dependent on whether the throw is a throw1, throw2, or throw3

#33 – AngularVelocity,<x,y,z> – used if a throw1 and SetAngularVelocity is on. Applies a rotational force ( 1 radian – about 1/6th of a full-rotation) per second that causes the Palette to rotate in the xyz direction and with a force-magnitude of xyz and usually applied in combination with ApplyImpulse to create a tumble or Frisbee type throw. It will slow down over time but acts as if there is no mass. The Palette will turn physical and angular-velocity stops if and when the Palette turns non-physical

#34 – AngularVelocity2,<x,y,z> – same as AngularVelocity only this applies only for a throw2

#35 – AngularVelocity3,<x,y,z> – same as AngularVelocity only this applies only for a throw3

#36 – SetTargetOmega,off – when on then TargetOmega will execute a spin on the client using the 1st parameter as a axis-spin direction. This never decays over time so use post-actions to stop spins.

#37 – TargetOmega,<1.0,0.0,0.0>,6.283185,2.0> – this example spins around the x-axis at 2 x 2PI-radians) per second. Thats  2 rotations per second (using 2.0 as gain…and it says the spin-rate is 2-pi (6.283185) radians which is 1 full rotation)

/*Posts Collision – This section dictates the disposition of a Palette upon collision. For these to be effective, there must be CollisionPostActions1, CollisionPostActions2, or CollisionPostActions3. Either one or multiple ones will always cause all the post-actions to occur if on.

#38 – DamageFinishOnCollide,off,-55,Blood On,1.0,Animate,ArtistePalette_04_B,Spin Fall,10,Crawl,5,KILL_MESH
This newly added feature in 2021 is a combination of events. Shoot, affect, animation1, animation2, kill/die.
It has delays that apply to the previous parameter.  It has no effect if off.  This choice happens when there is a collision.

#39 – DamageFinishOnRange,off,-55,Blood On,1.0,Animate,ArtistePalette_04_B,Spin Fall,10,Crawl,5,KILL_MESH
This newly added feature in 2021 is a combination of events. Shoot, affect, animation1, animation2, kill/die.
It has delays that apply to the previous parameter.  It has no effect if off.  This choice happens when thrower is in range of target.

#40-AttachOnCollide,off,5

/*ControlOnCollide,on,SoccerBall4,Hide,ALL,3.0
ChatOnCollide,off
ChatOffCollide,off
ControlOnCollide,off,SoccerBall4,detach
ControlOnCollideDelay
DieOnCollide,off,1.5
MakePhysAfterPost,0
MaterialsOnCollide,off,0.2,10,10,0.1
SetMatchPosOnCollide,off
SetMatchRotOnCollide,off
SetStopSpinOnCollide,off
SetNonPhysOnCollide,off

/*Posts Target
AttachOnRange,on,5
SetMatchPosAtTarget,off
SetMatchRotAtTarget,off
SetStopSpinAtTarget,off
SetNonPhysAtTarget,off

PALETTE REFERENCE – 34 – THROWER – PART 30 – Ricochet

Ricochet

Abilities:

Thrower,on

This thrower function requires that on *thrower nc the following entries be made:

Boomerang,off
Ricochet,on

Gravity,0.01 (on Palette) – you can try slightly higher values but 0.10 is too much

It has predefined in-palette behavior in order to short-cut and simplify its operation.  It propels a throwable Palette using MoveToTarget,on only, both trips.  The only difference  between it and Boomerang is that it hasno (boom)  delay time and it does no automatic attach since its intent is to end up in the ‘world‘ somewhere.

It requires 2 contraption objects defined in the throwing object using:

ThrowerTarget,Both
ThrowerObjectTargetName1,HatTargetB1
ThrowerObjectTargetName2,HatTargetB2

Rotation can be specified using either AngularVelocity, or TargetOmegaTargetOmega causes a spurious change in spin direction if that is the effect you want.

It will automatically attach to the Palette owner upon return flight using AttachOnRange,off,5 body-part, REGARDLESS as to whether AttachOnRange is on or off.

NOTE: Best effect is to use this in a rezzer with a throw-animation. 

PALETTE REFERENCE – 33 – THROWER – PART 29 – Boomerang

Boomerang

 

IMPORTANT: Wait for ALL these message upon Reset or your rezzable will float, having not found a target:
[09:33:52] rezboom: [LDR] 14 – Artiste PALETTE is READY !!!
[09:34:07] rezboom: [ASS] 13 – Artiste Assets ->rezboom<- 71 lines read
[09:34:07] rezboom: [ASS] Found Thrower Target Object1: AlienTarget1
[09:34:07] rezboom: [ASS] Found Thrower Target Object2: ArtistePalette_03_D

Pre Attach Rezzable to Hand and adjust, prior to placing in Rezzer

Blue entries go in the rezzer palette, only
Green entries, below, go in the rezzable (embedded) palette, only
Orange entries are required in both rezzer and rezzable palettes.

Abilities:
Thrower, on
Attachable,on
Moveable,on — needed if using AutoReturn

This thrower function requires that on *thrower nc the following entries be made in the embedded rezzable palette and the rezzer palette:

Boomerang,on  ––  Rezzable palette
BoomHoverDelay,1.0 — Rezzable palette

Gravity,0.01 (on Palette in the Rezzable palette) – you can try slightly higher values but 0.10 is too much

It has predefined in-palette behavior in order to short-cut and simplify its operation.  It propels a throwable Palette using MoveToTarget,on only, both trips. ApplyImpulse is not available to it.

Rezzer
Rezzer,on

RezObjectName,rezboom
RezSource,BoomSource

Rezzable
IgnoreFirstCollision,off — as needed
RangePostActions,on

It requires 2 contraption objects defined in the
throwing object (rezzer palette) using:

ThrowerTarget,Both
ThrowerObjectTargetName1,TargetToReach
ThrowerObjectTargetName2,ReturnTarget near hand

Rotation can be specified using either AngularVelocity, or TargetOmegaTargetOmega causes a spurious change in spin direction if that is the effect you want.

MoveToTargetTau,2
/* Make MoveToTargetTau smaller for faster 
targeting
AtTargetRange,0.5 — how close before RangePost  is valid

SetAngularVelocity,on
AngularVelocity,<0.0,0.0,7.0>  — speed of rotation
AngularVelocity2,<0.0,0.0,0.0>
AngularVelocity3,<0.0,0.0,0.0>

RezMe,on
/*TempRezMe,on — (use instead of RezMe optional)
RangePostActions,on
ShowInMidFlightAfter,0.25

It will automatically attach to the Palette owner upon return flight using AttachOnRange,on,5 body-part, REGARDLESS as to whether AttachOnRange is on or off.

NOTE: Best effect is to use this in a rezzer with a throw-animation AND a catch-animation in a player-palette.

 

Palette Reference – 28 – Thrower – Part 24 – Preparing the Source

Preparing the Source

 

The trick is to capture the release frame of the animations throwing gesture at the exact moment of its release.  You can use a recording device to record the animation.  Then step thru, frame by frame, determining which frame is the release frame.  It is what I did.

You can set a ruler up-and-down and across to create a guide for placement of the “source” object.  the Source object, if a Palette, can be easily moved to the show-site with accuracy by giving it a Moveable ability and an InitialOffset.

 

Palette Reference – 27 – Thrower – Part 23 – Thrower0123OnRez

Thrower0123OnRez


This value is set inside the REZZABLE.

This value should be 1, 2, or 3 for situations where you are creating  a Thrower-Rezzer.   The number determines which selection of ApplyImpulse, AngularVelocity, and CollisionPostActions will be used.

It should be zero (0) if you are rezzing a normal Palette with NO throwing capabilities.

Ex:

Thrower0123OnRez,1

The zero  (0) option uses the current position and rotation  of the rezzer.  i.e. no throwing of the Palette is used with this option.

The initial velocity of this option is always the same as the rezzer with is usually zero, so it rezzes static, non-moving, unlike 1,2, and 3.

Palette Reference – 23 – Thrower – Part 19 – Creating a Thrower-Rezzer

Creating a Thrower-Rezzer

This demonstrates how to give the illusion of throwing a Palette that is attached to an avatar.

There are many facets to this commonly-used approach of ‘throwing a held object‘.  The Palette Thrower-Rezzer method is the proposed method for throwing from inside of an animation.  Our Thrower provides very granular control over the degree of accuracy of the illusion of the ‘throw‘.

Basically, it is an illusion that is accomplished by rezzing a duplicate of the attached Palette and making the attached Palette go invisible at the same time as the new object is rezzed and propelled.

There are 4 main parts.  The Rezzer, the Rezzable, the Source, and the Target.

1 – Rezzer

The Rezzer is the Palette attached to the avatar that is doing the throwing, usually in a held position by one or both hands.

2 – Rezzable

The Rezzable is a Palette that is contained inside the Rezzer that should look identical but will have different Palette properties and is the object that will be SEEN propelling thru the air.

3 – Source

The Source is an INVISIBLE, unscripted, non-physical,  object that is placed at the point of release that dictates the position and rotation that the  rezzable Palette should use when it is rezzed

4 – Target

The Target is an INVISIBLE, unscripted, non-physical,  object that is used to dictate the final landing position and rotation of the Rezzable Palette for times when you want to ‘land’ a thrown Palette onto a receiving object like a hat on a hat rack.

Palette Reference – 22 – Thrower – Part 18 – RemoveFolder

RemoveFolder

If this entry on the *thrower nc is NOT BLANK, then any and all items attached to the nc-owning avatar that are in this inventory folder will be detached/removed as the last step in a throw.

Be sure to specify the FULL PATH, as it assumes no parent folders.

Examples:

RemoveFolder,For Throwers\FedoraHat

You can also specify a delay-time.

RemoveFolderDelay,4.7

It will add a 4.7 second delay after the final step of the throw before removing the items in the RemoveFolder

Palette Reference – 21 – Thrower – Part 17 – AutoReturn

AutoReturn

This is used to automatically return a throwable Palette home, after it is thrown.

Requires Moveable,on ability.

Example:

AutoReturn,10

It is meant to be used during practice or the creative process but might find a use for it during a live show.

There are several preconditions:

1 – AutoReturn on *thrower nc must not be zero
2 – Throwable ability must be on
3 – The Palette must NOT be ATTACHED
4 –  Palette must not be FollowSpottable
5 – StoredHomePos must not be zero-vector
6 –
Requires Moveable,on ability.

If the above conditions are satisfied then the Palette is auto-returned after the specified number of seconds and you get the message “[RCV] Thrower Returning Home”.  The Palette is set to NON-PHYSICAL and a GoHome is performed, returning the Thrower/Palette to its InitialOffsetSo of course this must be set ahead of time.  See Mover Book for setting InitialOffset

IMPORTANT: Auto-Return timing starts at the beginning of a throw (1,2, or 3) so be sure to allow enough time for all the parts of a throw to execute fully,  especially when using Matrix.

Palette Reference – 20 – Thrower – Part 16 – Matrix

Matrix

Matrix is a term used to describe special in-flight change of velocity (speed)…usually a slow-down to possible stop.

It requires Velocity,on  in the *thrower nc.
Example:

SetVelocity,on
Velocity,<0,2,2.66>

On the *thrower nc:

/* Post Matrix
SetMatrix,(on/off)
MatrixSpeedFactor,3.0
MatrixDelay,2.0
MatrixNonPhysAfterWait,4

After a Matrix-Enabled Palette is thrown, it will change speed after MatrixDelay seconds have elapsed after the throw command.  It will stop completely by turning NON-PHYSICAL after MatrixNonPhysAfterWait seconds have expired.

The speed of the slow-down is the velocity divided by the MatrixSpeedFactor.  So if 3.0 then the speed will be one-third of the Velocity.  (Velocity divided by 3).

Palette Reference – 19 – Thrower – Part 15 – Receiving/Catching a Thrown Embedded Palette

Receiving/Catching a Thrown Embedded Palette

To be eligible to receive a thrown Palette, indicate the body-part number on the *thrower nc in the inside(embedded) Palette using:

Example:
Receiver,6

This Palette must first be prepared.  The receiving avatar must “touch” it and grant attach”  permissions. Then it must be placed back into the throwing  (outside/attached) Palette.

The thrown (inside/embedded) Palette will attach to the specified body-part upon collision of the thrown (inside/embedded) Palette, assuming, AttachOnCollide,on  is set on the (inside/embedded) Palette.

It is suggested that you attach/link an invisible object that is the position and rotation of how you want the received/caught object to appear upon collision/at-range event

Practical attach points are:

2 = skull
5 = LT Hand
6 = RT Hand
7 = Left Foot
8 = Right Foot
0 = Last Used Attach Point

*******************