Extended instructions, tips, and ‘gotchas’ on how to compile and build Firestorm, a third-party Open Source viewer for use with Second Life by Linden Lab.
Includes both Firestorm for Windows and also Firestorm for Ubuntu Linux.
First published in February 2014, and regularly updated ever since.
NOTE: This article assumes that you are a competent software developer who is comfortable with C++ build environments and command consoles. Most people will have no need to build their own version of Firestorm from the source code.
As part of my private build of Firestorm, the Open Source third-party viewer for Second Life from Linden Lab, I have added new library dependencies for something I am working on (adding metadata to snapshots).
This blog post details how I added them, making use of CMake and modifying various files.
I present it in the hope that it may prove useful to others.
I logged onto SL recently and noticed that sculpts and meshes weren’t rendering properly unless I zoomed in, and I remembered that there is a debug setting to fix that and it must have got reverted for me at some time.
The fix is as old as the hills, but I thought I would note it down here simply so I can easily find it again. If it helps someone else too then so much the better.
Go to Advanced -> Debug Settings (or use Ctrl+Alt+Shift+S)
(If the Advanced menu is not enabled then enable it with Ctrl+Alt+D)
You need to set both the RenderAvatarLODFactor and RenderVolumeLODFactor settings.
A value of at least 4 is recommended, whilst 6 is better.
It’s been quite a long time since I blogged about the state of the clothing market. It was back in January 2014 in fact.
Back then I predicted that clothing would get ever more difficult to make and that more and more clothes would end up being made by fewer and fewer designers, and that we’d get a stagnation of the clothing market. However, when I wrote that, Fitted Mesh was in its infancy and it was unclear where it would go. And where it went was Mesh bodies. Of course this is probably not news to you as Mesh bodies have been ‘mainstream’ for over a year, apparently. I say ‘apparently’ as I haven’t been very active on SL for the past year so I am playing catch-up.
As you are probably aware, there are now a number of competing Fitted Mesh bodies available from designers like SLink, Maitreya, TMP (The Mesh Project), Belleza, and the like. A Fitted Mesh body is essentially a bodysuit that completely replaces your body (which is now being referred to as ‘Classic body’) by using an Alpha Mask to make your Classic body invisible from the neck down. Unlike with Rigged Mesh, the Fitted Mesh responds to the sliders for modifying your body (no more “standard sizes”), which in theory should mean that you still have full control over your shape and look. However, it is of much higher quality and much more realistic than the Classic body shape. In short, it is what Linden Lab should have done themselves with the Classic body.
Mesh clothing compatible with these bodies is available, and older Rigged Mesh clothing will still fit, albeit with some tweaking and the use of additional alpha masks to mask off parts of the Mesh body. How this is achieved varies by body, and some are more clunky than others. I’ll leave it up to you to research further.
For tattoos, skins, and indeed any other texture (which of course includes System Clothing textures), the designer has to provide an “applier” that is compatible with the Mesh body. An applier is essentially a script that tells the Mesh body how to paint the texture onto it. You’re probably no stranger to appliers if you have used Phat Az, Lola’s Tango and other body modifications that pre-date Fitted Mesh.
Without an applier, the texture will be worn by the Classic body which of course is hidden when you are wearing a Mesh body.
There is an applier specific to each designer’s body, but there is also an ‘Omega’ applier system which is a universal (and free) system understood by many Mesh bodies. If your body is Omega compatible (many are, with the exception of a few such as TMP and SLink Physique) you can use Omega appliers on your body.
So, with all that background information out of the way, it is time to talk about the actual subject of this post. Which, ironically, will take far fewer words to achieve than the preamble.
I recently made friends with someone and she was showing me some of her outfits, and I noticed that some of her clothes were what only a few years ago would have been dismissed as rather out-dated pre-Mesh texture clothing. Only she had fairly recently bought them because they looked ok to her, but crucially had appliers for her Mesh body.
And this got me thinking about my old post where I said that texture-only clothing designers were being left behind. Suddenly this is no longer the case. All a texture-only designer needs to do now to bring their clothing to a whole new audience is to master the ability to provide appliers. From what I can see, this is fairly straightforward and is certainly way easier than making Rigged Mesh.
My personal feelings on texture-only clothing haven’t really changed – I still think it is immensely hard to make it look realistic and even harder to give the impression of 3D shapes with only a 2D texture – and this is never more the case than with things like buckles, clasps, and the like. These will always look better implemented in a 3D medium such as prims or sculpts (in the past) and Mesh (now), but as I have previously pointed out this is much, much harder to achieve. However, traditional 2D texture clothing applied to a Mesh body certainly looks better than when applied to a Classic body – there is less of that awful distortion and glitching that really ruin it, and it definitely gives it a new lease of life to the extent that you could feel happy to wear it.
So, in summary, I think that the clothing market may have opened up somewhat because right now there is a big demand for reasonably-priced texture-only clothing that can be applied to a Mesh body. And, furthermore, texture clothing simply looks better on a Mesh body than on a Classic body to the extent that it is acceptable to wear again.
Maybe there is a place for the small hobbyist designer making texture-only clothing after all. And that has to be a good thing, because the vitality of Second Life depends on user-generated content.
Edit: Just to clarify, the creator of texture clothing must produce an Applier for you. There is currently no way of simply applying existing texture clothing to your mesh body, so unless the creator of your old pre-mesh texture clothing makes an Applier available, you’re out of luck.
Update
The above was written before we had Bakes on Mesh (BoM). Now that we have BoM it is no longer necessary to have an Applier and you can apply old texture-based system clothing directly to your Mesh body. The circle is now complete, and if you have old system clothing that you want to wear again, then you can just do so. Same for tats as well. It also means that those sellers who didn’t even bother to learn how to make Appliers can now just resell their ancient system clothing unmodified.
Further reading
WARNING: Many of the these links contain digital nudity and are NSFW.
I finally had the muse on me to pop into Second Life to take some photos. Whilst I was there I bumped into my friend Abby, who I have known almost as long as I have been in SL. She is the owner of the Heroes club (which has been going for 6 years) and also the designer of Heroes Clobber. She’s sadly closing down Heroes and relocating Heroes Clobber, and has asked me to take some photos of the new place. So stay tuned for those!
The picture needed quite a bit of post-processing. For a start there was some nasty clipping of my arm against the dress. I noticed this when I took the picture, so to make correcting it easier I took two photos – one with the dress and one without, which allowed me to composite them post-production. What was less easy to solve was the clipping on my left shoulder (your right as you look at it) on the sleeve of the dress, so I had to clone another part of it and fill in. Another thing that needed attention was the colour of the right sleeve (your left as you look at it) which needed to be lightened and blended. There was also some clipping on the hair, which I also corrected. Finally, I got the glow settings wrong on the Depth of Field when I took the picture, and rather than going back and re-shooting, I corrected this post-production.
If you’re not familiar with MystiTool, it is a HUD that is a veritable Swiss Army knife of useful things. It dates back to the earlier days of Second Life, where many things we now take for granted were absent or severely basic. For example, you needed an object or HUD called a Flight Assist (or Flight Feather, or Flight Ring, or any number of other names) if you wanted to fly above 200 metres. Rather than take up valuable attach points, back in the days before we had multiple attach points, having that in the MystiTool rather than as a separate object was beneficial. Since then, the flight limit has been raised several times and then in 2012 was removed altogether, making that feature of the MystiTool redundant.
Similarly, as Viewers (both Third Party and Official) have added functionality previously offered by the MystiTool, so those too have become obsolete (or, at least, less useful). Examples include the Radar, scanning a sim for avatars, chat notifications (such as an avatar entering chat range), TP to camera, Favourites, and TP History. Some are only included in Third Party Viewers like Firestorm, but some have even made it into the Official Viewer.
The feature erosion is not too dissimilar to the history of Microsoft Windows; in the early days, various tools, utilities and applications filled in the gaps in functionality missing from Windows itself, and gradually Microsoft incorporated the ideas and made many redundant. A case in point was Icon Hear It which added sounds to events in Windows 3.11, and was rendered instantly obsolete by Windows 95 which had that built in. But I digress.
But that doesn’t mean that MystiTool is now obsolete, as there are plenty of features that are still useful. Furthermore, with v2.0 of MystiTool, many of these features are now implemented as plugins which means you can choose to uninstall them, which reduces your script count and memory usage by allowing you to prune them out. You can therefore trim the MystiTool right down to only those non-obsolete features that you actually use.
Personally, I regularly use the Elevator & Sky Platform Rezzer, the Pose Stand Rezzer (especially the more fully featured deluxe pose stand, although the basic one is also useful), Object Chat ID (useful for finding the owner of a chatty object), Facial Emoter (I use it for photography), Collision Notification, Avatar Information and Channel Listener (useful to find who is talking to scripted objects, but also for debugging your own).
As the feature set continues to shrink, the argument for having a MystiTool gets weaker. It is no longer the must-have tool that it once was, but for many ‘oldies’ like me (currently 6 years & 3 months, or 2300 days) it is something that has been part of our SL for so long that it is something to which we have become immensely attached (no pun intended) and will probably hold onto until completely redundant, if not beyond.
Further reading
I Still Use My Mystitool by Cheyenne Palisades Posted in January 2013. A similar article to this one, but slightly out of date now. More descriptive about some of the features than this article is.
[This article was written in 2014, but has received minor updates to make it relevant for 2024]
Whilst shopping lately, I’m increasingly seeing what seems to be the same dresses being sold at various different shops. This is not reselling, but a case of designers buying in meshes from third parties (what I refer to as “Merchant Mesh” or “Non-Original Mesh” or “Reseller Mesh”).
This is not a new phenomenon, of course. In the past designers often bought full permission sculpts for use in their products, but it was less noticeable as using a sculpt here and a sculpt there is more finely grained; it still creates an overall unique product. In other words, two outfits using the same sculpts might look radically different, because you don’t notice the common sculpts so much, or the designers may be using them in different ways, with different placements, sizing, and the like. They may even be using different permutations of several sculpts from different creators. The overall look is therefore completely different, and the end result unique to that brand. By contrast, a mesh for a dress is entirely monolithic which gives rise to the situation where several clothing brands appear to be selling the same dress.
Clothing has gone through quite an evolution over the life of Second Life. From the original “slider clothing” (a.k.a. “system clothing”) with or without user-created textures, through to texture + prim, texture + flexiprim, texture + sculpts, texture + unrigged mesh, and rigged mesh (with standard sizing).
[Update: and now fitmesh (for mesh bodies)]
At each step in this evolution, the bar for entry to the next level has been raised. Also, from sculpts onwards, they require external software for creation which has its own (often steep) learning curve.
Often, a designer may find they have insufficient skill (and/or time, motivation, commitment or, indeed, ability) to move up to the next level, and can sometimes buy in the 3D models (ie. sculpts or mesh) and texture them into full products. The reason is that in some cases others may have the skill to create the 3D models but not the inclination to make them into products and have the hassle of selling to Residents. In some ways this is roughly analogous to Retailers and Wholesalers in Real Life.
As each tier of the pyramid gets harder and harder to reach, so the number of people reaching it falls, and so the probability of those people selling their creations to designers lower down the pyramid rises (since there is an increasing demand). Or, to put it another way, there is a very small pool of people creating rigged meshes, and from that pool some are keeping them unique to their clothing brand, and others are selling them for other designers to use. And that is why we are seeing many brands selling the same clothes (or appearing to), since not only is their choice more limited but the very nature of rigged mesh means the clothing is more obviously the same (as I mentioned earlier on).
The net effect of the above is that we are seeing a stratification of the clothing market in Second Life, with the “top tier” of brands being created by very talented people who can create 3D models (ie. mesh clothing), rig it to become rigged mesh, skilfully texture it, and then sell it to ordinary people like you or I. The “second tier” are the designers who are unable to create their own rigged meshes and must buy them in, thus running the very real risk that some of their clothes will be extremely similar, if not identical, to those of other brands.
Further on down the pyramid, the hobbyists of old who would dabble with prims in-world and with simple textures created with the aid of clothing templates, are increasingly finding that their efforts look unsatisfactory compared to the top designers. They are either having to make their clothing very cheap to compensate, and find themselves unable to afford the rent on their shops, or else are giving up, disheartened. Neither scenario can be good for the long-term health of Second Life.
[Update: Obviously this is less true now that we have BoM – see the note at the end]
Nor is this situation looking likely to improve. As mentioned in my previous blog entry, Linden Lab have decided to go down the path of using collision bones for their Fitted Mesh project. Whilst this is a technically simpler and, some may say, more elegant solution to mesh clothing deformation, it makes the task of rigging mesh even harder for content creators, thus making that top tier of the pyramid even harder to reach.
I’m not sure where this state of affairs will take Second Life, but I do believe that warning alarms should be ringing somewhere. By making content harder and harder to create, so less and less is going to be created. Not only that, but people who may have found Engagement in Second Life through content creation might decide it is not worth it and instead drift away. However, having said that, I do acknowledge that we need to move forward and people are expecting ever more complex and realistic-looking technologies which, by their nature, are harder and more complex to create. But that doesn’t necessarily negate my point.
So, anyway, those are my thoughts on this. They’re only my opinion, so please feel free to comment below with yours.
Update
Obviously a lot has changed since I wrote this, and we now have Bakes on Mesh (BoM). I have a more recent article on the subject here, and in it I discuss how BoM has opened up the market again to allow bottom tier designers to work in just textures again.
Before I start this post, I’d just like to point out that this is old news. I’m not adding anything new here but the reason I am writing this is that many friends and acquaintances haven’t been aware of the current direction that mesh deformers are taking, so this article is a convenient place to direct people to. It seeks to be a fairly short and easily-digested article, which links to further reading.
Mesh has been around for a while now, and I think most people have decided where they are with it. At one end of the spectrum we have people who pretty much won’t wear any rigged mesh unless it just happens to fit them “as is” and at the other end of the spectrum we have people willing to have a different version of their shape for almost every outfit they own. And I’m not exaggerating here; two of my closest friends fall into those two extremes.
It’s clear that the Standard Sizes are far from perfect. They were a reasonable workaround to the problem of Rigged Mesh being uneditable, but they are not a solution. Many people (myself included) have been extremely reluctant to alter their natural shape, feeling that the whole point of Second Life is to be who we want to be and that clothes should fit to us and not us to the clothes.
One of the first people to propose a solution was Karl Stiefvater (Qarl Fizz) who proposed the Mesh Deformer project (also known as the Parametric Deformer), which was successfully Crowd Funded and which Karl put a lot of work into. I think it’s fair to say that a lot of people know about this project and of those, a majority are wondering why it hasn’t made it into the Official Viewer yet.
However, it was by no means the only solution and Redpoly Inventor proposed rigging garments to the “collision bones” of the avatar skeleton, which is what evolved into “Liquid Mesh”. The shortcomings of this in its current state is that really there aren’t enough “collision bones” to do a proper job and because it is not officially supported by Linden Lab, it was an unofficial solution and hence prone to breakage in the future.
However, on 20-Nov-2013, Linden Lab posted an entry on their blog entitled Making Mesh Garments Fit Better outlining how they intend to officially adopt the “Liquid Mesh” approach and develop it further, adding additional custom bones in order to overcome the shortcomings of the current approach.
Where does this leave Karl’s Mesh Deformer? Well, parked up and thrown away essentially although one could argue that perhaps it spurred Linden Lab into action and Karl has said that he thinks that what LL is proposing is the technically simpler solution (although is correspondingly more complex for content creators). You can read more on an article that Inara Pey wrote, which includes an analysis of it all and also quotes Karl’s response to the news. If you don’t follow her blog then I would really recommend it as it is always very well written and very in-depth.
It will be interesting to see how quickly Linden Lab progress this. It’s way overdue, and the sooner we get an official (and effective) solution to the issue of garment deformation the better.
UPDATED:
Initially I based my shape changes on Standard Size ‘Small’, but after a couple of weeks I have realised that ‘Medium’ (with some modifications) is closer to my desired shape, as ‘Small’ lost too many of my curves and made me look skinny. I’ve therefore updated this article accordingly.
—
After a long absence from Second Life, I’m kind of rediscovering it again.
One of the reasons for this is that I have finally bitten the bullet, so to speak, and created a copy of my shape and made it compatible with Standard Sizing. Although this seems like a massive climb-down from my previous stance on not wanting to change my shape, the thing that influenced my decision (quite apart from the desire to wear more modern clothing) is that there are surprisingly few parameters you need to change in order to have something that is broadly compatible with one of the Standard Sizes.
I chose to bring mine closer to the ‘Medium’ size, which meant adjusting the following parameters:
Body Fat: 11 (15)
Torso Muscle: 38 (38)
Breast Size: 58 (54)
Love Handles: 31 (11) [Note: I chose not change this]
Belly Size: 6 (2)
Leg Muscle: 56 (42) [Note: Again, I chose not to change this]
Butt Size: 44 (45)
Saddle Bags: 36 (41)
(Figures shown in brackets are what my normal size was)
The two things that looked awfully wrong with that were the Love Handles and Leg Muscle values, which I chose to leave unchanged. The former gives me the more curvy look I prefer, and I predict should not affect many clothes as the important thing is not to clip, although obviously some clothes will hide my narrower waist and make me look slightly shapeless. Some crop tops may require a “half-way house” version with more waist in order to look right.
With the Leg Muscles value, I figured that this would predominantly affect only boots and I could go for S or XS ones for that.
I have to say that I am really encouraged by the fact that I still look like “me” after the changes, and I’d encourage anyone else holding off from Rigged Mesh clothing to try similar (assuming your shape is modifiable). It has really opened up the doors to a whole new round of shopping in SL for me. And you know how much I love shopping!
I managed to make a comparison pic using an animated GIF. You can see the differences between my natural shape, the adjustment for Medium, and the Small from the original. Whilst I still prefer my natural shape, the Medium one is an acceptable compromise.
At face value, this is a nice little pic of my sky island and of me winding down on a hammock at the end of a nice day.
Sadly it’s more metaphorical than that, because the very good friend who has let me keep my lovely sky island rezzed on her sim is giving it up when the tier is due in a few days and I shall, for the first time in years, be homeless in SL.
Given how little I log on these days, or log on just to go to an event or to see a friend, I will give vagrancy a go for a while and see how it works out for me. I’m going to miss my little place though, for sure.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies that are essential for the working of basic functionalities of the website and its security.
We have not explicitly installed any data-tracking plugins and have not, for example, added Google Analytics code to this website.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-non-necessary
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Non-necessary" category .
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
DYNSRV
session
This cookie is used for load balancing purposes to decide which server to send the visitor.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
CONSENT
2 years
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
VISITOR_INFO1_LIVE
5 months 27 days
A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSC
session
YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-id
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.