Picking rigged mesh (worn clothing / bodies / animesh) almost never works, especially in edit mode #255
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#255
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?
Report
Clicking on rigged mesh (worn mesh bodies, clothing, rigged attachments, animesh) is extremely difficult, and in edit / build mode it essentially never works. You can't select or right-click the rigged item you're pointing at.
Background / suspects
LLVOVolume::lineSegmentIntersectfor rigged faces uses the CPU-skinned volume (getRiggedVolume/updateRiggedVolume) only when "pick rigged" is enabled (gPipeline/LLDrawableflag,RenderRiggedPicking/ "Select rigged mesh" in the build tools,gFloaterTools"edit linked" + rigged).LLToolSelect/LLToolCompTranslate/gViewerWindow->pickImmediatewithpick_rigged) may additionally requiremRiggedVolumeto be valid, or may exclude rigged entirely unless "select rigged" is on.vkPickHUD, and RT primary rays exist: debug view 13/14 show per-pixel hit instance ids). A ray-query against the TLAS (which holds the skinned rig positions) at the cursor gives the exact rigged instance / face under the mouse. This is the standard GPU-driven way and matches what's drawn.Acceptance
Fix on branch
rigpick(81dacb7cea,37d4fd3b62,4005fa4ae8,ab198588c8). Not built or run yet: syntax checks only.Root cause
LLVOVolume::lineSegmentIntersecttested the bind pose. Worn rigged items went throughvkIntersectAttachmentObject: the bind-pose volume times the attach-point matrix, which is the wrong space altogether. Animesh went through a CPULLRiggedVolumebuilt from stale, sparsely read-back joints.Fix: GPU cursor pick (
vkgfx/llcleanpickvk.*,llcleanrigpick.*, shadersclean_pick_*)cursorIntersect) is sent to the renderer.cand[]plusmSkinVbo). It only looks at rigged items whose avatar's bounds the ray crosses.AnimatedObjectsAllowLeftClickdefaults to 0.Preference: Preferences > Advanced > "Accurate rigged mesh picking" (
RenderVKPickRigged).Caveat: mode 1 needs something that uses ray tracing to be on (ray-traced sun, ray-traced projector shadows, ray-traced probes, or an RT debug view), not just RT hardware. With none of those on, the TLAS isn't built and rigged mesh isn't pickable at the default setting. That's no worse than before, when picking used the bind pose. Mode 2 covers that case.
Status check (verification sweep): the GPU cursor pick shipped in v1.0.0-beta.1/beta.2 (
81dacb7cea,37d4fd3b62,4005fa4ae8,ab198588c8,5b6784ad6f,42e0d982c0).Still open: with the default settings, worn rigged mesh is usually still not pickable. RenderVKPickRigged defaults to 1, which needs a TLAS, and the TLAS is only built when some RT feature is in use. RenderVKSunShadows and RenderVKProjectorShadows both default to 1 (shadow maps), so there's no TLAS, and the setting's own comment says it then tests "usually nothing". To meet the acceptance by default, mode 1 needs to build or keep a pick TLAS, or auto-fall back to the skinned compute path (mode 2) when no TLAS exists.
Fixed in 1.4.1 (
2627dbb329). Reopen if you still see it.