Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

nPose: open source, no-balls multi av pose system

Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-06-2009 15:56
I've created an open source, multi av pose system that does not require rezzing poseballs. It's available at https://www.xstreetsl.com/modules.php?name=Marketplace&file=item&ItemID=1599068, though updates will be posted to the OpenCollar R&D group notices. All avatars sit on the base object itself, and one script loops through them to set positions/rotations and play anims.

Licensed under the GPLv2.

nPose is still very experimental, and things might change. In particular, the menu system in version 0.005 (the current one), is just a placeholder until I add a means of having categories and submenus.

Other future plans include rezzing props like MLPv2 and XPOSE do, and allowing a pose set config card to specify arbitrary link messages to be sent when the pose is loaded. These should be very easy to add given the way that configuration is currently done.
Rygel Ryba
Registered User
Join date: 12 Feb 2008
Posts: 254
07-06-2009 17:10
I played with this a little bit and it's a really good start you have going there, Nandana. I did get a script error when I first started, but I might have sat too fast. But, once I got it booted it was quick and easy and I can see TONS of applications for this. Best of luck with the project and next time I have a multi pose thing I'm working on (which shouldn't be too long) you can bet I'll be diggin' around in there and sending you a few snippets for consideration. :)
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-06-2009 23:58
Thanks Rygel!

Did you happen to catch the error? Can you reproduce it?
Rygel Ryba
Registered User
Join date: 12 Feb 2008
Posts: 254
07-07-2009 01:33
I'm gonna try to replicate it when I have some more time in the next day or so. Basically though... I rezzed it and sat without doing anything else. Then while still sitting (on the edge with no pose), I picked a pose and the error was trying to stop a "" animation. So my guess is that it either wasn't booted up or it needs a click and anim picked because there's no default or something. Nothing major - and I'll see if I can repro it when I get a chance. That might be enough info to find it though.
Lear Cale
wordy bugger
Join date: 22 Aug 2007
Posts: 3,569
07-07-2009 12:48
Very interesting! Thanks for doing this work.

The poseballs in MLP serve a few very important purposes:

- they allow people to choose which role they'll play when they sit.
- they allow easy adjustment -- especially, when moving all balls in a pose to suit a new furniture item. (I do this a *lot*, and I assume others must too, or they put up with substandard pose adjustments for different kinds of furniture.)
- they permit the possibility of taking controls for various purposes -- due to a still unfixed LSL bug, you can't do this with multiple scripts in one object and tell which avatar is using the keyboard.

Furthermore, they're usually gone. I usually include a timeout script that sends a STOP whenever the MLPV2 menu hasn't been used in a while, so poseballs in my shop are usually absent.

However, it would be nice to get rid of the permissions popup. For MLP/MLPV2, that would require stuffing the animations in the poseball rather than the MLP prim, which would increase the nuisance of maintaining the set of animations, and would make adding pose sets too difficult for most end users.

I'll be interested to see how poses are adjusted using this system.
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-07-2009 17:18
Avatar positioning in nPose is done using a variation on the UpdateSitTarget trick at http://wiki.secondlife.com/wiki/LlSitTarget (basically using llSetLinkedPrimitiveParams to move the avatars like prims). Animation is done by requesting anim permissions for the first seated avatar, playing the anim when you get them, then requesting anim permissions for the second avatar, etc.

I hadn't thought about llTakeControls. I think most posing furniture doesn't use it though, so I won't be too broken up if it can't be done with nPose's minimalist approach.

For adjusting avatar positions nPose rezzes handles that you can position, that chat their pos/rot back to the base when they're moved. The base then computes the offsets and llOwnerSays the line you'd need to stick into the config card to record the new pos/rot. So if you want to adjust two poses simultaneously you just click ADJUST in the menu to rez the handles, then select both in Edit, like you would with current MLP.

If the root prim is really small or doesn't have a nice horizontal surface avatars might get a "no room to sit" error. The workaround is for the designer to set sit targets on as many of the object's prims as the designer would like to seat on the object. It doesn't matter what positions/rotations these sit targets have since nPose will re-set them when the av sits. The sit targets just need to be set to prevent the "no room to sit" error. I'll include a self-deleting sit target setup script in v0.007 (the next alpha release) that designers can use to do this. (I haven't done this yet because the no room to sit error hasn't actually popped up during my development, though I keep expecting it.)

And yes i completely agree about the anim permissions dialog. Getting rid of that is a HUGE win, and one of the main motivations behind nPose (besides the general unsightliness of poseballs). Another nice advantage is nPose's usability in vehicles -- something MLP et al just can't do.
Kokoro Fasching
Pixie Dust and Sugar
Join date: 23 Dec 2005
Posts: 949
07-07-2009 18:12
Very nice system from what I can tell.

I have noticed the following so far. If AV 1 sits, and selects a meditation, then no one else can sit on the prim. If AV 1 selects the hug, then a second AV can sit, but not a third. Does the animation that the first AV selects lock the prim to the number of AV's the animation can handle?

The additional AV's do not get a error, just get un-seated.
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-07-2009 22:50
Yes you've guessed right. The anims, positions, and rotations from the notecard are saved in a big strided list, each one also having a slot for an avatar. If there are more avatars seated than animation slots in the current set, the last-seated extra avatars are unsat. This check is done every time someone sits and every time a new anim set is loaded.
Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
07-07-2009 23:25
dunno if you are seating in order, or tying a specific prim to it, but the latter is preferable as it allows much more natural seating, and lets you define multiple seatings per prim.

as an example, take a sofa with 3 cushions, set sit targets in all cusions (this is just for targeting) and name each cushion.

then you can sit on a specific cushion, say next to your friend... and when that is detected, you can poll for which cushion was targeted, and move/animate.... track the av AND the cushion as a pair, and if someone else sits on the same cushion you can chnage the new and the old with updated anims/offsets to make it a couples things, or auto fill a different cushion from other prims (and even allow uncontrolled sits on other prims)
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-07-2009 23:47
Avs are currently seated in order of their link number in the object. The first one seated gets the first anim slot, and so on. (Though there is a SWAP button that lets you switch around).

The only way I can think of to tell which cushion (prim) the av selected would be to require that sit targets be set (not currently a requirement), and permanently leave a script in each sit target prim, so I can call llAvatarOnSitTarget in each of them on CHANGED_LINK and have them notify the main script which of them was sat on. I'd really rather not add that overhead, either for the scripts themselves or the designers who'd have to use them. (Though I'm 110% supportive of anyone who wants to fork nPose to add that feature or others that I disagree about.)

On the other hand, one thing I'm planning to do is have alternate control scripts. In one specific variation I plan to make soon, you'd be able to specify different pose sets to play depending on the number of people sat. So if one person's on the couch he/she can be lounging, if another sits the two start cuddling. (As you may have seen in some Pillow Talk pose sets in the past, though nPose ought to allow scaling up to more avs.)
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-07-2009 23:57
Hmmm on further thought maybe your proposal could be done as just another control method using the same nPose Poser script. That way designers wouldn't be *required* to set sit targets to use nPose, unless they want to use that particular control method. I'll have to mull over how that would work.
Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
07-08-2009 01:08
From: Nandana Singh
Hmmm on further thought maybe your proposal could be done as just another control method using the same nPose Poser script. That way designers wouldn't be *required* to set sit targets to use nPose, unless they want to use that particular control method. I'll have to mull over how that would work.

this was kinda where my thought was leading... having it as an additional information input, one you could poll for on set up, so that your script is aware of those and knows to wait for a response (or knows to change it's behavior when a response is sent)

it will require a bit more overhead in your core script, but I think a large portion of that could be subbed out to a non-core handler, leaving the rest as a plugin extension...

I've played around with the idea myself, but never pursued it, so kudos to both you and Lear
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -
Rygel Ryba
Registered User
Join date: 12 Feb 2008
Posts: 254
07-08-2009 01:35
For anyone else who happened to catch it - the bug I mentioned in my first post seems to have been a lag thing. I can't replicate it.

I DID however, try this in a vehicle - not setting new poses or anything, but just dropped it into my Bat Mobile from our Bat Cave scene and... it seemed to work fine, both driving and flying. So this could be a very popular application of this. The proverbial "Chinese Fire Drills" and/or racing down the road with two people in the back seat doing it Zindra style... It would also make it possible to have multi-cuddle sofa's on moving space ships and all kinds of other things in SL. (Motorhomes, Party Busses, oooo the mind boggles)
Lear Cale
wordy bugger
Join date: 22 Aug 2007
Posts: 3,569
07-08-2009 10:54
From: Nandana Singh
Avatar positioning in nPose is done using a variation on the UpdateSitTarget trick at http://wiki.secondlife.com/wiki/LlSitTarget (basically using llSetLinkedPrimitiveParams to move the avatars like prims).
That's what the script does. What does the USER do? How do you adjust a position during pose setup?
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-14-2009 19:38
I've created an inworld "nPose" group for those seeking help with the system. I don't check the forums often enough to be sure I'll get back to people posting questions here. For those who prefer not to use a group slot, I've also set up a subscribe o matic where I'll post updates and plugins. You can subscribe at http://slurl.com/secondlife/Bound%20Life/198/56/3457.
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-16-2009 16:55
The latest release (v0.010) adds support for a couple of oft-requested features so I thought I'd ping this thread to let people know who might not be in the inworld group or on the Subscribe O Matic yet. The new features are:

- Ability to set a face anim (or list of face anims) that will be repeatedly played on the av in that slot.
- Ability to do Lovescene-style sequences.

Plus all the old features:

- Ability to switch av anims, positions, and rotations.
- No poseballs.
- No blue anim permission popups.
- Ability to rez props when loading a pose set (as many as you want)
- No hard limit to the number of simultaneously seated avs. Just drop in more slave scripts if you need more.
- Ability to specify arbitrary link messages to be sent when a pose set is loaded.

As always, the most recent version is available from the subscription board at http://slurl.com/secondlife/Bound%20Life/198/56/3457.
Lear Cale
wordy bugger
Join date: 22 Aug 2007
Posts: 3,569
07-16-2009 17:49
Cool :)

BTW, be sure to distribute in a box that's not full perms. Otherwise, you'll get a lot of calls like this, in the middle of the night:

The BrandX Super Bed you made doesn't work! I can't ...

A lesson I learned the hard way! (No good deed goes unpunished, espececially if you drop your pants, bend over, and hold a "SPANK ME" sign.)
Argent Stonecutter
Emergency Mustelid
Join date: 20 Sep 2005
Posts: 20,263
07-16-2009 18:07
From: Lear Cale
Cool :)

BTW, be sure to distribute in a box that's not full perms. Otherwise, you'll get a lot of calls like this, in the middle of the night:

The BrandX Super Bed you made doesn't work! I can't ...
I've had surprisingly few people complain that the thing-I-never-heard-of they bought doesn't work, despite my distributing objects and scripts full perm for getting on for four years now.
_____________________
Argent Stonecutter - http://globalcausalityviolation.blogspot.com/

"And now I'm going to show you something really cool."

Skyhook Station - http://xrl.us/skyhook23
Coonspiracy Store - http://xrl.us/coonstore
Briana Dawson
Attach to Mouth
Join date: 23 Sep 2003
Posts: 5,855
07-16-2009 19:10
*peeks in to watch the alchemist & wizards work and then quietly goes away*
_____________________
WooT
------------------------------

http://www.secondcitizen.net/Forum/
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
07-16-2009 21:55
Interesting. I am finishing up a very similar no-ball pose system myself. :)

Been sitting in my project queue for a year or so; I was surprised to see that there still wasn't anything like it on the market. :)
Nandana Singh
Registered User
Join date: 24 Aug 2008
Posts: 19
07-18-2009 12:23
From: Talarus Luan

Been sitting in my project queue for a year or so; I was surprised to see that there still wasn't anything like it on the market. :)


Yeah it's been percolating in my head about that long as well. And OpenCollar before that. Maybe someday I'll get my ideas' gestation times under a year.

Is your system open source? Could be useful to join forces, or at least poach ideas from each other.
HulkHogan Hendrassen
Registered User
Join date: 19 Feb 2009
Posts: 10
07-29-2009 16:43
I like this and it seems to work. How ever when I link the base of the Npose to something like a couch so i can set up poses on the couch it doesn't let me rez objects from it. Any ideas?
Kokoro Fasching
Pixie Dust and Sugar
Join date: 23 Dec 2005
Posts: 949
07-29-2009 17:04
From: HulkHogan Hendrassen
I like this and it seems to work. How ever when I link the base of the Npose to something like a couch so i can set up poses on the couch it doesn't let me rez objects from it. Any ideas?


Just put the scripts into the root prim of the couch, and the Adjustor prim. Set up the Default card with a basic sit pose, and go from there. You can get really complex, but start off simple with a single pose, then move to a couple, etc..

If you need some help, just IM me, and if I am in world, I can go through the basics with you. I'm not up to the complex multi pose system yet, but getting there.
Talarus Luan
Ancient Archaean Dragon
Join date: 18 Mar 2006
Posts: 4,831
07-29-2009 18:22
From: Nandana Singh
Yeah it's been percolating in my head about that long as well. And OpenCollar before that. Maybe someday I'll get my ideas' gestation times under a year.


I know what you mean, though contract and RL work has been most of my delays.

From: someone
Is your system open source? Could be useful to join forces, or at least poach ideas from each other.


I am actually making mine to sell as a product, though once it is out there, I can consider contributing ideas and efficiencies to the open source effort. :)
HulkHogan Hendrassen
Registered User
Join date: 19 Feb 2009
Posts: 10
07-30-2009 03:49
Question.

I have one object and I put the scripts in three separate objects that is linked to the whole thing. It's a Cave like thing that's why lol. However when I click one of the objects it brings up all three menus. The menus all have the same selections of the thing I am clicking but it's just annoying that three different menus pop up at the same time. Any idea how to fix this? If you don't understand I can show you what i mean in world. Thanks!
1 2