Uploaded image for project: 'Open Development'
  1. Open Development
  2. OPEN-364

[PUPPETRY][LEAP] Puppetry LSL features

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Unset
    • Resolution: Unresolved
    • None
    • Feature

    Description

      How would you like the feature to work?

      I would like to see at least some KFM-alike features provided to the new puppetry updates. These would function in a similar manner to the existing llSetKeyframedMotion function for linksets, but applied to animation bones.

      The key difference would be EASE_IN and EASE_OUT features. This would provide the possibility for a more natural movement option, without relying on fast timers and rapid updates being sent to the viewer.

      In addition, a function to hard-set bones to absolute positions would assist creators in ensuring that their systems work in all cases.

      Pseudocode:

      void llSetBones(
      [
      integer BONE_CONSTANT,
      vector position,
      vector rotation,
       
      float length,
      integer BONE_CONSTANT2,
      ...
      ]
      );
       
      //This function need only get the position of bones at the end of the next keyframe if motion is being applied. Returns a list of BONE_CONSTANT,POSITION,ROTATION,LENGTH tuplets.
      list llGetBones(
      [
      BONE_CONSTANT1,BONE_CONSTANT2,...
      ]
      );
       
      void llSetBoneKeyframedMotion(
      [
      integer COMMAND, //PLAY,STOP,PAUSE
      integer MODE, //FORWARD|REVERSE|PINGPONG|ONCE|LOOP
      integer DATA //ROTATION|TRANSLATION|LENGTH
      ],
      [
      integer BONE_CONSTANT,
      vector DESTINATION_POSITION,
      vector DESTINATION_ROTATION,
       
      float DESTINATION_LENGTH,
      float TIME,
      float EASE_IN, //the lower the value, the more linear the motion.
      float EASE_OUT,
      ...
      ]
      );
      

      Why is this feature important to you? How would it benefit the community?

      Puppetry is already a thing in planning. Allowing scripters to have access to a few powerful LSL functions could take it from a niche feature of "people who want to strap sensors all over themselves or hang webcams up everywhere", to a system that could be useful for all kinds of robots, machines and other systems where smooth animation is desired, without having to fiddle with arcane and archaic external programs. It could enable the creation of inworld objects that use animesh to interact with users meaningfully, in a far more dynamic way than using current animation methods.

      It may even have the side-benefit of providing ways to un-break deformed skeletons reliably, which would fix a problem that has been part of the platform for years.

      Attachments

        Activity

          People

            Unassigned Unassigned
            toothless.draegonne Toothless Draegonne
            Watchers:
            12 Start watching this issue

            Dates

              Created:
              Updated: