According to the documentation, llDetectedTouchST and llDetectedTouchUV use the bottom-left corner of the surface as the origin (0,0). This behavior is correct when interacting with meshes uploaded using COLLADA.
However, when the same geometry is uploaded as a GLTF/GLB mesh, the origin appears to be the top-left corner instead. As a result, the returned Y coordinate is inverted, producing negative or flipped values compared to the expected result.
This issue is demonstrated in the attached video, which shows a single plane mesh containing a script that outputs llDetectedTouchST. The Y value becomes negative when touching the surface. The same behavior occurs with llDetectedTouchUV:
Impact
This is a significant problem because it causes these functions to behave differently depending on the mesh upload format. Scripts that rely on consistent UV/ST coordinates cannot work reliably across COLLADA and GLTF meshes.
Steps to Reproduce
  • Create a simple mesh in a 3D application (for example, a single plane or a cube).
  • Export the mesh as GLTF or GLB.
  • Upload the mesh to Second Life.
  • Add a script that outputs llDetectedTouchST(0) and/or llDetectedTouchUV(0) to local chat on touch.
  • Touch the mesh and observe that the Y coordinate is inverted compared to a COLLADA-uploaded mesh.