Pose Studio: while active, other Slipstream viewers stop seeing volume-bone animations (even with no bones posed) #839
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#839
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
While Pose Studio is active, other people stop seeing some of your animations, apparently those that move volume bones (collision volumes, e.g. butt / belly / chest / tail-style volume animations). It happens even with no bones posed: just having Pose Studio open / active is enough.
Likely cause (from reading the code, not yet confirmed)
Pose Studio is built on the poser's posing motion (
fsposingmotion.cpp/fsposeranimator.cpp).FSPosingMotion::onInitializeadds a joint state for every character joint and every collision volume (fsposingmotion.cpp:45-66,addJointStatewithPOSER_JOINT_STATE). While the motion is active, those joint states take part in blending for all of them, posed or not. If an unposed joint's state still carries rotation / position / scale at the motion's priority, it overrides lower-priority animations on those joints. Volume-bone animations are typically low priority, so they lose.Which "other clients"?
Two different paths to check:
slposesync.cpp) and run a posing motion for your avatar locally. If that motion is applied whenever sharing is on, even with nothing posed, it would hide your volume animations in their view.Establish which viewers are affected first.
Expected
With nothing posed, Pose Studio should not affect any joint. Only bones the user actually posed should be overridden, locally and in the shared pose, and only those joints should have a joint state or priority in the posing motion (or unposed joints should carry no weight). Collision volumes should only be touched if the user poses them.
Repro
Wear something with volume-bone animations (or play an animation that animates collision volumes), have another person watch, open Pose Studio without posing anything, and compare what they see with Pose Studio open vs closed.
Narrowed: only other Slipstream viewers are affected. Pose Studio shares poses only over the bridge's LSL messages to other Slipstream instances (
slposesync.cpp); nothing reaches the sim's animation state, so Firestorm and LL viewers can't be affected.So the fault is on the receiving side, or in what's sent. With Pose Studio active, a watching Slipstream viewer runs a posing motion for the poser's avatar from the shared pose, and that motion overrides the avatar's volume-bone animations even when nothing is posed. Check:
fsposingmotion.cpp:45-66) at a priority that beats the avatar's normal animations.The fix: the receiver only overrides joints actually posed in the shared data (and nothing at all for an empty pose), and the sender doesn't share unposed joints.
Pose Studio: while active, other viewers stop seeing volume-bone animations (even with no bones posed)to Pose Studio: while active, other Slipstream viewers stop seeing volume-bone animations (even with no bones posed)Also: the Pose Studio user still sees their own volume-bone animations fine; only other Slipstream viewers watching them are affected. So the sharer's own local posing motion is not the problem. Look at what is shared over the bridge (
slposesync.cpp) and how receivers apply it to the remote avatar (the receiving side's posing motion / joint priorities), not the sharer's local motion.Fixed in 1.4.1 (
665e772808). Reopen if you still see it.