Compiling your own Viewer

Back in September 2010 I wrote about the pain of compiling your own Viewer and of the efforts of my friends Mariana and Forestaurora to try to write tutorials on doing it.

Fortunately, things have moved on enormously since then and now it is fairly easy to do a private build. A majority of the work is in setting up your build environment, and there are clear instructions on how to do this (I will provide links at the end). After encountering and solving a few “gotchas”, I have successfully built Firestorm v4.6.x under Windows 7.

I thought it was worth noting down the “gotchas” I encountered, which is what this article is about.  If it helps just one other person in short-cutting the issues I have had, then this article will have been worth writing.

These gotchas could just as easily apply to the Official Viewer, or any of the other Third Party Viewers; they are unlikely to be Firestorm-specific.

So without further ado, here they are.

Python version

The first “gotcha” was that the build instructions said to install Python. The actual wording was “Version 2.7.1 works with the build scripts”, which is slightly misleading as I read that to mean that that v2.7.1 had been explicitly tested but anything greater than that would also be fine. This is not the case.

I installed v3.3.4 which installs by default to c:\Python33 on Windows. When I got to the point of building FModEx, I got the following build error:

D:\projects\firestorm\3p-fmodex>autobuild build --all
Traceback (most recent call last):
File "D:\bin\autobuild\bin\autobuild", line 38, in <module>
from autobuild import autobuild_main
File "D:\bin\autobuild\autobuild\autobuild_main.py", line 36
print parser.format_help()
      ^
SyntaxError: invalid syntax

A friend suggested that I tried Python 2.7 as the instructions had said v2.7.1 had been tested, so I installed v2.7.6 (the current latest on the 2.7 series) and the problem went away. I have to say that I am surprised by the break of backward compatibility, so am calling this a “gotcha”. So, in summary: you must use v2.7 for it to work.

Cygwin

This is a minor one.

I’m running the 64-bit version of Windows 7, and when I installed Cygwin I specified the install location as d:\cygwin and added d:\cygwin\bin to my path. I was therefore a little surprised to get various errors about being unable to find 'bash' and various other Cygwin components. I double checked the installed components, scratched my head a little, and then suddenly realised that Cygwin had actually decided to overrule me and install to d:\cygwin64 instead. Therefore my path wasn’t pointing to where Cygwin was actually installed (as it was pointing to where I had told it to install to, rather than where it had decided to install to). Once that was fixed the problem went away.

7Zip

Another build failure I encountered was autobuild not being able to find 7Zip. This isn’t mentioned in any of the build instructions. I have 7Zip installed on my PC but it is not in the path – adding it to the path cured this.

Note: It’s possible that I encountered this issue because I have 7Zip installed.

FModEx and KDU

Most of the libraries that are required by a Viewer are pulled in automatically by autobuild. However, FModEx and KDU both have to be built locally.

FModEx is the library that the Viewers use to play sounds. If you don’t have this library linked in, your Viewer will behave as if you have muted all sounds. The build instructions detail how to build this library, but do not tell you how to link it in. I will shortly mention how.

KDU (Kakadu) is a library that is to do with rendering JPEG2000 images. Unlike FModEx, the build instructions do not mention how to build this, but there is a mention that if you want to use it you must license it yourself and build it yourself. Currently a personal non-commerical license is US$250 which rules it out for me. Fortunately if you do not want to use KDU then the Viewer can use the OpenJPEG library instead which, although not as fast as KDU, is free.

The trouble is that the predefined build configurations have a bit of an “all or nothing” approach. If you build with ReleaseFS then it tries to link both FModEx and KDU, and fails because KDU is missing. If you build with ReleaseFS_open then it uses neither and you are left with a muted Viewer.

Fortunately there is a way round this, which is what this “gotcha” is all about (everything up to now has been background). You need to add the switch --fmodex to the end of the configuration command. Whilst you’re there you can also use --avx to turn on AVX optimisations. If you want to use LeapMotion then add --leapmotion (I don’t have one so didn’t bother).

Thus my config and build commands become

set AUTOBUILD_CONFIG_FILE=my_autobuild.xml
autobuild configure -c ReleaseFS_open -- -DLL_TESTS:BOOL=FALSE -DFMOD:BOOL=TRUE --fmodex --avx
autobuild build -c ReleaseFS_open --no-configure

This builds an OpenSim-compatible Firestorm that uses OpenJPEG but also links in FModEx, giving me a Firestorm that connects fine to Second Life and has sound. Exactly what I want. The lack of KDU doesn’t make it noticeably slower for me, but I do have an extremely powerful PC so your mileage may vary.

Settings and cache

One slightly annoying aspect of switching between the installed Firestorm and the private build one, is that it seems to clear my cache. That means that every time I switch between them, I rezz as a cloud and have to wait ages for my inventory to load. I haven’t found a way round this yet, although I’m sure one exists. In the meantime it’s something to be aware of.

Summary

Having resolved all of the above I can now build Firestorm under Windows with no problems. Hopefully this article can be of some interest to others.


Links and Further Reading

Get source and compile – Official Second Life Viewer build instructions
Firestorm Windows Builds – build instructions tailored for Windows builds
Compiling Firestorm Viewer – a top-level page for all platforms

I still use MystiTool!

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.

Official MystiTool blog by Mystical Cookie
The official MystiTool blog

MystiTool on the SL Marketplace
A link to MystiTool on the Marketplace, which also summarises the full feature list.


 

Are you a MystiTool user? If so, please do comment below with what features you regularly use!

Stratification in the clothing market

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.

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.

Ladder of Complexity

Ladder of Complexity

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 finally to rigged mesh. 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 level of the ladder 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 ladder 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 ladder, 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.

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 rung of the ladder 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.

Mesh Deformer and Fitted Mesh

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.


Further reading

(Links are sorted newest to oldest)

External links

SL projects update week 50 (2): Fitted mesh, deformer, viewer code contributions
Inara Pey (12-Dec-2013)

Fitted mesh: “LL’s assessment here is mostly good” – Qarl
Inara Pey (24-Nov-2013)

Lab looks to make mesh garments fit better with the Fitted Mesh project viewer
Inara Pey (20-Nov-2013)

Making Mesh Garments Fit Better
The announcement by Linden Lab (20-Nov-2013)

Liquid Mesh: looking from all sides
An analysis of Liquid Mesh by Inara Pey (26-Aug-2013)

Further links are available at the end of each of Inara’s posts.

Other articles by me on mesh

Mesh convert
How few changes you need to make to your shape to be compatible with
a Standard Size (15-Nov-2013)

It’s starting to Mesh
A short update on how Mesh was working (or not) for me (07-Apr-2013)

Mesh deformer: interview with Qarl Fizz
A reblog of one of Inara’s posts, with further comment by me. (22-Jun-2012)

Oh what a Mesh!
My experiences of Mesh after it had been around for a good few months (16-Jun-2012)

Unencumbered by the trappings of real life
Immersionism vs Augmentism, and how Mesh affects it (22-Apr-2012)

Mesh
My first, somewhat naive post on the subject (27-Sep-2011)

Mesh convert

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.

Comparison of shapes

Comparison of shapes (should be animated)

Winding down

Winding down by Becca Ashbourne
Winding down, a photo by Becca Ashbourne on Flickr.

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.

Cutting remarks

Cutting remarks by Becca Ashbourne

Me showing off my unique Katana, courtesy of Swordmaster Talus of Wasenshi featuring a black and pink tsuka (handle) unique to me and a silver bird design on the tsuba (hand guard).

Because I’m quite petite, the sword is actually closer in length to a Wakizashi than a Katana, but since I’m carrying it as my main sword then it is a Katana. If that makes sense.

The pic itself is pretty much unedited – I just corrected some clipping on the hem of the skirt and that was about it.

Here’s a close-up of the tsuka and tsuba

Cutting remarks by Becca Ashbourne

Against his better judgement, Talus agreed to do a back-mounted twin katana set for me, even though he said I would probably slice my ears off the first time I drew them. After he had done them and I showed them off, he admitted that they did look pretty cool. In a Hollywood kind of way. ha ha.

It’s starting to Mesh

All Dressed Up by Becca Ashbourne
All Dressed Up, a photo by Becca Ashbourne on Flickr.

Having previously said that I am not a great fan of Rigged Mesh, I’m slowly starting to discover things that I like, and that fit me (or fit near enough that a minor tweak is all that is needed). In this case it’s this lovely dress by Baiastice and hair by elikatira (I still want to say ETD, which dates me I guess!).

The dress is lovely, but not without limitations. For a start you can’t wear shoes with it, and I love shoes! The other is that occasionally when dancing, you can see that it’s invisible inside and that I have invisible legs. I guess that’s an intrinsic issue with Rigged Mesh.

 

 

Lack of engagement

Inara Pey recently blogged on the state of Second Life, and her comments on ‘Engagement’ and general malaise struck a real chord with me.

In the 5½ years I have been in SL, I’ve experienced the usual ebb and flow of interest that I think most long-timers do, but I’ve found myself in a particularly long ebb lately, to the extent that I felt I was mainly logging on in order to be with my SL hubby. He had been feeling much the same, and sadly a few weeks ago announced to me that a number of factors, including increased workload, RL, and this same lack of engagement, meant he did not know when he would next be logging into SL again. We’d been together well over a year, which is a long time in Second Life terms. We still email each other every day (he never fails to leave an email for me when he goes to bed so that it is waiting for me when I wake up), but I have no idea when I will see him again in SL.

Since then I have gone from logging in every day to rarely logging in, and when I do log in it’s been for a specific reason such as a music event (usually the wonderful Gina Gracemount or the amazing Tukso Okey) or to spend time with my friend Bunny. But most of the time, I find that other things are holding my interest more. My own RL has got a little busier and is filling my evenings more, such that I don’t have as much time available to spend on SL. But the fact is that if I was bursting to go on SL, like I once was, then I know I would find the time. So this really corroborates what Inara is saying.

Perhaps I should be trying to find new things in SL to experience, maybe increase my circle of friends, perhaps try to re-ignite my love of SL photography. But I just find myself without any real motivation to do so. My SL photography is particularly depressing, because I can take ages (hours, even) over a SL picture and then find myself lucky to get 200 views in a month, yet with my RL photography I can post a picture of me in a nice dress and get 200 views in a day. I’m not saying that in a self-aggrandising way, but to illustrate how soul-destroying that is for the SL photography. I have a very similar experience with blogging.

So where does this leave me, where does it leave my SL, my SL photography and also this blog? I don’t know. Certainly this is the first time since August 2012 where I’ve felt I have had anything I wanted to say and I don’t know when I next will either.