Update: Sometimes working on multiple posts to your blog isn’t a good idea. Between drafting and pushing this one, Qarl updated his code, as Cinders points out. Sorry Qarl! Correct link is here.
Slightly later than he’d hoped, but keeping to his promise, Qarl has released version 0.3 of the Mesh deformer, stating:
Quick announcement – I’m releasing version 0.3 of the deformer code. Primary changes: 1) should now apply cleanly to recent linden viewer code, 2) deformation tables are computed in the background on another thread, so no frame stalls.
There appear to be a couple of elements missing from the patch – as spotted by Henri Beauchamp in a comment following Qarl’s post, so developers may want to hold-off grabbing the code for a bit.
I’ll be watching the various Viewer blogs for updates to see when the patch is incorporated. It’s likely to make an appearance in the likes of Cool VL and Dolphin very rapidly, providing the code is stable. Niran V Dean is planning to make a Full release of Niran’s Viewer 1.33 in the next couple of days, so this might also see the code included – we’ll have to wait and see.
Linden Lab had a Development Viewer in the offing for the deformer. This actually dates back to January, but didn’t get any further than an optional development Viewer due to assorted issues. Marine Kelley, who uses the V.3.2 reported that she’d removed the deformer from her last release due to crash issues, which may be related to reasons why LL never moved the code further along their Development cycle. However, as Qarl appears to have specifically addressed some (or all) of the issues, we may yet see the deformer appearing in something like an official Project Viewer sooner rather than later.
It’s been a while since we’ve had news on the mesh parametric deformer project. So it was good to hear Karl Stiefvater (Qarl Fizz, formerly Qarl Linden), the man behind the code, to provide a brief update on matters in this week’s Metareality podcast:
[27:58] Sorry guys; so here’s an update on the deformer. I have been obscenely busy in the last three months work-wise, and I have not had the chance to work on it much. That said, I did start working on it again on Monday [the 16th April] and I should have a release this weekend … The deformer’s going to happen, you don’t need to worry about that. Linden Lab has committed to getting it working; if they reject it for dumb reasons, I think that would – while they’ve done dumb things in the past, I don’t think that will happen; that would surprise me.
Given that there have been unfounded rumours circulating that Linden Lab are trying to “kill” the deformer – which seem largely based on the premise that the project doesn’t appear to be progressing as fast as some people believe it should – hopefully, Karl’s update will set matters to rights, and see an end to such rumours.
For my part, I’ll be keeping an eye on Karl’s website at qarl.com, and will relay any news that is forthcoming.
In the meantime, there has been an interesting discussion going on within the SL official forums relating to standard sizes in SL and mesh. It’s worth a read and gives pause for thought – particularly Max Graf’s very considered input to the discussion.
Qarl Fizz (Karl Stiefvater) has provided further commentary and feedback on the developing mesh parametric deformer project via a You Tube video. In it, he specifically addresses a number of questions and concerns, as well as providing further explanation on the current alpha of the deformer and how things are developing, and why some options and ideas are unlikely to make an appearance in the first release of the code (but may appear down the road).
Providing Feedback
Initially, feedback was requested via the deformer JIRA. However, given some of the issues raised as to the appropriateness of discussions on the JIRA, Qarl suggests that future comments on this video and the project in general should be made directly to his website for the time being.
The news broke via a Metareality podscast, and follows-on from the previous weeks’ podcast in which Karl Stiefvatar (Qarl Fizz in SL, formerly Qarl Linden) was about to make an Alpha push of the code.
In discussing the release, Karl states, “I should specific immediately that it’s not done; but the heavy lifting part of it is – the tricky 3D math, the place to integrate into the render pipeline,etc, etc, is … So I’ve giving it to you now in this form so that you can give me feedback, because there are decisions that need to be made now that we should make together.”
Karl has released a video demonstrating progress to date, which is available on his website and YouTube:
The video itself is both informative and impressive; demonstrating the deformer working on a standard avatar and on “mesh avatars” human & non-human (so using it, you can now increase the body fat of a mesh avatar if you so wish). Additionally, the deformer works with the Linden-Lab implemented avatar physics as well – again including non-human avatar meshes.
The code does have a couple of additional caveats at present, one of which is that changes applied to an avatar are applied to all meshes attached to the avatar; this is fine where clothing is concerned; but as Karl points out, if you have something like a gun attached to your avatar, you don’t want it to resize as well; so he suggests boolean function may be required to determine which meshes are affected by the deformer – and this may additionally require input from Linden Lab.
Karl openly encourages LL and TPVs to incorporate the code in order to allow users such as clothing designers to experiment with it, as feedback is now the key.
Those wishing to add the code as it stands – and bearing in mind Karl’s warning that this is only an Alpha release can also find it on his website.
A JIRA (SH-1716) has been opened to deal with the deformer code itself, on which a number of baseline questions on the deformer are asked and answered by Karl himself (to reference frame for the project), and within which further questions and feedback is encouraged. Karl specifically asks that you use this JIRA, and not his website for feedback – and as an extension to this, it is suggested that the original parametric deformer JIRA is not used for feedback relating to the code.
SH-1716 already has interesting discussion-points within it, relating to preferred models on which to base the deformer, how to address the question of a boolean function to handle “rigid” attachments (such as the aforementioned gun) – and indeed whether any boolean is in fact required, or whether the matter can be handled via other means. Therefore anyone with a technical interest in the project would do well to give the JIRA a look, bearing in mind Oz’s pleas on the subject of wider discussion (although given the complexity of the subject, one would think that forcing a split in questions & feedback & wider issues could result in something of a fracturing of information on project).
Niran’s Viewer
Those really keen to see the deformer in action might want to download version 1.03 of Niran’s Viewer, which already incorporates the code, but note that NiranV regards this as an experimental release, and the code will likely be removed from the next release.
It’s taken a little while – understandably, as wheels have to be set properly in motion – but the parametric deformer project has its first official update today, in which Max Graf gives an overview of what is happening:
“Karl [Qarl Fizz, aka Qarl Linden as was] has begun working on the code and was contacted by LL in order to facilitate development of this feature. He will be working directly with LL from this point forward to supply them with code as the project moves forward, allowing them to check the feature with compatibility for the official LL releases as he progresses so that when it is done it can quickly and easily be included without weekes of additional testing. They contacted him directly to expedite the process and work together from the start of this, which means it will be working correctly and will make it a lot easier for TPVs and other grids to implement once it is done!
“This is great news and in addition to the comment Charlar made about further development with open source features is indicative of some serious new possibilities for development. Kudos to LL and Karl for being able to come to the table together for the good of the SL community. This is a best case scenario for this project, and indicates a strong willingness on LL’s part to adopt and implement this new feature that we have wanted since July.”
Kudos indeed to Linden Lab!
As Max says, this is a best case scenario for the project, and will do much to ensure the completed deformer can be smoothly integrated into the Snowstorm code. This is turn should make the code easily more adaptable by those TPV developers who maintain V3.x-based Viewers, although older V1.x Viewer developers may still have a little work on their hands. Once again this is a win-win-win scenario for all: Second Life, Linden Lab and OpenSim (which faces similar issues when it comes to mesh clothing).
Estimates put the work of code development at around four weeks or so; given that LL are now going to help ensure the code can be integrated into the Viewer code more readily, the development cycle may well stretch a little – but the end result will be more than worth it.
It’s great to see the Lab respond so positively and openly with a user-based project in this way, and again demonstrates that the Lab is willing to engage and work cooperatively with the community as a whole.
It’ll be interesting to see whether this project yet proves to be a new building block in the way the Viewer is developed and enhanced in the future.
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.