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.
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.”
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.”
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.”
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.