llSetLinkAttachmentPoint
tracked
Ross Myhre
Ability to make individual prims within a linkset follow any attachment point, not just the attachment point the root prim is occupying.
This would enable certain attachments with clickable prims to be combined; alleviating attachment limit woes.
*EDIT: Clarification for anyone else who misunderstands. A skinned mesh (incorrectly termed "rigged" in SL) cannot be scripted with a touch event, which is the entire point of my request.
Additionally, as is also true in Kristy's example use case, the user needs to be able to reposition the prim wherever they please. Setting bone weight via the script would make this impossible.
Log In
Spidey Linden
Merged in a post:
Allow parts of an unrigged linkset to follow different attachment points when worn.
Jenna Felton
The idea seems simple: Prims in an link set can be adjusted so that they would follow not the attachment point the link set is attached to but a different one. The feature only makes sense for unrigged prims, thus for now it be limited to those, i.e. if a prim is rigged it will follow the bones the prim is rigged to.
Realization
- A prim receives a new property, e.g. "group". Every prim in a link set can have this set differently.
- When it is unset then the prim belongs to a default group and follows the attachment point the root prim of the link set is attached to. This is the default SL behavior.
- The property can be set to any attachment point (including HUDs) then the prim follows this attachment point instead.
- In the build floater the setting "edit linked parts" is split once more because now you have a third possibility:
- You can edit the whole link set (old behavior: "edit linked parts" unchecked,)
- you can edit every single prim (old behavior: the checkbox is checked,)
- and you can edit the group, i.e. all prims with the same "group" setting. This allows to move, rotate and re-scale prims that follow the same attachment point and thus belong together.
- When the build floater opens, when it opened to edit an attached link set via selecting a grouped prim, the group selection should be chosen first (the user wants to edit the whole group most likely),
- otherwise the link set selection is active, to prevent accidental destroying of the link set.
- While a whole link set can be re-scaled at once, moving or rotating of all prim groups together is difficult to synchronize because the orientation of the attachment points depends on the running animation. Especially movement of the HUD groups and avatar body groups is most uncorrelated. Thus positioning and rotation of prim groups must be probably disabled when editing the whole link set.
- LSL (and SLua) need now two more commands to scale, move, and rotate a single group around a chosen prim. Including new flags to the llSetPrimitiveParams()bundle.
- These commands are at least needed for "minimizing" the HUD prim groups.
Benefits and impact on SL community
- You can wear a single link set of unrigged prims which look like a set of attachments worn on different attachment points. For example:
- The walk-man on your waist and the particle-wired ear buds in your ears are actually one single link set but yet behave like 3 separate attachments.
- Both shoes (prim shoes are rarely made nowadays but still) are one single attachment. And when you always have the shoe HUD attached it can be linked with them as well.
- You can create smart-phones, -watches, tablets, glasses, hoods (and other similar devices which are used for information in RL) more functional in SL by linking a HUD to the link set so that it appears on the user' screen as soon they equip the device. And that without using an experience, attachment request, and an extra attachment slot.
- The avatar attachment can be even rigged, as long the HUD prims are not rigged they can be set up to appear on the user' HUD.
- You must not create a rigged mesh to make different prims appear on different attachment points. You can do this with unrigged prims now. After you learned how to build such link sets "normally" you can start learning how to create rigged mesh. This may make it easier to become a creator in SL.
- Also you can create a model of your build inworld and then when it is working to your satisfaction, export and rig it in your mesh program.
- When the group property can be changed via scripts (I believe the impact to the server is minimal) then you can visually "move" an attachment from one hand to the other (for example).
- The creators will get more control about where the users will wear their creations: No matter where a link set is attached to, the unrigged parts will appear on the attachment point chosen by the creator. This is similar to how it happens with the rigged mesh.
- The number of scripts running in bundled attachments is reduced: Since scripts can use most operations on other prims in the link set, they may reach and control prims grouped to different attachment points.
- Communication between (scripts running within the) prims in different groups is done via llMessageLinked()instead of chat commands which is probably less demanding from the region.
- You may also want to add a link set message command that limits the messages to a single group but it is not necessary and may come at later point.
Spidey Linden
updated the status to
tracked
Issue tracked. We have no estimate when it may be implemented. Please see future updates here.
Miles Doge
Having something like this would play perfectly into a longstanding idea I've had planned in my mind for the longest time.
I've always wanted to create an attachment based, animesh robo companion, who would not only stand/walk/run/roam with my avatar, but also have the option to cling to my back with some kind of separate "backpack" form!
rhet0rica Resident
Just having a llSetAttachmentPoint() for the whole linkset would be great, honestly—there's currently no way to e.g. put a weapon on your back or switch hands without a second copy. This could probably be done by overloading llAttachToAvatar(), though.
Phate Shepherd
rhet0rica Resident This is all I need. The ability for a script to set a default attachment point for the linkset or change attachment point on the fly.
Jasdac Stockholm
I hope this works for animesh also
Vincent Nacon
Would be better if we could set which bone in the armature system with a weight value.
Ross Myhre
Vincent Nacon: Not at all. If I want something skinned I'll skin it. This isn't what I'm asking for. If you want that feature open a separate feature suggestion.
Vincent Nacon
Ross Myhre: It is, actually. That's how attachment works, but they get full 1.0 weight to that only one "attachment point" and no others.
Ross Myhre
Vincent Nacon: Ah apologies. I thought you were misunderstanding what I meant, but it was vice versa. Rigged mesh can't be scripted with a touch event, and can't be repostioned. But yes, if we could set weight to more than one attachment bone that would be cool, I see now!
Vincent Nacon
Ross Myhre: Yeah, rigged mesh is much more complex to do, the script need to know which vertex that you want to change the weight. But for normal prim attachment, you're only applying to the root position. So not only with this suggestion we could switch a "pencil" prim from hand to chest (pocket), we could blend between more than one point. Could be useful for some kind of item/avatar animation.
Extrude Ragu
Vincent Nacon: Although I agree with the premise, a weight for a single bone would do nothing, you need at least two bones for weights to do anything.
I do like the bone idea though, would be useful for placing unrigged prims/mesh in certain areas, especially physics enabled parts of the body this would be quite useful for.
Kristy Aurelia
This would enable quite a lot of different use cases.
For example:
I’ve made a set of headphones, and they use two copies – main and a decoy – to create a ‘take-off put-on’ effect, by communicating with each other to show/hide appropriately. The main set of headphones sits on the head, and the decoy set is around the neck. The reason they need different attachment points is so when the avatar animates, the neck version of the headphones does not move with the head animations. The decoy version does not even need to be around the neck, the user could attach it to their hand, or position them on a backpack, or anywhere else that fits their style. Function to change attachment point would eliminate the need for the second copy of the item, reducing attachment slot use, avatar complexity, as well as requiring less scripts, as they would not need to communicate with each other, and also make synchronizing scale, textures, tint colour between them a lot easier.