Essentially, scripters in Second Life have long wanted to be able to tell exactly where an object has been clicked, rather than simply which object was clicked. There is currently no way to gather that information, which is why if you look at any HUD attachment with what appears to be multiple buttons in View Transparent (CTRL-ALT-T) mode you’ll see that each button is a different prim.
By creating new LSL functions (NOT just for MONO, despite the fact that this was discussed at a Mono Office Hour) that return both region-relative world coordinates (llDetectedTouchPos) or uv-mapped texture coordinates (llDetectedTouchUV), Second Life content creators will be empowered to make much more functional user interfaces without as many prims.
Already my mind is churning out reams of ideas of how this could make scripter’s lives a little better, but quite naturally the very first thing that occurred to me was that the ability to gather per-pixel touch information on a prim will enable the final stages of html-on-a-prim, which seems to be born out by the actual (heavily edited) transcript :
Periapse Linden: Ok, so our special guest today is Qarl.
Qarl Linden: woo.
Periapse Linden: The Linden who brought you sculpties
Seifert Surface: yay.
Siann Beck: Hello Qarl
Qarl Linden: hey all.
Periapse Linden: He’s back with a great new idea he’d like to get feedback on.
Qarl Linden: so i have to give credit where it’s due -
Periapse Linden: So go ahead Qarl and tell us about Detected Touch
Qarl Linden: Seifert originally asked for this feature a year ago.
Vincent Nacon: yeah I believe I fed him some of those ideas…. if he checked his email
Qarl Linden: i got sidetracked and didn’t get to it ’til now.
Qarl Linden: https://wiki.secondlife.com/wiki/LSL_Touch_Position
Qarl Linden:
Seifert Surface: i think people have been asking for it from waaay back in the day
Qarl Linden: yeah, true.
Vincent Nacon: yeah I’ve been wondering how that will work
Qarl Linden: what we’ve got here is the ability to get more information about touch events.
Vincent Nacon: by polygon?
Qarl Linden: you get to know where on the surface, and where in world the touch occurs.
Qarl Linden: you get the face number as well.
Vincent Nacon: err… how many faces are there?
Qarl Linden: it’s continually updated as the mouse is held down - so you can implement dragging.
Qarl Linden: 6 faces on a cube - etc.
Seifert Surface: vincent: faces as in faces on a prim
Chance Abattoir: Where on the surface, that’s rad!
Seifert Surface: 1 face on a default torus
Qarl Linden: and the POSITION, as well.
Vincent Nacon: oh was thinking about sculpty part
Vincent Nacon: muhahahaha!
Qarl Linden: texture coordinates, etc.
Siann Beck: That sounds awesome.
Qarl Linden: right now we’re asking for feedback - make sure we don’t miss anything important.
Seifert Surface: presumably if we ever get 2 sided planar sculpties, theyd have 2 faces
Qarl Linden: presumably.
Seifert Surface:
Vincent Nacon: wait… didn’t we already have something like that
Vincent Nacon: the drag I think
Qarl Linden: there’s a similar call: llDetectedGrab().
Vincent Nacon: yeah
Qarl Linden: but it’s not so good for a variety of reasons…
Rex Cronon: list llDetectedTouchAll()
Vincent Nacon: yeah, tried to make a joystick imput by using that
Vincent Nacon: input*
Qarl Linden: it reports movement relative to the camera position…
Vincent Nacon: yeah
Qarl Linden: not so useful.
Vincent Nacon: it was neat at first but meh
Qarl Linden: now you’ll be able to put an entire GUI into a texture, and determine with the position info which button was clicked.
Qarl Linden: chess boards, for instance - won’t need 64 prims.
Seifert Surface: the continual updating works with the touch event firing lots right?
Siann Beck: That’s awesome. A lot of vendors can be re-designed.
Qarl Linden: exactly.
Vincent Nacon: so… if we’re going to have touch_position on surface, what does it means for html-on-prim?
Seifert Surface: right
Mbrb Rau: 1 prim vendors…
Qarl Linden: yes - that’s one of the motivations for this work -
Qarl Linden: so that prim web browsing will be easier for us to implement.
Vincent Nacon: yeah, figured
Vincent Nacon: well that’s good, hope it won’t be much of a problem with flash
Qarl Linden: naw - it’ll still be controlled with parcel media…
Rex Cronon: could it be possible for a script to load a notecard that has html code on a specific face?
Qarl Linden: flash is hard because mozilla has a truly horrible plugin interface.
Vincent Nacon: now that’s a thought
Qarl Linden: we’re looking at webkit and others for that…
Qarl Linden: maybe notecard->html … but that’s not REALLY useful…
Vincent Nacon: so how the position will work? gobally or local?
Seifert Surface: rex: really you want to be able to alter the webpage on the fly from a script
Qarl Linden: only if you can’t get your own webpage.
Seifert Surface: say for a scoreboard or something
Qarl Linden: yes. exactly.
Qarl Linden: but you can do a LOT by passing parameters to a webpage in the URL.
Rex Cronon: i want to have display that is not connect to a web page
Vincent Nacon: and for non-flat surface… how will that set the local position? based on UV map maybe?
Seifert Surface: html file in a string?
Qarl Linden: i’ve seen an example where HTML is in the parameter…
Qarl Linden: yes - it’s the UV map.
Vincent Nacon: ah ok perfect
Chance Abattoir: When will this script go into testing?
Chance Abattoir: function
Qarl Linden: soon - i’ve got the implementation finished - just a couple more tweaks.
Qarl Linden: a month timeframe, i think.
Qarl Linden: but no promises.
Latest Comments