This topic is so important and so pervasive across all the key Artiste Suite of tools that it deserves its own post. BK08 – The Artiste – Book – Adorning v1.0 has outdated and incomplete information as well as some errors in command syntax. This post will solve a whole host of issues.
Adorn is a term we chose to encapsulate adding, removing, and replacing items to an avatar. It was created as a way to strip items of clothing from an avatar while performing in a strip show. It has since evolved into so much more.
NOTE: ADORN is often a term referring to items in inventory to be added, removed, or replaced, or auto-swapped while ATTACH,DETACH is often restricted to defining objects IN-WORLD that will be attached/detached to an avatar.
When we wear clothes in SL we are provide with a host of many places to connect the clothes to our avatar. These are called attach-points. Each one is represented by a unique number. We can have more than 1 item of clothing attached to the same attach-point.
We have the choice to WEAR or ADD a given item of clothing. There are default attach points assigned by the creator of the clothing. We can override these attach-points at the time we wear or add the item.
WEARING an item replaces (removes all existing) items on that given attach-point and adds our new item of clothing.
ADDING an item adds the new item of clothing to all existing items attached to that given attach-point WITHOUT disturbing any existing worn items for that attach-point.
Clicking on a worn item and selecting DETACH will remove that item without disturbing other items on that given attach-point.
So what the suite of Artiste Tools does is replicate these main functions so you can recreate them at show time at given points along a timeline by issuing commands that either Add, Replace, or Detach one or more items to or from a supplied or assumed attach-point.
We ATTACH and DETACH items to an AVATAR.
We LINK and DELINK items to an ANIMESH
We will focus our attention on avatars for now.
Items that can be attached to an avatar can live in 2 places prior to being attached.
1 – They can reside in an avatars INVENTORY.
2 – They can reside INWORLD either suspended in mid air or on the ground. They can even be in motion. One stipulation is that in-world objects meant to attach must reside in the same region/sim as the target-avatar.
RLV stands for Restrained Love Viewer. It is a protocol used restrict or force certain behaviors on an avatar that wears a special RELAY AND gives explicit control to other selected avatars and/or devices.
You must enable RLV in the Firestorm viewer. If it is NOT enabled, when you DO enable it (check the box), then you must RESTART your viewer.
We have a book on RLV called BK03 – The Artiste – Book – Guide to RLV v1.0. Most if not all of it still applies. It shows how to set up RLV folders which is a prerequisite to being able to attach, detach, and replace items from ones INVENTORY.
You do NOT NEED RLV enabled nor set up RLV folders IF….the objects you wish to attach/detach are INWORLD.
Wearing an RLV aware HUD is required when using inventory. We have 2 ways to do this.
1 – Wearing the Artiste Performance HUD. This is reserved for the dance leader.
2 – Wearing the Follower-RELAY HUD. This is for the other dancers but can also be worn by the dance leader.
You can also wear both at the same time.
Commands from *autofx ONLY talk to the RELAY HUD when you use the RELAY format,
(i.e. RELAY=F%AdornSwapX%JointPOOFER).
There are commands that talk directly to the HUD itself in order to attach/detach.
But first lets briefly introduce all the major tools and what they are best known for.
1 – The Performance HUD – this was the 1st tool created. It did everything. It is now best used when you need precision timing of external events like emitting particles since, out of the 4 tools listed here, it is the most time-tested and accurate tool when it comes to precise timing of activities. It could be seen as the “mother ship” that triggers the other 3 tools to activate.
2 – The Artiste Palette – the palette was created to extend the reach of the Performance HUD in terms of capabilities. People kept asking for special scripts to do this and special scripts to do that so I decided to create ONE repository that could hold most of the special needs that people WERE asking for as well as trying to predict needs that people WOULD ask for.
This tool is BEST used when you need to move and/or rotate an avatar more than 1 move but it does a LOT of other things. It is also best used when you need to combine features. See the State of Shock Video==> State of Shock We combined a mover, light, and animated-texture to work at the same time. As of this date, it has 9 scripts, and 4 to 5 notecards.
3 – The Artiste SmartDancer – this tool emanated from the Performance HUD. It is now the preferred way to animate multiple dancers in sync. It can also mix animesh with avatars and dance them in sync as well as move them in fixed and custom formations. So its main use is dancing and formations in 2d or 3D. But it can also to fancy moves like Junes and Canons. And it can also group animations into up to 4 groups. It can also group formations into 1 or 2 groups. And it can do effects to like glow and color change. A nice example of its abilities can better be expressed by a video. ==>SmartDancer Demo
4 – The Artiste Async – this is 1 script with an optional notecard that can be inserted into any modifiable object. It has many functions. See this linke for a current list of its functions with syntax. ==> ASYNC Reference Post
Think of it as “palette light“. It has many of the same functions, some enhanced. It was initially created to control Animesh from the “thrower” function of the Artiste Palette, and have features/functions go off and do their own thing on their own time line.
But it can also be used to do simple but common tasks like hiding and showing an object or specific link of an object. It can also fade-in or fade-out an object or link. It can also move and/or animate an animesh. It can move, rotate, spin an object. It can do fancy stuff like a poor-mans ‘thrower’.
It is called Async because the script has its own internal time-line that operates on its own, asynchronously , irrespective of any timeline that started it off.
I suggest always considering this tool 1st as a solution. Then if it cannot do the task, then consider stepping up to the Artiste Palette.
Under the new 2021 direction, each of the 4 major tools can not talk to all of the others. Talk, meaning control or start in motion or action.
————————————–
So I will attempt to give working examples of the Adorns for each tool. This can be one place where you can quickly come to discover the command and syntax for attach/detach. I will provide quick-and-dirty snapshots of what the inventory folder structure looks like. We will use a simple top hat and experiment attaching and detaching it as well as swapping it from hand to head and back again from head to hand. It will be up to you to find and play an accompanying animation at the right time. This is just about the basic commands and syntax for the basic adorning.
#RLV\!Adorn\aHat contains our hat. You can use any hat.
********************************************
Performance HUD
*autofx
1,WARN=Event1-AttachHat$Outfit2Adorn=aHat$ADORN=$
END
1,WARN=Event1-DetachHat$Outfit2Adorn=-Hat$ADORN=$
END
1,WARN=Event1-ReplaceHat$Outfit2Adorn=rHat$ADORN=$
END
NOTICE that in the above examples, you do NOT NEED the Follower-Relay because the Performance HUD acts as the RLV relay.
Notice that mesh can take much longer to attach than non-mesh. Also note that Replace replaces everything previously attached to a given attach point so if you had a HAIR and attached to SKULL and added a WHITE HAT also attached to that SKULL then you try and Replace it with a RED HAT to that SKULL, it will replace the previous WHITE HAT AND HAIR and you will be unexpectedly bald with a RED HAT.
AdornSwapX, AdornSwapY, AdornRemoveS, and AdornRemoveT are NOT enabled for the Performance HUD but CAN be sent via *autofx to a worn Follower-Relay.
IMPORTANT: The Relay MUST WORN AND ENABLED
#RLV\!Adorn\sHat
#RLV\!Adorn\tHat
It is assumed the hats will be attached to different attach-points. That’s the whole point of the swap
AdornSwap is just a tighter auto-implementation of a detach followed quickly by an attach.
*autofx
1,WARN=SwapInPoof$RELAY=F%AdornSwapX%Hat$
END
1,WARN=SwapOutPoof$RELAY=F%AdornSwapY%Hat$
END
1,WARN=DetachS$RELAY=F%AdornRemoveS%Hat$
END
1,WARN=DetachT$RELAY=F%AdornRemoveT%Hat$
END
************************************
ArtistePalette
Copy the palette scripts into the object you want to attach. In this case we put it into a palette called TopHat. The hat is simply laying on the ground at about 20 meters. In this example I laid the hat on the ground, then I went up to my lab, 3,022 meters high. I executed the instruction from the Performance HUD. Remember, no RELAY was needed. Even though the HUD is also a relay, we can and will execute this same statement later from other tools without any HUD. The had must be previously attached manually so the Attach process will know the position and rotation it will use for placement.
*autofx
1,WARN=AttachFromInworld$r=p%TopHat%Attach%2$
END
Notice that, below, using 0 as an attach-point is how we simply use the PREVIOUS attach-point, which in this case is 2 for SKULL
1,WARN=AttachFromInworld$r=p%TopHat%Attach%0$
END
Also, notice, below, that Detaching an object will move the obj3ect back in your inventory since that is where it had to originate from at some point.
1,WARN=AttachFromInworld$r=p%TopHat%Detach$
END
Now, a little hidden gem of the Palette stems from the Action feature. We can execute an Attach/Detach matched to a given move step. You can have 1 action for each move. The example below executes an action at the beginning of move #3. The 0 is an optional DELAY time prior to the action happening. The me says apply the action to THIS palette. The other option is to specify a different palette name to apply the action to. THIS palette will be faster since the action really applies to the inventory as this action will be sent to a required attached FOLLOWER-RELAY. The name of the action is adorn. The folder name includes the adorn type. In this case it is a or – for attach/detach (aTopHat). The zero (0) says to use the previously assigned attach-point
Action,3%0%me%adorn%aTopHat@0
Action,3%0%me%adorn%–TopHat@0
*******************************************
SmartDancer (SD)
Be sure you are wearing the Follower-Relay, that it is ENABLED and that you are in the right GROUP and all the other matching requirements like ID and defaultauthorizedsender
The format for Adorning in the SmartDancer is tricky to understand.
1 – Only 3 commas are used. Any more or less and the command will FAIL.
2 – a single percent sign MUST (%) follow the ID o the command will FAIL.
3 – All succeeding parameters MUST delimited by the carat (^) a
*sequence1
ElapsedOrDuration,elapsed
1,Chat,-1231,F%Adorn^aHat
END
1 is the line descriptor
Chat is the command to send the following command to a device ready to receive on channel -1231. In this case it is the Follower-Relay which must be worn and enabled.
-1231 is the channel identified in the:
FollowerRelay, inside the notecard called
*avatarrelaychannels in an entry named
DefaultAvatarRelayChannel,-1231
F is the IDof Relays that are to execute the command and must match the ID in the FollowerRelay
Adornis the command.
aHat is the subfolder in the path that the object you wish to attach or detach or replace is in under #RLV\!Adorn\
It would be -Hat if you wanted to detach the item in a folder called Hat. Note that there IS NO FOLDER labeled -Hat. It is JUST the format that says to detach instead of attach.
It would be rHat if you wanted to replace
AdornSwap DOES work on the SmartDancer, just not for Action in the Palette.
ElapsedOrDuration,elapsed
1,Chat,-1231,F%AdornSwapX^Hat | 1
END
Notice that the same formatting rules apply as for Adorn except that for AdornSwap folder there is no prefix. It is the sub-folder name without the ‘s’ or ‘t’.
ElapsedOrDuration,elapsed
1,Chat,-1231,F%AdornSwapY^Hat | 1
END
ElapsedOrDuration,elapsed
1,Chat,-1231,F%AdornRemoveS^Hat | 1
END
ElapsedOrDuration,elapsed
1,Chat,-1231,F%AdornRemoveT^Hat | 1
END
********************************************
Async (StoryTeller)
Be sure you are wearing the Follower-Relay, that it is ENABLED and that you are in the right GROUP and all the other matching requirements like ID and defaultauthorizedsender
The format for Adorning in the Async is tricky to understand.
1 – Only 3 commas are used. Any more or less and the command will FAIL.
2 – a single percent sign MUST (%) follow the ID o the command will FAIL.
3 – All succeeding parameters MUST be delimited by the carat (^) a|
Ok so the format is different here due to how Async works.
The whole command with IT’s parameters goes in the Command field which is the 2nd field: Type, Command, Parms
The type is “C” for Chat
The Command passed the Relay is: F%Adorn^aHat
The Parameter for Chat is the channel to the Relay which is -1231.
-369,Async/A/Target/AT2/C/F%Adorn^aHat/-1231
-369,Async/A/Target/AT2/C/F%Adorn^-aHat/-1231
-369,Async/A/Target/AT2/C/F%AdornSwapX^Hhat/-1231
-369,Async/A/Target/AT2/C/F%AdornSwapY^Hat/-1231
-369,Async/A/Target/AT2/C/F%AdornRemoveS^Hat/-1231
-369,Async/A/Target/AT2/C/F%AdornRemoveT^Hat/-1231