Thursday, 24 September 2015

Paramour and Paramour Shopping Offline Temporarily

This is just a FYI for anyone attempting to TP to either my Paramour or Paramour Shopping region. Both will likely be offline for the next 24-48 hours.

My ISP is experiencing some sort of network or line issue and have dispatched technicians to fix it, but until they resolve the problem my connection will be intermittent at best and thus those regions -- which are self-hosted -- can't be reliably kept online. Rather than having people visit and then crash out while there, or have things they pick up failing to transfer correctly, I've decided to take them down until my ISP notifies me that they've fixed things at their end.

I'm very sorry for any inconvenience that anyone has experienced in the last week or so while this issue has been getting progressively worse, and apologize to anyone who has attempted to get there and failed. I'll post another notice once things are back up again. Hopefully that will be sometime Friday.

UPDATE: Sept 25

 It appears that the issue has now been resolved (my ISP technician mumbled some techno-babble about signal-to-noise ratio somewhere in their system) so I've brought both regions back online. Hopefully things will go back to working perfectly (albeit slowly) once more.

UPDATE: Sept 25 later in the day

Nope, it's acting up again with anywhere from 15%-30% dropped packets so I'm taking them back offline again.

UPDATE: Sept 27

Everything is back online again. Hopefully this time they've found and fixed the issue.

Update: Sept 29

With the region renovations I have now arranged for it to be moved to the main Refugegrid server which should completely eliminate any issues of it being available in the event that I have further ISP issues.

Monday, 21 September 2015

RELEASE: Seven New Statues in the Venus Series

This morning I added seven more of my Venus series statues to the Paramour Shopping center region, bringing the full series to 28 pieces (and still growing). As usual they're full perm, allowing you to scale and texture them however you like.

The only downside to the ever expending statue collection is that I'm already running out of space in the main building -- a structure that looked enormous when I first put it in the region and made me wonder how I'd ever make enough things to fill it. Less than two months later, it's cramped and crowded. It's been a productive period.

I spent a little while trying to shoehorn the new additions into the space and eventually gave up because things looked too jam-packed, eventually deciding to place them outside, surrounding the fountain/pool area, as a temporary solution.

To solve the space issue I'll be adding at least one new structure -- if not several -- which will probably require moving the existing building. I'll definitely be moving or re-positioning many of the existing items so if you visit during the renovations please pardon the appearance if things are mid-move. It's also possible that I may need to briefly restrict region access to avoid having an in-bound TP disrupt something; although I'll try to minimize that and do it only at off-peak times.

It's also very likely that my Roman Bath building's public showcase period will be coming to an end earlier than I'd expected it to, to make room for the changes, so if you haven't seen it and want to, don't put it off for more than another day or two.

Once things have settled down again there will likely be lots of empty least until I make new things to fill it with, so I suppose for a little while it will look sparse again in spite of the very large amount of content that's already there. Existing items will almost certainly be shuffled around during the process so you might need to look around a little to relocate a piece if you're returning for one.

My ultimate goal is to make the region a cross between art gallery and shopping center. I should have some finished PMAC-based products to add to it soon, some of which will be for sale and other will be for demo purposes. I may also begin to add some of my other existing artwork that is not available for sale. For any pieces that aren't for public consumption I'll try to remember to put a "not for sale" notice in the item's description so visitors will know it's not an oversight. If you see something that isn't for sale and doesn't have that in its description, please don't hesitate to ask. Items that aren't for sale are typically because they use a copyrighted commercial texture or include an animation that I don't have permission to redistribute.

My apologies in advance for the region's appearance during construction or for any access disruption caused by the upheaval.

To visit: HGTP to then take the local portal to Paramour Shopping.


Thursday, 17 September 2015

RELEASE: "Ghosts of Llangollen" series - part 2

I suppose if there's a silver lining to the intermittent ISP connection issues that kept me offline for a large chunk of yesterday it's that the last of in-world distractions (usually of my own making) made it possible to accomplish quite a lot of Blender work. The result: this morning I've added eight more new pieces to the "Ghosts of Llangollen" statues series at Paramour Shopping, bringing the total to 16. In time I'll continue to add to it.

Here are screen shots of the eight new ones:

You'll find the full set on the upper floor of the Paramour Shopping building with the eight new ones being towards the north-east corner All are full perm (under Creative Commons Attribution-Non-Commercial-ShareAlike 4.0 International license) so you can scale or texture them any way you wish, remove them from their plinths, or switch off the "click-to-buy" so they won't display the ugly $ pointer when your mouse hovers over them.

HGTP to then take the local portal to Paramour Shopping.


Monday, 14 September 2015

RELEASE: "Ghosts of Llangollen" series - part 1

This evening Paramour Shopping's statue collection grew once again, this time with the first part of another new series of statues I've been working on recently, entitled "Ghosts of Llangollen".

So far I've made eight pieces for this series which explores a romantic (but not explicit) theme. Those curious about the reason for the title might find this book of interest (or as a starting point for exercising your Google-Fu). I've done preliminary pose work on another half dozen settings and the collection might extend beyond that or even become one of those on-going ones I revisit periodically.

The statues are located on the upper floor, along the center of the aisle towards the north-west part of the building although at this rate I'm going to need to add a second building to the region in the near future and do some shuffling around of contents. All pieces are free and full perm.

To visit, HGTP to then take the local portal to Paramour Shopping.

Thursday, 10 September 2015

Blender: Overview of Modifiers

It's been a while since I last did a beginner level Blender tutorial but I've been meaning to write this one for a while since it's of fairly significant importance to people who want to model objects for use in Opensim: modifiers.

A few of my previous tutorials have touched on this subject when they guided you through the necessary steps to use the array and curve modifiers to make chains and other interesting objects, but I didn't spend any time talking about them in a general sense. Let's do that today.

Loosely speaking, a modifier is an action you want to take with a specific scene object, but want to be able to leave it as something to do later -- often just before you export it. Further, you want the flexibility to be able to change your mind about the exact parameters of that action, and you want to be able to continue working on your base model, as is, and have those changes react responsively to those changes. For those of you who have done a lot of Photoshop/Gimp work in the past, think of modifiers as being non-destructive layer effects.

As is the case with almost all aspects of Blender, there are a zillion options with modifiers, but a large number of them will be of little or no interest to us for creating in-world content. I'll focus on the ones I consider more generally useful for our purpose.

To use a modifier you first need an object. That's because a modifier does more or less what its name suggests: it modifies something else. That means we need a "something" before we can use a modifier since modifiers are context-sensitive to the type of object they're being applied to. If you're not aware of the distinction between types you might want to read my Overview of Blender Primitives tutorial.

Since the vast majority of objects we'll be working with for Opensim purposes are meshes, let's use our handy "Suzanne" mesh as our guinea pig. In Object mode Add > Mesh > Monkey (or use the toolshelf's create tab) and select her.

Now look for the wrench symbol in the Properties pane and select it...that's the "modifiers" tab. At the moment there will be nothing in the pane other than a "Add Modifier" drop-down because Suzanne doesn't have any modifiers assigned to her yet. With Suzanne selected, click the drop-down box and don't panic. You'll see a very large number of options appear.

The list of possible modifiers depends on the type of object, so if you were working with a curve you'd see a different (much smaller) list. Blender only lists the ones that are relevant to your object type.

For mesh objects you'll see they're grouped into four columns that distinguish the general classes of modifiers:
  • Modify: These ones manipulate data, UV maps, normals, and vertex weighting and are ones you may begin to use occasionally as you become a somewhat more advanced user -- particularly if you are doing rigging and weighting (part of animation).
  • Generate: These modifiers are all ones that result in actual changes to the topology of the mesh, either be adding new vertices/faces or by removing them. It's one of the two bread-and-butter modifier classes that will become your go-to ones.
  • Deform: This is the other bread-and-butter go-to class of modifier. Unlike the Generate class, this one leaves the topology of your mesh intact but changes its shape by moving the existing vertices around in some way.
  • Simulate: This class is one you'll likely become increasingly interested in as you become more familiar with Blender -- in particular the ones directly associated with physics simulation (cloth, collision, and soft body). I use these extensively when creating clothing by having Blender's physics engine (a full implementation of Bullet) help me drape it more naturally; but that's a subject for a more advanced tutorial.
For now, you'll likely want to stick with the two middle classes of modifier until you're extremely familiar with them and how they work. Later, you might want to investigate the others.

The key thing that distinguishes the two classes we'll look at today is that the Generate class almost always changes the actual vertex count of our object whereas the Deform class leaves the topology intact but alters their position/relation of vertices to one another. The former can result in drastic increases in vertex count so you'll need to be somewhat judicious in how (and how often) you use them. In spite of this, it's likely to be the class you use a little more often initially.

For our Suzanne model let's pick the "Subdivision Surface" modifier (commonly just called "subsurf") which is near the bottom of the list. I won't go into detail about what this modifier actually does, other than to say that it subdivides each face of your model to give it a smoother appearance -- but does so at the expense of a significant increase in the total vertex count (roughly 4 times as many for just one level of subsurf, depending on the exact topology of the model).

You'll see Suzanne's appearance change in the main 3D View screen, and you'll see an entry added to the modifiers list in the Properties pane.

This brings us to a very critically important property of modifiers: they're non-destructive! What this means is the actual mesh object is not being changed when you assign a modifier to it (if you switch to edit mode you'll see Suzanne is exactly the same as she was). A modifier is a "something I intend to do later" instruction that does not in any way alter the mesh until you apply it.

This means that you can edit and change the mesh in any way you want and the modifier will sit there, taking those changes into consideration and showing its effects based on the new shape/topology of your mesh.

Modifiers can be added to an object regardless of what mode you're in although typically you'll only add new ones while in Object mode or Edit mode.

Until you click the "Apply" button of a modifier it will remain there as an entry in the modifiers list for this object but the object itself won't change. You'll notice in the Outliner pane that a little wrench symbol will now be shown after the object's name in the listing to remind you that there are one or more modifiers assigned to it. You can select the object and go to the Modifiers tab of the Properties pane at any time to see what it is, alter its settings, or even remove it. Modifiers are all per-object, so you can add a different object to the scene and none of our Suzanne modifiers will affect it in any way.

You'll also notice that the "Add Modifier" drop-down box is still there at the top of the pane. You can have more than one modifier assigned to an object, so let's do that with Suzanne by adding a second one: this time the "Triangulate" modifier which is also one of the ones in the Generate class.

You will probably want to use a triangulate modifier on every single mesh object you create since Opensim (and SL) require all mesh imports to be made up exclusively of triangle-faced objects whereas all of your work in Blender is (or should be) done using primarily quad-sided faces. This modifier converts anything that isn't a tri into a tri. You can do the same thing to the mesh while in edit mode by selecting the entire object and using the Ctrl + T hotkey combination (or Mesh > Faces > Triangulate Faces), but you definitely don't want to do that until just before you export (since you'll want to preserve your quads as long as possible in case you want to make changes to it) and you'll want to have a saved quad-faced version of it to revert back to in case you want to make any alterations after you've looked at it in-world. It's a lot easier to have it sitting there as a modifier instead, then just applying it immediately before export.

You'll notice that this new triangulate modifier was added to the list in the Properties pane as a new entry below the existing subsurf modifer. You can have as many modifiers as you like (or if there's a limit I've never run into it) assigned to an object and the list of them is typically called the modifier stack, or just "the stack" in any other Blender tutorials you might do.

You'll see that the little header line of both of our modifiers is very similar, with almost all of the little icons being identical. These are ones that are shown on almost all modifiers and quite important.

  • The first little icon is a downward-pointing arrow which, if you click it, will collapse all of the modifier's settings and turn into a right-pointing arrow instead. Click it again to expand it once more. If you have a large stack of modifiers you might want to collapse ones where you're unlikely to need to change their settings again.
  • Next you have a little icon that indicates which modifier it is and beside that is a text box that by default will also tell you what type of modifier it is. You can change the name in the text box if you wish to use something more informative to remind you of your reason for using it but for the most part you're unlikely to need to.
  • Next we have a little camera icon that, for our purposes at the moment, is useless. This indicates whether the modifier should be applied when the scene is rendered in Blender which isn't something we'll be doing since our models are being made for export.
  • Beside it is a little eyeball icon. This allows you to toggle whether to display the effects of the modifier in your 3DView pane when you're in Object mode. This is a really important one which I'll come back to in a moment.
  • The next two icons (one that looks like a cube with the front 4 verts selected, and one that looks like a triangle) are toggles that control the appearance of the mesh when you're in Edit mode.

    It's a little tricky to explain their effects but they're also quite useful when you're modeling. The first determines whether to display the modifier's effects in Edit mode (so it behaves like the eyeball icon, above, except it's for Edit mode) and the second determines whether to adjust the actual edit cage to show it too.

    The easiest way to see the effect is to switch into edit mode with Suzanne, zoom in close to one of her ears, then toggle those two icons for the subsurf modifier and watch what happens to her mesh in your display.

    I typically use Blender's default to view the effect but not adjust the edit cage, but there are occasions where I will want to disable showing the effect and other occasions where I'll want to work with the adjusted'll probably develop your own preferences and habits as you work with them as well.
  • The next two icons are up and down arrows and are critically important. They allow you to move the modifier up and down the stack, changing the order of your modifiers, and this can have a drastic effect on the final appearance of your mesh. That's because modifiers are applied to the mesh in the order they're listed.

    To demonstrate this effect, try it now with just these two modifiers on Suzanne. Move the triangulate modifier to be first on the list and watch the effect. Then move it back to the bottom.

    The effect of our subsurf modifier is quite different when we triangulate the faces prior to subdividing them. With other modifier combinations it can be even more radically different, and of course the larger your modifier stack the more important the order of them can become.

    It takes some time, experience and practice to learn how best to order your modifiers and it's hard to give you any general tips since it depends greatly on exactly which modifiers you're using. The only sure-fire "rule" I'd offer is: always put a triangulate modifier on the bottom of your stack. If by some chance the faces are all triangles already it won't have any impact, and if they aren't then you'll know that your final mesh will conform to Opensim's import requirements.
  • The final icon is an "X" symbol. Clicking it deletes the modifier, removing it from the stack.
In all modifiers you'll also have, below that top line of icons,  an "Apply" button and usually also a copy button. There may be additional buttons here as well depending on the modifier.

As I mentioned earlier, the "Apply" button is your "Do it now" button...the modifier's effects will be immediately applied to the object and the modifier will be removed from the stack. You have to be in Object mode to apply a modifier, and when you do the effects will be applied based on the exact model as it is right now, ignoring any other modifiers that might be above it in the stack. This can result in your modifier not doing what you intended it to do if there are any unapplied modifiers above it; so typically you would only apply a modifier that's currently sitting at the top of a stack.

In theory when you export your object you have the ability, when saving, to apply all modifiers automatically (it's a check box in the export dialog) and it should do so in the exact order that they're listed. I have encountered a few instances in the past where either the order they were applied is incorrect, or where a modifier didn't get applied, so when I'm ready to export I now save the file (so my .blend is current); then manually apply each modifier, in order, from the top of the stack, until all are done; then finally export. It's a nuisance when working with a large number of modifiers but it's less of a nuisance than having them apply incorrectly and having to go back and do it all over anyway.

The "Copy" button adds a duplicate copy of the current modifier (including settings) immediately below the existing one in the stack. I've almost never used it and can't think of many occasions when it would be particularly handy.

I promised, above, to return to the little eyeball icon that shows the modifier's effects in 3D View since it's pretty important. There are several things worth discussing about it.

When you only have one or two modifiers applied to an object, and your scene has only a small number of objects, you'll probably want to have the effects of all of them all showing in your 3D View pane. As the number and complexity of modifiers increases, or as the scene complexity increases, you may find that Blender becomes very, very slow and unresponsive. That's because displaying it requires Blender to figure out what it will all look like after the modifiers are applied, doing it for each object and each modifier in order until it has a final "this is what it will look like" solution and, the more complex that is, the more Blender will struggle to do those calculations in real time as you're working.

As you start to work on more complex things you'll frequently need to either completely hide some objects in your scene (so Blender won't have to figure out how they're supposed to look) or disable showing some or all of you modifiers' effects unless it's something that directly effects the part you're working on at that moment.

When you're in Object mode there's an additional use to the eyeball icon. When the eyeball is toggled on to show the effects of the modifier, the mesh details shown in the Info pane (the main menu bar that by default is at the top of your screen) will be updated to show the vertex and face counts after all currently visible modifiers are applied. If the visibility of a modifier's effect is turned off, it won't be included in that total. When you're in Edit mode it only ever displays the details of the exact current model with no modifiers applied. You can use this to see just what effect any of your modifiers is having on the vertex count (particularly your Generate class ones) in case you need to make some adjustments to their settings.

Everything else that appears in a modifier's properties will depend on which modifier you've selected so it's not practical to try to detail -- or even generalize -- them here. You can find a complete listing of modifiers and details about what they do and what their settings mean in the main Blender guide. I will gradually do future tutorials for the ones that are particularly useful for Opensim (I've already done several that talk about the array modifier, curve modifier, and screw modifier which you'll find in my tutorial archives page).

That said, there's one pair of settings you may see fairly frequently that are worth commenting on here: the "View" and "Render" settings that you'll see on the subsurf modifier as well as a handful of others. For our purposes in Opensim you can pretty much always safely ignore the Render setting because the only time it is ever used is when you render a scene in Blender. When you export (or manually Apply a modifier) it is always the View setting that is applied. For Opensim purposes we're only doing the latter so that's the only one that's important to us.

A couple closing notes for this tutorial:
  • In my opinion it's very much worth spending some time playing and experimenting with each of the modifiers even if you don't see an immediate use for it. Just being aware that it exists can lead to new ideas, or might spring to mind as an easy way to accomplish something instead of modeling it laboriously by hand.
  • It's also worth noting that most of the modifiers can also be done via a command while you're in Edit mode, and often can be applied to just a selected portion of an object instead of the entire object. Modifers are always applied to an entire object although in some cases you are able to limit their effect to only specific portions of the mesh using something called "Vertex Groups" or, occasionally, by material assignment.

    A good example of this is the Bevel modifier which will smooth out sharp edges by adding new topology to make them a little rounded. This can add a lot of extra vertices and is often something you'll only want to do to certain, select edges. There's no way to do that via modifier -- you'd have to do it in Edit mode using that mode's bevel command. However, if you need to bevel an entire object it's far easier to do it using the modifier.
  • Modifiers I'd consider to be of significant use to beginners modeling content for Opensim would be
    • Generate class: Array, Bevel, Decimate, Mirror, Screw, Solidify, Subdivision Surface and Triangulate
    • Deform class: Curve, Displace, Lattice, Shrinkwrap, and Smooth 
    although that's very likely heavily influenced by the sorts of things I typically create. You may find less use for some of them than I do, and my make significant use of one that aren't on my list simply because you're interested in making different content than I do. There are other modifiers that I use extensively but aren't ones I'd expect a beginner to find useful (physics simulations and ones relating to vertex weighting).
Hopefully the above will give you a basic overall sense of how modifiers work and why they might be useful to begin learning about. As with almost any Blender subject, there's no substitute for getting your hands dirty...just dive in and play with them using Suzanne (or a cube or sphere) as your guinea pig.

Wednesday, 9 September 2015

RELEASE ANNOUNCEMENT: Paramour Region Traffic Monitor v2.0

This morning I added a new utility to the Parmour Shopping center's scripted item offerings: the Region Traffic Monitor 2.0.

A Bit of Background

Some of you may be using the (now very old) basic greeter script I posted in the OSGrid scripting forum a few years ago. For general purpose use that one's fine, but it wasn't intended for every high traffic regions so made little (or no) effort to minimize resource usage. As soon as someone new is greeted it stores an updated visitor log and it also gives you the ability to hand notecards and landmarks to your visitor as part of their initial greeting. All of these operation have to use thread-locking functions that put a bit of a hit load on a region that could already be struggling to handle your newly-arrived guest if there is significant traffic volume.

The basic V1 script is also limited by the 64k storage capacity of a single notecard so it will "run out of tracking space" once you've had about 700 unique visitors to your region. If you exceed that limit, Opensim will fail to store the newly updated notecard. does this without any warning -- in region or in console -- and ends up losing all of your data.

I wasn't aware of that until my Hedonism region (which uses a modified, lower-load version of that script) suddenly lost all of my previous visitor data. Luckily I had it backed up so I only lost 1 or two entries, but it did force me to get around to scripting a new mechanism for handling greeting and visitor tracking for higher traffic regions While I was at it, I further adjusted my overall mechanisms to create an even more streamlined and lower-load script than I'd already written for Hedonism. I delay storing new data until 5 minutes after the most recent person has arrived (which will get pushed back if more people enter) to give the simulator enough opportunity to handle the inbound login before asking it to store notecard data; spreading out the load.

The result is....

The New Paramour Region Traffic Monitor 2.0

This is a complete rewrite of the greeter and traffic monitor script, fine-tuned to provide maximum performance and minimum impact for high traffic regions.

Individual months' data is now stored on separate notecards so the storage capacity limit of a notecard shouldn't be an issue at all unless your region has more than about 1000 unique visitors in a single month. In the unlikely event that you need a script that can handle more than that, get in touch with me and I can probably write one for you or suggest a viable method for it.

The new version DOES NOT give landmarks or notecards because of the hit on the simulator from the threadlocking functions. If you want to provide those things I strongly suggest a separate box sitting nearby that is set to "sell contents" when someone touches it. This achieves the same thing without the very nasty -- and potentially debilitating -- hit of doing it via script.

The greeting text is fully customizable, including the ability to wildcard the visitor's name as part of the greeting. A separate text is supplied for a first-time and a repeat visitor.

A set of basic statistics is (optionally) displayed in floaty text above the greeter. The colour and alpha of the text is customizable or you can turn it off altogether. The statistics show the number of (non-NPC) users currently in the region, as well as how many unique visitors you've had in the last 24 hours, the last 7 days, the last 30 days, and all-time.

The greeter is region-wide with unlimited range, so a single greeter can handle the job even in an enormous var.

The Greeter can (optionally) notify the owner when someone enters the region. Normally it will only do so if the owner is also present (and do so privately so it doesn't spam chat), however it can be also be configured to send you an instant message to notify you if you're absent. I DO NOT recommend enabling that IM capability except at periods where you expect region traffic to be extremely low since that function is also a very nasty thread-lock it to the simulator. When enabled it will only invoke the function if you aren't in the region, though. If you're in the region it will notify you the "friendly" non-sim-hurting way.

There methods used in the new script do all the tracking via UNIX timestamp which isn't every human-friendly to read, so I've supplied an optional add-on script that you can place in the same object.

This allows the owner to touch the greeter and be given a copy of a specific month's traffic report, reformatted to show the day of the week and date of each person's most recent visit during that month, their name, and their grid. An additional section of the report supplies a summary of visitor stats for that period to tell you how many unique visitors you had, how many were local and how many were hypergrid, and how many different grids they came from. All times in the report are adjusted to use PST/PDT (or "grid time").

These reports are a bit more system-intensive so it's much better to have them as a separate run-on-depend application that you can activate at a time when your region is experiencing a very low traffic volume.

This scripts make use of OSSL functions to minimize sim impact so you'll need OSSL enabled and sufficient permissions for the script owner to be able to use it.

Where To Get It

A boxed version of this is now available in my Paramour Shopping region (HGTP to then take the local portal to Paramour Shopping) and is on the upper floor of the main building, near the many other Paramour scripted products (west side of the building's U shape).

You can just re-texture and use that box, or move the scripts out of it and into any other object in your region you like. An Read Me notecard contains general instructions for use, and further details are supplied in the scripts to help you set any custom parameters you wish.

Like all Paramour products, it's full perm and released under Creative Commons Attribution-Non-Commercial-ShareAlike 4.0 International license

You can see the script in action in both my Hedonism and Paramour Shopping regions.

Tuesday, 8 September 2015

NEW RELEASE: Five New Statues added to the Solo Dancer Series

This morning Paramour Shopping's statue selection expanded with the addition of five new pieces -- the result of a fairly productive long weekend's work.

The quintet joins the three existing pieces of my solo Dancer series, and the 27 pieces of my couples dance series, all inspired by my love for modern and contemporary dance, hopefully capturing some of that vibrancy in static form.

Here are in-world screenshots of the five new ones:

As usual, these are full perm pieces so you can retexture and scale them as desired (or take them off their stands). All statues in the region are released under Creative Commons Attribution-Non-Commercial-ShareAlike 4.0 International license. You'll find the solo dancer series on the upper floor of Paramour Shopping in Refugegrid, just around the corner from the dance animations.

To get there, HGTP to then take the local portal to the shopping center. Please don't direct-tp to the region as it's served from my home and the connection can struggle under that additional hit. You'll need a little patience while the extensive content of the region loads.


Thursday, 3 September 2015

NEW RELEASE: Five New Statues at Paramour Shopping

This week I've increased Paramour Shopping's sculpture collection with five new statues that might be of interest to the VR art collector.

Earlier this week I added a pair from a new "draped" series I've been experimenting with. I pose the figure, then drape and pin a sheet of fabric to it, then use Blender's cloth simulation (and some post-work) to get the desired effect. The two I've added are the best results I've achieved to date, both using almost the same model pose but altering the way I drape the cloth.

This morning I added another three pieces from another new series I've begun to work on: "The Dancer." These are single female statues with poses inspired by my love of (watching) modern and contemporary dance -- the sort of thing that happens when I watch far too many episodes of So You Think You Can Dance featuring routines choreographed by Travis Wall, Tyce Diorio, Mia Michaels, Sonya Tayeh, Stacy Tookey, and others. This will be a companion series to the set of couples modern dance I've already featured there (currently at 25 pieces and counting).

As always, they're completely free and full perm so you can scale or re-texture them as desired (or remove them from their plinths). All are on the upper floor of the main Paramour Shopping building.

To get here, HGTP to where you will arrive in our Welcome region, then take the local portal to Paramour Shopping (please don't HGTP directly...the region is hosted on my home server which can struggle under that load).


Tuesday, 1 September 2015

TUTORIAL: Blender 2.74+ Weight Tranfer

In a few of my G+ posts I've made the comment that as of Blender 2.74 there's a new and very powerful weight transfer feature that I am finding does a superb job and is a real time-saver. This was first introduced in 2.70, has subsequently undergone several additions and improvements, and now provides a very powerful, time-saving tool.

This tutorial is intended for Opensim creators who already have a good grasp of rigging and weighting (perhaps under earlier Blender versions) but haven't yet used the new transfer utility. It isn't intended for the original rigging and weighting of your's for clothing and other such items where you want the weighting to match your body's weighting to avoid (or completely eliminate) poke-through without having to resort to alpha-masking whatever is underneath.

Before Starting

I've read many people's tutorials where weighting is done each time by proximity mapping from the armature bones. In my opinion this is a colossal waste of time. It's almost always going to require significant post-work and having to do this over and over again for each item you make is counter-productive.

The only time you should need to weight by bone proximity is if you're weighting a completely new and unique mesh avatar from scratch where no existing avatar can act as the source of starting point weights. This tutorial assumes that you already have a base avatar model that will be wearing the clothing item, and that it's rigged and weighted properly.

Instead, it's far more efficient to work from a preexisting model that's already perfectly weighted and use the new weight transfer capabilities of Blender to copy those weights intelligently over to the new object. Since a fully weighted SL avatar rig is readily available from Linden Labs, anyone can do this. It's simply a matter of having a source object with weights you already like, and a target object you want to transfer them to. It works with the standard bones (base SL armature) as well as with the fitted mesh bones.

For women (or men who wear kilts) I highly recommend making a "dress blank" to go with that base avatar as well. The idea, here, is to make full length dress (to the ankles) with long sleeves (to the wrist) and high neck. Keep it quite tight to the body. This can then be used as your weight source for almost all dresses regardless of style or length.

You'll need to weight this one manually to fix the transition area of the pelvis and hip bones, which is a long, annoying, time-consuming process if you want it to look semi-decent. I'd suggest using the method in this tutorial to obtain your starting weights (using your avatar as the weight source).

Make this "blank" much higher poly than you'd normally work with for export in-world (mine is about 40k vert) and when you make it, ensure that it's perfectly symmetrical on the x-axis since it will make it much, much easier to weight the overlap where the left and right thighs overlap one another and to smooth out the blend for the pelvis because you'll be able to use X-Mirror in your weighting options. Having a large number of faces will result in much more consistent (and better) results when using it as your weight source for low poly models.

The most difficult region to weight in your blank will be the transition between knees and hips where you'll need to simultaneously balance the weights of 4 bones. Doing this without being able to use X-Mirror is an exercise in frustration so I wouldn't even bother. For the hips and pelvis, balance your hips first, then work with the pelvis bone weights to smooth out the bend. You'll want to do all of this with auto-normalize enabled on your brushes.

Spend as much time as necessary to make this blank and get its weights as close to perfect as you can. The idea is to spend all this time only once, and then be able to use it as our weight source for all future skirts, dresses, etc with little or no tweaking being necessary afterward.

When the legs are apart you're looking for radiating straight-lines from the pelvis to the ground (or as close to it as you can get -- assuming your dress started off as more or less a plane or cylinder).

The added bonus of a creating a blank like this is it also works very nicely as a convenient shrinkwrap target in addition to being your weight source. Of course if you'll only ever be making shorts or pants, you don't need one of these since you'll be using your avatar mesh as your source.

Save a copy of this blank somewhere that's easy to find later. When making something new I usually just open my blank and immediate "Save As" with whatever my new clothing item's name will be; then work directly in that file. When I've finished everything, I delete my weight blank mesh and avatar to conserve space when archiving.

At this point you'll have two archived weight source objects -- your avatar model and your dress blank -- both in the same file and parented to the same armature -- that you've invested a lot of time and effort into weighting as well as you possibly can. After that, it's easy!

Model A New Clothing Item

Now go ahead and create a new model of whatever clothing or jewellery item you feel inspired to make. You don't have to make it conform perfectly to either of your archived weight sources but the closer the new item is to one of the existing sources, the less post-work you'll need to do. both work nicely as shrinkwrap targets, too.

For this tutorial I'll be using a dress I made that's intended to look similar to the famous Marilyn Monroe white dress. The under-boob tucks of the ribbon,  the extensive pleating, and flared skirt of the style make this something that would normally be a major PITA to weight -- particularly using bone proximity mapping. Here's the model (it will be white...the colours are simply material zone reminders to myself).

The picture on the left also has my dress blank visible, which you'll see pokes through in a few places where I'm conforming more tightly to the body than my blank does, but for the most part lies underneath the model I've made. The picture on the right is showing the final fit on my avatar.

Parent To Your Rig

Now parent the new item to your existing rig.

If you use Avastar (which I highly recommend and still use as part of my workflow) when you bind to armature select "keep" for weights since we don't need Avastar to try to generate weights for us. In pre-2.74 days Avastar's weighting routines were superior to Blender's. Now (in my opinion) Blender's are better and offer far greater flexibility).

At this point we now have a dress that's parented to the rig but unweighted.

Transfer Weights

Now for the magic of Blender 2.74+ weight transfer...
  • In Object mode first select your dress blank (the source that is already weighted) and then shift-select your new unweighted dress to add it to the selection, making it the primary selected object (the dress with be highlighted in orange and your weight source will be more of a red highlighting).
  • Switch to weight paint mode.
  • In the toolshelf's Tools Tab, in the "Weight Tools" section click the "Transfer Weights" button (or menu Weights > Transfer Weights). Immediately after doing this look in the most recent action section of the toolshelf and set the appropriate transfer parameters which will almost always be:
    (in this picture I've hidden the body and armature layers but you don't need to)
    • Data Type: Vertex Groups
    • Create Data checkbox checked
    • Vertex Mappiing: Nearest Face Interpolated (see notes below)
    • Object Transform checkbox checked (to evaluate in global space)
    • Only Neighbor Geometry checkbox NOT checked (Ray Radius then doesn't apply to the transfer and its value is ignored)
    • Source Layer: All Layers (see notes below)
    • Destination Layer: By Name
    • Mix Mode: Replace (see notes below)
    • Mix Factor: 1.00 (see notes below)
For many objects you won't need to do anything further at all beyond a few very minor tweaks.

The above has three rather critical choices involved that are relevant to weighting objects; but it's worth being aware that this same utility can transfer all sorts of other data if you change the data type from Vertex Groups to something else. The The Blender wiki for more information on other data transfer types.

The first critical choice for weighting is the Vertex Mapping where your choice will depend on your source and intended target. For most things you'll want to use "Nearest Face Interpolated" but there occasions where it makes sense to select one of the others (if you hover your mouse over the option in the list Blender will give you a pop-up telling you how the method calculates the weight). On occasion I will use Projected Face Interpolation or, rarely, Nearest Vertex.

The second key choice is whether to transfer all layers (all bones) or only one specific bone. Since our mesh is unweighted we want to transfer them all and our "Destination Layer: By Name" assigns those same vertex group (bone weight) names to our target mesh which is exactly what we want. You might, on occasion, only want to transfer the weight from a single bone (or do a few of them, one by one, while ignoring others).

The third important choice is the Mix Mode and Mix Factor. For our purposes you'll always be using "Replace" with the Factor at maximum because there are no preexisting weights on our model.. If you were importing one bone at a time you would typically mix or add, then later normalize all weights

Clean Up

After transfer, I strongly suggest.using one or two additional tools from the Weight Tools tab:
  • a "Normalize All" with the "Lock Active" NOT checked but only do this if you are NOT using fitted mesh weighting
  • a "Clean" for "All Groups" with limit 0.0 and "Keep Single" checked
The "Normalize All" ensures that the sum of all weights on each vertex is 1.0 which is a requirement for the standard armature. Fitted mesh does not require this (a number of vertices on the SL base model have weights with sums >1.0).

"Clean" with "all groups" just cleans up the vertices to only have vertex groups assigned to them where the weight is non-zero. If you need to do any tweaking later, this will tend to simplify things and avoid potential accidents (used in conjunction with "restrict" painting option enabled)

Test and Tweak

In many cases you can simply export this result because the above method is usually remarkably accurate. Depending on your model you may need to do some minor painting tweaks or blurs, so it's good practice to test your weights by moving your armature through a normal range of motions to ensure that there's nothing odd happening and clean up any minor poke-through areas if possible.

With the default SL avatar and weighting it might not be possible to eliminate all pokethrough on very tightly form-fitted or very low poly clothes. You can then either make a matching alpha layer or adjust your model as needed. The closer your model's vertices are to the location of SL avatar vertices, the less often you'll need to do this (or simply raise the clothing further off the body, or if absolutely necessary increase the poly count in that region).

For most common clothing and jewellery items I can get a pretty respectable set of copied weights that require very little tweaking or post-work adjustment, making all that time spent on the original dress blank very much worth it. If your new item has areas that are quite distant from the source mesh you will typically need to make a few tweaks to smooth out the interpolations.

That was the case with the waist-to-hip region of my "Monroe Dress" which sits quite far out from the body and moves more naturally when the weighting transitions are blended a little more smoothly. I also did a little further tweaking to the pleating in the lower portion of the skirt to have them expand more smoothly with movements of the legs. I also removed all influence from the two knee bones since they had picked up slight weighting at the very bottom (which would be needed if the dress extended much lower) and re-normalized those vertices.

In total my dress' weighting (including post-work tweaks) took less than half an hour. Had I weighted by bone proximity it would have been many hours of work to get even remotely close to an equivalent result.

I use my dress blank as the wight source for anything that needs to have shared influence of the two hip bones (skirts, dresses, very long shirts, etc) and for anything else I'll use my own body as the weight source.


If you haven't yet experimented with the latest weight transfer improvements in Blender (or haven't updated to a recent build) I suggest you give it a whirl. I think you'll find the drastic improvements worth the relatively small learning curve to get up and running with it.

Edit: there appear to have been a few changes with the new Blender 2.76 and the transfer isn't behaving as expected. I'm trying to figure out what's changed and how to get back to the reliable results it was previously given. Once I do so I'll post them here.

Edit2: I have confirmed that were was a bug in versions 2.76-2.76b that broke this function. This has been corrected as of the nightly build Nov. 25, 2015 and is now working properly again on this (and presumably future) nightly builds. It will be included in whatever the next official release is (2.76c or 2.77). Until then you can either get a copy of the nightly build or revert to 2.75 where it also works perfectly.