Tuesday 31 October 2017

Coming to Firestorm soon... A couple of new features for builders and non-builders alike.

There is a new Firestorm slowly working its way through the pre-release testing process, there's lots of goodness in there that I'll not cover here but I'd like to highlight a couple of features that I have added for builders but which I feel will help other users as well.

Physics view while editing objects.

Regular Readers of my blog will know that I love the physics view in "Render Metadata" for its valuable debug capability. You may recall that I "fixed" a subtle bug in that which prevented us correctly debugging certain "thin wall" problems and that change will be part of the new release. The debug physics view has a couple of major drawbacks, the first is that switching to it is clumsy and slow, requiring that you have the developer menu enabled, the second is that everything gets coloured whether you like it or not, making it difficult to see what is going on.

To address this I have added the ability to show a physics outline for the object that you are editing.
The functionality is accessed from the features tab in the edit dialogue and is represented by an "eye" next to the physics selection combo box.

Clicking on the eye will toggle it on and off, showing a representation of the physics shape as shown in the example here.

Once this mode has been toggled on, it will remain enabled when editing subsequent object unless toggled off;  it will, however, revert to being off after the next login. This is deliberately done to prevent it confusing users who enable it in error and forget how to disable it.

Mesh information in the object panel.

When you edit an object you will be used to seeing information in the object panel. On the left-hand side, the properties common to all objects. The position, scale and rotation.

On the right-hand side details specific to the type, the hollow, cut and taper etc for prims, special features like dimple and hole size on a sphere or torus respectively. For sculpt maps you'd often see the rainbow hues of the sculpt map texture, but for Mesh, nothing. In fact, worse than nothing because you'd get some greyed out leftover fields.

In the new release, however, I have started to address this and have added a Mesh specific information panel that shows you a couple of extra details about the object and also allows you to artificially see what it will look like at a distance by selecting the Level Of Detail.

What does it all mean?

The new physics mode operates in a very similar manner to that given in this more technical blog from a few days ago. In essence, the shape tells you exactly where your avatar and other objects will collide with the object. The colour tells you when the physics "cost" is very high. 

The Mesh info panel tells you how detailed each of the levels of detail in the model are by listing the number of triangles used to make ir, it then allows you to preview the LOD models. 

OK, but really, what does it all mean? Why do I care, I don't even build stuff?

For non-builders there are a few notable benefits. 

Fix those pesky "stuck LODs"

Firestorm "LODv iew" FTW from Beq Janus on Vimeo.

Sometimes, perhaps you've been cam shopping, taking photographs or maybe even perving on your neighbours, then when you "snap back" to your room you find that your clothes are not rezzing properly. There is now a "simple" fix.

1) Find your inventory window and select the worn tab
2) right click the item, and select edit. 
3) Click the object tab, and "edit linked"
4) click the broken item
5) It magically repairs itself

But that's not simple enough I hear you say... We agree and so by the time the new Firestorm is ready for release we hope to have simplified this trick into a one-click fix in the menus courtesy of our lead developer Ansariel.

Why can't I rez on my mesh table/floor/bed.

You know the feeling, you are late to a party, you grab that awesome Gacha "rare" from the reseller on MP. Of course it comes boxed. So you quickly drag it on to the floor....your brain catches up, but it is too slow to stop and your finger releases.... "Can't rez here" says the little pop up. What's worse, your dress is gone and won;t come back until you relog, it may take longer. 

We've all done it. Rezzing items can be a little hit and miss at times but did you ever stop and wonder why? The answer is often simply "laziness". Your special outfit just got eaten by the Linden void because the designer of your house didn't give it a proper floor plane. But it is not just floors, chairs and all manner of objects that you might conceivably drop an item on weren't made with a proper physics shape and even though it tries it's best neither the viewer nor the sim can work out where to place your item and ultimately it gives up. Well now you can find out where the safe spots are.

The physics shape view let's you see how the simulator sees the items when it is trying to work out where to place things, where you walk and how things collide. 

This short video shows the problem with a simple table (deliberately badly made by me!)
Physics View Mini Tip from Beq Janus on Vimeo.

Why do I sink in this floor? Why do I keep falling off the stairs

Of course, physics is used to decide where you can and cannot walk, and even for the non-builder, sometimes it can help to understand why your feet pass through the stairs.

Friday 27 October 2017

Blue sky thinking - Physics view explained


I found I could say things with color and shapes that I couldn't say any other way — things I had no words for. - Georgia O'Keefe
In previous blogs and in various group conversations, I've often discussed the physics overlay renderer of the Second Life Viewers, typically found in the Developer menu under the, perhaps confusingly named, "Render Metadata" menu.
Physics view in all its glory
The Render Metadata menu is a wonderful set of tools that help debug various issues. You may recall the "LOD display" which tells you which Level Of Detail is being shown, for example. They are mostly unnecessary to the average SL user but occasionally, as builders, and educators/mentors, we find that a couple of them can help us a lot at certain times; and primary amongst these, to my mind, is the physics view.

The physics view is a great example of "metadata rendering"; the use of a visual overlay (render) to convey additional information (metadata). So what does it do? Well essentially, it overlays new objects into your view to communicate non-visual aspects of the scene. in this case the physics shapes, but..what does it all mean?

Where do we find it?

Before we get too far ahead, let's take a moment to find the menu. I will, of course, use Firestorm but the feature should exist in all graphical viewers that have any relation to the Linden Lab viewer.

You will need to have access to the developer menu
The simplest way to do this is via that excellent preferences search.
Ctrl-p will bring up the preferences dialogue. Then in the search box type "developer".
Tick the highlighted option and hit OK, you should now have the developer menu.

Now, simply click on the "Developer" menu and locate the "Render Metadata" item, and pick "Physics shapes" from the resultant list.

To turn it off again, just reselect the item from the list.

Decoding the view

When you click on the option, you are immediately plunged into a strange parallel dimension; what you see will naturally depend on where you are, and what is around you but it will almost certainly take on a very blue look. It is often worth moving to an area clear of clutter when testing this feature.

New rough approximations of your objects will now have been rendered; your meshes and prims will be blue, or various shades of orange and red, some will have pencil sketched triangles across their surfaces and peculiar coloured boxes will appear. Every part of this is potentially useful information if only you know how to read it. There are two basic representations, the colours and the shapes, we'll look at each in turn.


First of all, I will correct the received wisdom of forums and blogs. For a long time most people, myself included, had considered that the colourisation represents the physics weight of the object; however, that is not actually the case. In fact, the view displays colour based on the overall object cost, i.e. the inworld LI. The below image demonstrates this clearly, and no this is not new, or a change in behaviour, it was created like this in 2010 and the assumptions have been made ever since.

With a few exceptions then, the hue of the faces shown in physics view represents the object cost of that object as a colour spectrum. Red indicating an excessively heavy load on the viewer/physics engine, through to amber, and blue.

The mechanism by which these are coloured is not entirely straightforward. Firstly the cost is normalised along a logarithmic scale. By default the threshold used is 50, anything over that value is considered high. A plot of this normalisation looks like this.

Anything with a normalised weight of <0,5 (which as we can see from the graph is an actual weight of a little under 35) will be rendered as a mix between the Low colour (blue-green) and the Medium colour (orange). For anything heavier than those the colour is a mix between the Medium and the High (Red) thresholds, giving a range between orange and angry red.

Note: For those interested in the details, the mix is a linear interpolation of the RGBA values of the two thresholds. The colours and thresholds can be changed, and I will briefly cover this at the end of this blog (if I remember), but it should be considered as an advanced use only. So these are really telling us where our heavy physics costs are, especially useful in a multipart build where an unexpected legacy prim has become linked with Mesh and resulted in an unforeseen and undesired spike in the LI.


The shapes are where this view excels. When you are trying to understand why your Mentee's mesh wall is not allowing you to pass through the doorway, a quick flick into "Physics view" can often tell you the answer. Even those of us who use them frequently often fail to realise is that there is more information in the display of these than first meets the eye.

The representation is similar for both prim and mesh; similar but not quite the same. Unlike a mesh, a prim has no user-defined physics shape, yet the effective physics shape can be quite complex. Consider a twisted, cut spiral cylinder, used as a staircase. The users expect the physics to work accurately. As a result, there are a couple of optimisations and a default case which can if misused, be a problem.

The way that a shape is shown is linked closely to the type of physics that it represents.

Four prims a cube, sphere, cylinder and torus with various parameters affecting their physics shape

Case #1 The HAVOK Physics shape.

For the general case of a unmodified prim, it will be assigned a highly efficient physics hull that closely matches its shape. There are three possible physics shapes, Box, sphere and cylinder. These shapes are a special case of "hulls" a physics shape used by the Havok engine. These provide for extremely efficient collision detection by simplifying the mathematics required to detect collisions.

An example that seems contrary to many who are used to thinking of mesh shapes, is that the cheapest, most efficient physics shape is a sphere. This is because collision detection of a perfect sphere needs only two values, the centre and the radius, any plane that passes closer than the radius, must be intersecting with the sphere.

Note that complex prims such as the Torus shown top right, do not have an efficient representation and simply fall through to the second category.

For Mesh there is an extension of the simple form, it is known as the base hull and is the shape that you interact with when "convex hull " is enabled. A base convex hull is defined for all meshes and for the most part, appears as if a "cling film" wrapping has been stretched over the object.

These shapes are typically rendered with a semi-transparent tone and no visible edges.

Case #2 almost all of the rest

If a prim cannot be represented by a Havok shape then it will be converted to a "simple" triangular mesh representation. The rules that dictate when a physics primitive is swapped for a mesh are a little too detailed for a blog like this. But with experimentation in Physics view, you can see that typically a cube that is hollowed will "switch" to mesh physics at about 20%. I tend to think about it in terms of "is the hole big enough for something to fall through" (though that is not the real test :-) ).

This is also the typical (not quite a default) case for Mesh physics. A Mesh object must have a physics decomposition provided. There are 3 types, the base hull discussed above which is the actual default. If nothing else is provided then the base convex hull will be used. The second type is a triangular mesh derived from one of the visible mesh models or uploaded as a dedicated mesh (I highly recommend the latter). The third is an analysed mesh, which we will cover later.

A triangular mesh physics shape can be very efficient it allows you to fully represent the shape, with any holes and other shapes. It is important however to be very economical with the mesh used, keep the resolution of the physics as coarse as possible, to improve performance and lower cost.

It is worth bearing in mind that it is a side-effect of the triangular mesh physics and the physics cost calculation that gives rise to the super-heavyweight prims in certain circumstances.

These shapes are typically rendered with a darker outline showing the mesh triangle edges. 

Case #3 rare and getting rarer

From time to time you may see a magenta wire-frame cube 50% the size of the prim. This is effectively an error report. It means that for one of a number of reasons the viewer cannot display the physics shape. With Prims there is typically only one reason for this, the prim has been forced to use Convex Hull and the user is running a viewer that does not have the capability to decode that hull into a visible object. At the time of writing it is quite common in 64-bit third-party viewers such as Firestorm to show all convex hulls (both for prim and mesh) as magenta boxes. 

Why does this affect 64-bit viewers?

The reason behind the limitation is straightforward once you know about it, the Havok physics engine used by second life is a commercial product, Linden Lab kindly provide a special library that supports a limited subset of Havok capabilities but until very recently, the Lab did not have a 64 bit version of their viewer and did not supply a 64-bit compatible version of the Havok Library. Almost all physics functions in Second Life are handled on the server, however, there are a handful of services required by the viewer and the library provides these. The one that most builders notice is the lack of options in the "analyse" menu on Mesh uploads, but another is the ability to convert a "convex hull" into a mesh shape that can then be rendered in physics view. Thus, to keep this short(ish) when you ask a 64-bit viewer to show a convex hull it says "I can't" by showing you a magenta wire-frame.

The next version of Firestorm will be fully Havok enabled and the vast majority of instances when the Magenta boxes appear will be banished to history.

Case #4 The very small object

This case is a safety net. As we observed in case #3, the equation for calculating the physics cost has an often unexpected side-effect for the uninitiated. The logic behind the calculation is clear enough, the Havok physics engine needs to do less work when it hs handling fewer shapes as is shown in this simple animation from a previous blog.
Smaller triangles more work. Which triangle did the sphere hit?

The earlier blog post gives more details on this and describes the conditions under which the Lab implement a cut-off to prevent the asymptotic behaviour. The mechanics we can leave aside, the result though, for our purposes is a simple box physics that wraps around the small objects, removing holes and details completely. For completeness here, I will repeat the conditions (but keep in mind that at the time of writing physics view will lie.)
IF object is a prim AND has more than 2 dimensions less than 0.2mTHEN force the shape to a convex box.ELSIF object is a mesh AND has one dimension less than 0.5mTHEN force the shape to a convex box   
These are shown without edges and are in some ways indistinguishable from (deliberate) hulls 

Case #5 Hulls analysis and fixed cost physics (not shown in image)

The fifth type of physics is an analysed hull based physics. To produce this the viewer takes a user-specified mesh physics shape and applies an algorithm to it to construct a series of 3d "capsules" called hulls. These are Havok primitives, optimised for the engine to process and can in some cases be more efficient than the equivalent triangular mesh. For reasons I have never fully investigated, the cost of an analysed mesh is frequently higher than the equivalent triangle based mesh, a problem exacerbated by the lack of Havok in 64-bit viewers. For this reason, alone people often avoid it and yet it has some very specific benefits. An analysed mesh has a fixed cost, it does not suffer from the increased physics cost when scaled down and it does not have the dimension based cap imposed so is immune to the "thin wall" problem.

These are deliberate hulls and are shown the same as #1 above (and #4)
There's some good news to come on physics views but for now, I've written more than enough.

See you soon




Friday 20 October 2017

My life in lamps...

As I noted in my previous blog I finally got around to creating a set of items for sale. The Antique Radiators were the "sale item" for the Decennial event but I also needed a hunt item. The theme of the hunt is Timeless, the event and the hunt celebrate 10 years of Fallen Gods in Second Life, so I wanted something that also meant something in the theme of time and growth. The item I chose will be familiar to those who have known me for years or who have read my articles in Prim Perfect.

Back in 2007, I made myself a lamp, based on a rather lovely Arts and Crafts period design from the Roycroft movement. A simple but elegant design that could work as a low prim lamp for my undersea refuge in the Vernian Sea in New Babbage.

The very first version is shown here on the left. A gloriously extravagant 8 prims, 2 of which were a bizarrely flickering animated candle flame where the bulb should be. The rim texture cut from a photo of the lamp in RL and recoloured to look as though it was lit up.

As SL and I both grew, I rebuilt it in around 2008 using "the latest technology", reducing the 8 prim lamp to a glorious 3 prim sculpty based model (right).

The lamp was more or less identical in form to the prim version and created using an Inworld sculpting tool called SculptCrafter which in its way (despite being made by a different person) was a forerunner to tools like Mesh Studio, converting prims to sculpts, which it spat out in chat as a uuencoded text stream which you pasted into your preferred decoder to get the expected sculpt texture. A really neat solution to not needing an external service in fact.

Then in 2012, I was asked to write articles for Prim perfect, demonstrating that Mesh and prim building were not necessarily at odds, the articles built upon a blog post I wrote on inworld mesh creation for which I built the version on the left. The model was created using the excellent and highly under-rated Mesh Studio. The project was a little artificial I added heavy metal fluting to the sides of the stand giving it a more Art Deco feel than theo original RL piece having challenged myself (and the tools) to improve upon the 3LI sculpty in both looks and land impact. The lamp was also used to explain generated LOD models and how handmade LOD models are essential to really efficient and well-structured meshes.

The result was a credible (I think) demonstration of the tool, taking a detailed 110 prim model with all my metal fluting and additional details and producing an efficient 1LI Mesh with Strong LOD characteristics.

It's been five years since that project; we've seen the introduction of many new features, materials being perhaps top amongst them. And I have started to confront my personal daemons, tackling my insecurities around artistic ability to improve my texturing skills, face down the fear of Blender and it's mythically horrendous UI (hint: it really is not anything like as awful as people will lead you to believe, it just takes a little practice). And so it seemed fitting, that to celebrate 10 years of my friend Alia's wonderful creations, with a nod to my own 10 year anniversary too, that I should once again update the lamp.

The 2017 Roycroft style lamp is available as a hunt prize during the timeless hunt and may become available later from the Verdigris store, in a variant form.

At 1LI, we now have a lamp that retains much of the hammered effect detail of the Roycroft originals. The detailing employs Normal maps for those with Advanced Lighting, but also bakes and additional Ambient occlusion to the texture to give some of the effects to those without that feature.
Materials are used for the bakelite bulb holder as well as the metallic lamp itself, and the mica panels use the emissive mask feature of the diffuse texture to give a more realistic glow when the lamp is turned on. It was important of course that in an item of this scale it retained its shape and volume as the LODs decayed, which became a little war of attrition when the lamp nudging over the 1LI threshold.

The Decennial event and the excellent Timeless hunt are still open and I would encourage you to pay a visit.

Thursday 5 October 2017

Verdigris by Beq - OMG I have a store!!

It has only taken me 10 years to get around to doing this; but I finally have a store, with a name and actual "stuff" in it. Well not much stuff, yet, but I'm working on it. It will ultimately live in my old factory build in Babbage Canals

So what brought about this monumental event? To be honest no one thing, I've been gathering steam towards this for a while, but all those normal excuses like Fantasy Faire, joining the Firestorm team, RL School and family etc have been a convenient cover for my laziness.

Then at the end of August, I got a notecard from Alia Baroque. Alia, as Faire lovers will know, is a crazy, wonderful designer who is best known for Fallen Gods skins, his awesome Fantasy Faire regions and err... Flamingoes. It turns out that Fallen Gods have been making skins for ten years now and Alia decided to celebrate as only Alia can, by promoting his friends through the Decennial shopping event and the Timeless hunt organised by Alia and his wonderful partner Sonya.

And so it was, with a little coaxing from Sonya and Alia I committed to taking a stand at the event and to participating in the hunt. This commitment threw me into my usual dilemma of confidence. "What on earth would I make that anyone else would want?"

In recent times a lot of my building, all of my building really, has been focussed around region scale designs with a limited mass market appeal. So after much soul searching and gnashing of teeth I fell back upon my early roots, making smaller items, for my own use, looking to produce artefacts from the Art Nouveau and more generally Victorian and Edwardian eras. The result was two items, the first was a prize for the timeless hunt, an item both brand new and yet completely familiar to those who know me. I'll talk about that in a separate blog as the hunt is still in its early days. The second item is the first official Verdigris product, a range of radiators based historic designs and presented in a number of material finishes.

Initially available only at the Decennial event itself these Radiators will later appear in my inworld store, and on Market Place, hopefully in time for winter.

Each radiator is mod/copy and thus can be scaled to your heart's content, It is 1LI at its standard size and remains below 5LI even when scaled to larger proportions.

You can find my stand and those of the many awesome creators that are celebrating Alia's ten year anniversary at Decennial

Bye for now, love