Mesh parametric deformer: the who, what, why and where

As currently implemented, mesh presents a number of problems for those wishing to design or wear mesh clothing. As anyone who has designed or purchased mesh clothing is aware, getting it to fit our avatar shapes in all their rich variety is no easy task. Purchasers can only modify the clothing to a limited extent before they may have to start modifying their shape to fit the clothes, while clothing designers are faced with no alternative but to provide outfits in a range of sizes and / or with various alpha layers to hide body part that might otherwise show through the mesh clothes and ruin their appearance. Hardly ideal situations.

Because of these issues, Maxwell Graf presented a means by which mesh clothing could be made to fit any avatar shape through the development of a Viewer-side parametric deformer. He even opened a JIRA on the idea which gained a lot of support from designers and consumers alike. Sadly, after showing a considerable amount of interest in the idea themselves, Linden Lab downgraded the JIRA  to a status “Someday / Maybe”.

While not actually killing-off the idea, the downgrading did mean that any potential solution defined by the Lab would not be forthcoming while they dealt with other, more pressing issues – and even then, they might not commit resources to development of a solution at all. When the downgrading occurred, it was widely reported – but there the matter might have rested were it not been for a comment made by one Karl Stiefvater, better known to many at one time as Qarl Linden.

“Anyone wanna fund an ex-linden to do it?”

Qarl made this apparently throw-away comment on the NWN blog. Cutting a long story short, the comment caught Maxwell’s attention and started a series of wheels turning. As a result, the Mesh Parametric Deformer Project was born, wherein if $5400 could be raised, Qarl would produce code to a given requirement that would provide a compromise solution to the clothing issue, and this code would be made available for adoption into SL Viewers. The project was set-up with the aim of raising the funding in 60 days, or of rolling forward until such time as this target was reached.

As it turned out, the project didn’t require even the initial 60 days; the target figure was achieved on the 24th October, just 20 days after the project was first announced.

However you look at it, this is an impressive achievement – and one which may have far wider implications for code and Viewer development in the future. So – whither next for the project?

Before answering that question, let’s deal with the issue of precisely what a parametric deformer is. Speaking recently on Designing Worlds, Maxwell Graf described it thus:

“[It’s] an invisible ‘cage’ that hovers slightly above all of the different points of your body in Second Life. What would happen is, when you put on an item of clothing that is made up of mesh polygons, it would slightly shrink-wrap to fit that cage, and the cage in turn would keep it a specific slight distance away from your body at all times, no matter where your body happens to move. The end effect of this would be that it would appear that whatever clothing you put on would shrink to fit your shape, no matter what that shape happened to be.”

This, he goes on to explain, solves a number of problems for both the user and the creator, “Primarily, the cage deformer, in a single layer, will make your clothing fit from a user standpoint, hopefully without an alpha map.

“From a creator standpoint, it will eliminate the need to do multiple sizes. It will [also] give you the option of rigging and adjusting the weights on your clothing or not – because this feature will be able to be turned on and off. So, if you still want to rig items you can, but if you don’t want to learn how to do that, and it’s extremely difficult to sort through all that, then you don’t have to.”

Maxwell Graf, speaking recently on Designing Worlds

Of Code and Viewers

The code itself applies to the Viewer – there is no additional code required at the server end of things. As such, the completed code will be available to any Viewer that wishes to include it.

However, this project should not be seen as a group of users getting fed-up with Linden Lab and marching off to “do their own thing”; nor should it been seen as some kind of “rival” to any potential Linden Lab may consider either now or in the future. Quite the opposite, in fact, as Max explained. “This isn’t something we wanted to make [into] some kind of statement like, ‘Oh, well if you won’t do it, we’ll do it without you!’ or anything like that.

“This was more a case that we understand that [LL’s] resources are limited, and quite honestly that stability is an issue with the [official ] client … But it’s also important that if the possibility existed to do this project and to move forward with it, then it could benefit everybody, and that was really the goal here.”

Mesh: can be messy

In other words, the project is being undertaken with the full knowledge of Linden Lab. Indeed, such is the openness surrounding it that the Lab have stated that, in lieu of them being able to identify an alternative solution they would wish to pursue, and providing the code Qarl develops does precisely what it is intended to do and he’s prepared to sign a Code Contribution Agreement (something Qarl has stated he would be OK with), they would be willing to consider adopting the completed code into the official Viewer.

That’s quite a positive piece of feedback. Of course, it doesn’t in any way guarantee LL will adopt the code, but the offer is certainly better than a flat-out refusal to have anything to do with it.

In fact, looked at objectively, the project is actually a win / win situation for the user community and the Lab. The user community stands to get something that is viewed as a major barrier to the more widespread adoption of mesh. LL stand to get the solution for, potentially, a fraction of the cost it might have otherwise cost them to develop internally.

As such, Qarl is the ideal candidate for the work. for a start, he is a known quantity within Linden Lab, having worked for them. He is also respected with the user community as a whole, and is known for bringing us the sculpty. Perhaps most importantly, he was the man who worked on the initial development of mesh rendering capability within the platform. He therefore brings a lot to the table in terms of his knowledge and abilities.

Not Just Second Life

But it is not just Second Life that will benefit from the development of a parametric deformer – and we mustn’t lose sight of this fact.

OpenSim has an SL-compatible implementation of mesh that was recently released in version 0.7.2. Like Second Life, this implementation suffers from the same issues around the creation and use of mesh clothing.

Given this, it is obvious that having a deformer available within the Viewer has enormous relevance to the OpenSim community, something that has been recognised by SL and OpenSim developer Judsen Jonstone, who has been working with Max and Qarl to engage the OpenSim community in the project. These efforts have resulted in a number of contributions for the project coming from the OpenSim community.

So the Money is In; Where Next?

Now the money has been raised, the way is clear for the work to commence. I asked Max when this was likely to be, if it hasn’t already happened, and whether he and Qarl had discussed a schedule.  “I think he will start immediately if he hasn’t already,” he replied, “He seemed pretty familiar with this type of feature, and that will make things easier.”

If all goes according to plan, the code itself will be written and available in four or so weeks. What happens after that is pretty much down to those Viewer developers that decide to adopt the code. This means that while it is hoped the code will start to appear in Viewers sooner rather than later, it’s not going to suddenly materialise overnight.

However, TPV support is as critical for the project as getting the code written, as they are more likely to be in a position to immediately adopt the code once it is available. With this in mind, I asked Max if there has been any feedback from TPV developers about the work. “Some of them are chomping at the bit for this just like I am!” he replied, “I know Phoenix, Exodus and Singularity developers have [all] expressed interest in it, and there’s the OS Grid as well.”

It Doesn’t End There

But it doesn’t just end with the adoption of this particular iteration of the code by the Viewer community. What is being delivered will allow you to wear a single layer of mesh clothing that will “shrink-to-fit”.

But what if it were possible to have a multi-layer deformer that allowed multiple items of mesh clothing to be worn, with each successive layer conforming not only to your shape – but also to the mesh clothing beneath it?

This would allow you to wear mesh pants, tops jackets, all of which would shrink to fit your shape and one another without any bits of clothing or your body “poking through” the layer(s) covering them. Indeed, with such a multi-layer approach, You could even wear a new mesh avatar – robot, gorilla, whatever is out there – and the mesh clothes you wear with your “normal” shape would instantly “fit” over the avatar shape when worn with it. Each layer would instantly and properly conform to whatever lay beneath it.

Exciting idea, isn’t it?

Well, this could well be the next step for the deformer. Whether it in fact happens depends upon how well-received the initial single-layer solution is received. “The layered/hierarchy system is something that would definitely be a second stage for this, though how readily that will be done depends on how this first one goes,” Max said in confirmation of this. “I do know it will be easier once the first system is in place, but not sure if its something that can just be easily dropped into place or what that will require.”

Should the decision be taken to go ahead and enhance the deformer in this way at a later date, then a new project will be established. However, until that decision is taken, Max requests that people stop making contributions to the current project because the goal has been reached.

When considering the future, it’s impossible not to speculate – as some already have – as to whether this might mark the start of a new approach to developing specific features for the Viewer environment, with other attempting the funded route.However, Max is clear that he hopes this isn’t the case. “I don’t think that this should set a new precedent or become the accepted standard for feature development;” he informed me, “We shouldnt have to pay for features like this as a rule. In this instance, however, I think it was a viable solution.”

Positive Reflection

Whatever the future – both in terms of what happens with regards to enhancing the parametric deformer once delivered, or on the subject of the funding of specific Viewer enhancement projects – one thing remains undeniably clear. Raising $5400 in just 20 days is remarkable; something Max himself is keen to acknowledge as we wrap our conversation. “I think this is a great statement by the community that we want to see SL continue to evolve into something more usable, and we want to help push mesh to be what it can be,” he said. “This is a positive reflection on how much we as a community really want to see mesh become more accepted here.”

For my part, I can only agree, add my congratulations all who have contributed to the project. Every who has should feel justifiably proud of their involvement. Kudos to all, and I look forward to reporting on he the work progresses in the coming weeks. I’d also like, in closing, to thank Maxwell Graf for his time and input in making this article possible, and also thank Saffia Widdershins and Elrik Merlin for contributions to this article for their permission to use material first broadcast in Designing Worlds.

Radegast 2.2

I finally had time to sit down and play with the latest update to Radegast – version 2.2.1171. This isn’t a major update per se, but it certainly adds some very nice capabilities to what is, from a straightforward user perspective, the most flexible of “text” clients for Second Life and OpenSim.

As always, comment here are based on using the Windows version, and this article supplements my previous reviews of Radegast and Radegast 2.0.

The .EXE file comes in at around 8.3Mb, and as with previous versions, installation is very straight-forward, although I was surprised when it gave the install directory as Radegast-experimental, given this is a formal release; quick update needed there! The login / splash screen hasn’t been changed since the 2.0 release, and logging-in brings you to the familiar chat tab in the main window.

The key updates with this release are:

  • Multiple attachment support
  • View your own attachments in the object tracker & touch them
  • Temporary texture uploads
  • Change Profile Picture
  • Inventory backups can now save textures and snapshots

Multiple Attachments

This sees an ADD TO WORN option added to the menu when you right-click on an object in Inventory, allowing you to wear it at the pre-assigned attach point (body or HUD) in addition to whatever else is already worn at the point, exactly as with a graphical Viewer.

Additionally, any objects attached to your body or a HUD position are now listed in the main OBJECTS tab, as well as TOOLS -> MY ATTACHMENTS or CHAT -> [Avatar]-> ATTN. Providing you set the Objects tab to display objects by DISTANCE from you, rather than NAME, worn items will always appear at the top of the list, making them easy to locate.

Attachments now listed in OBJECTS tab

As with other scripted objects, you can access the menu for any attachment by either right-clicking on it and selecting CLICK/TOUCH from the drop-down menu, or left-click on it and then clicking on the TOUCH/CLICK button.

This now allows you to view / edit any scripts / notecards contained in an attachment (subject to permissions):

  • To view the contents of the root prim: right-click to select an attachment, then click on the CONTENTS button to the right of the Radegast window.
  • To view the contents of a specific component / prim, highlight the required prim in the panel at the bottom of the OBJECTS tab, then click on the CONTENTS button
  • In either case, a list of the prim’s contents is displayed. Click on the require script / notecard and click on OPEN.

Temporary Uploads

Image file temporary uploads option

As with a number of third-party graphic Viewers, Radegast now supports temporary texture uploads. Select FILE ->UPLOAD IMAGE. The option to upload a temporary texture is on the main selection / upload panel.

Temporary uploads follow the same rules as for graphical Viewers (no SL charge on upload, cannot be transferred, etc).

Profile and Picks Images

Radegast 2.2 includes the ability to change your Profile image, or any images associated with the Picks in your Profile.

  • Select your avatar’s name in the Chat window and click on the gear icon to open your Profile
  • Size / position the main Radegast window (or your inventory window, if you have that open separately) so you can see both it and your Profile window
  • To change your Profile picture, navigate through your inventory and select the image you wish to use for your new Profile picture. Drag and drop the image into the image area of your Profile
  • To change the image for a Pick, open the required Pick in your Profile. Navigate through your inventory and select the image you wish to use with the Pick and drag and drop it into the image box on the Pick display in your Profile.
Drag and drop images from your inventory to update your Profile and Picks
Drag and drop images from your inventory to update your Profile and Picks

Additionally, when you right-click on an image in your Profile or Picks you can now:

  • SAVE them to your inventory
  • Locate an original in your inventory using SHOW IN INVENTORY
  • Copy an image to your clipboard
  • Copy the UUID of an image to your clipboard.

Other Features and Fixes

Features

  • Francogrid (OpenSim) added to grid presets
  • Option to save images and inventory list to inventory backup
  • 3D scene viewer renders megaprims even if their center is beyond the draw distance as long as their closest edge is within
  • Auto Item accept
  • Ability to see group and group roles keys

Fixes

  • [RAD-268] – merged ‘Chat+Objects’ Tabs can’t be re-opened
  • [RAD-280] – Autoresponse triggers on System Messages
  • [RAD-282] – BVHDecoder exception
  • [RAD-294] – 3D Scene view takes over 3D Object View, and crashes upon close.
  • [RAD-295] – My avatar gets partially stripped when using Radegast
  • [RAD-301] – Chat log is not recording avatar chatting.
  • [RAD-305] – Radegast can potentially “timeout” during Image Uploads causing loss of funds
  • [RAD-306] – Saved logins only stores one login per grid
  • [RAD-309] – UI updates to -1 linden dollar if a payment fails due to insufficient funds

Related Links