Good-bye, meshes!

State-of-the-art content with less lag

Ok, so if you’re not an university, why should you worry about all the above? Unity3D is just good for stand-alone virtual worlds, and that means “no economy”. OpenSim, by contrast, is even better than SL at creating multiple grid environments, all neatly interconnected, but there is also no trans-grid economy (although a few people are working on that!). But the most important point here is that you won’t be able to bring your friends and your content from SL into OpenSim (much less into Unity3D), so even if OpenSim starts to support wonderful meshes, why should you care? Your friends won’t be there. The events you like won’t be there. The content you love won’t be there.

Well, at this stage, since Pastrami and Qarl left Linden Lab, I guess that it’s fine to explain what they had in mind — since it’s quite likely that LL will never implement their ideas. They had a very cool model to assign meshes what they called prim equivalents. This is one of those synthetic metrics that means little (like the infamous Avatar Rendering Cost…), but it would prevent meshes from collapsing the prim-based economy. A prim is, after all, a mesh. A simple, untwisted prim has a precise number of polygons; twisted prims, of course, have an insane amount of polygons. So what the clever former LL developers had was a formula that, based on the number of polygons a certain mesh had, would automatically assign to it an equivalent number of prim equivalents, and these would be the ones counting towards prim usage in your land. Clever, right? And easy to implement. In effect, what that means is that if someone uploads a huge mesh that would replace a 1000-prim object, it would still take 1000 prims, and thus fairly compete with prim modellers — nobody would be “hurt” that way. And nobody would get an “extra advantage” for using a mesh, either.

Why would someone use a 1000-prim equivalent mesh then? Very simple: first, because there are shapes you simply cannot do with prim torture — that’s why sculpties look so great. But the biggest advantage is textures. Textures are the bane of Second Life, as they consume 40%-60% or so of all grid bandwidth — that’s why LL  finally implemented HTTP-based texture loading, and, allegedly, these will be stored on the Amazon cloud. Both Snowglobe (old) and the SL 2.X viewers fully support HTTP-based texture loading — and all 3rd-party viewers as well. I thought that only the sim server 1.42 (to be released next week) supported HTTP texture loading, but I was wrong: this morning, while jumping around several sims, I noticed that now the textures are being retrieved via HTTP! Just like Philip promised 🙂 (Of course, OpenSim has already implemented that feature a long time ago…)

Nevertheless, take prim cubes as an example. Prim cubes have 7 textures — six on the outside, one in the inside. All have to be loaded and shuffled in memory and accounted for by the rendering engine. 1000 prim cubes will require 7000 textures. Of course most will share the same texture (notably, the one inside; only with prim torture will that “inner face” be “revealed” anyway), and this means bandwidth will be saved, but still… all those 7000 faces have to be accounted for. Allegedly, Havok 7 can also consider the linkset (the sum of those 1000 prims… assuming you could link them all together, which you can’t) as a single item and do its physics magic with it (note that even objects that are not set to physical will require Havok 7 calculation!); in practice, not only you can’t link all 1000 prims together, but I’m not sure about LL’s implementation. It might mean that each prim has a separate entry on the physics engine as well. All this means a lot of calculation — on the server side and on the client side, as all faces need to be accounted for occlusion, drawing distance, and lighting — prim by prim, a thousand times.

Contrast that with meshes: they only need two textures, one on the outside, one on the inside. They’re just one object for Havok 7. Simple, very simple. Sure, of course, being a mesh, it means a lot of polygons to calculate — but so are prims. Prims are meshes too! This means that all calculations that are made on polygons would be exactly the same, but a 1000-prim object would, at the worst case scenario, require 1000 separate calculations and item entries on the many internal tables, plus dealing with 7000 textures (even if most are all the same)… while a meshed object would be just one item, two textures, and that would be all.

Or consider the problem of 250-prim-hair — with heavily tortured prims, each containing a script to allow resizing and other cute features. With meshes, all that goes away. You have one complex mesh with enough polygons to describe the whole hair (and the usual tricks of having interpenetrating tortured prims to give it more “volume” wouldn’t be necessary… the mesh can describe all that pretty easily, if it’s well done). One script to allow for resizing. One (or two) textures to deal with. In fact, I can imagine that the reduction of both server-side lag and client-side lag would be so drastic, that in a year or so, non-meshed hair would be forbidden on most sims 🙂

And Qarl was allegedly also working on having meshed clothing, which would attach to physical points on the avatar, so that it can drape naturally… opening a whole new range of possibilities for avatar clothing. No more 50-sculpty-dresses for those frilly bits. No more 100-prim-boots. No more flexiskirts sticking out of the bottom of the chairs (even though my own free and open source script to deal with that helps to minimise the damage, it isn’t perfect, and the only fashion designer that uses it or a variant of it is Kunglers, whom I recommend 🙂 ). And, of course, meshed clothing is what all other virtual worlds use, even the most simple ones. With limitations, of course. Now imagine the fashion revolution this would bring! And in fact it would use far less resources than the current approach of using multiple sculpties to achieve a similar effect — if the avatar is on a static pose. Only with flowing meshes, draping from attachment points, fluid clothing that accompanies the avatar’s movements is truly possible (and also note that all this happens client-side anyway, so sims would not lag more because of that!).

The other reason is far more interesting. LL was considering to allow meshes to be uploaded only by Premium users. Now before you start yelling, consider what this means. The major problem that LL had with a free-for-all mesh upload was how to minimise the impact of CopyBot (which would be able to steal meshes as easily as any other asset), on one side, but also copyright issues with stolen meshes from elsewhere. Clever hackers would be able to crack popular games, extract the meshes, and upload them to SL. Not-so-clever ones would simply download content from Google Warehouse or similar mesh repositories, which are all unprotected, and nobody really knows how much stolen content is there.

To prevent this, LL would require all mesh designers to have some identity on file — and the simplest way to ensure that is to get them to become premium accounts. After all, it’s a premium service 🙂 But philosophy aside, it also makes things legally more interesting. By avoiding anonymity (just pseudonimity), LL could make copyright theft, at least on meshes, legally enforceable. At this point you’ll be grumbling and saying that anyone can steal a credit card, sign up under a fake name, and release zillions of meshes to the grid. Ah, you’d be right — but in that case, instead of a committing an illegality (copyright violation is not a crime), you’d be committing credit card fraud, which is a crime, and would be pursued anywhere in the world where the credit card company has offices — which is pretty much everywhere in the world these days. (Remember how Al Capone was finally caught because he did evade his taxes, thus committing a federal crime? This is a similar analogy: you can’t get in prison for violating copyrights, but you most certainly can get arrested for stealing credit cards)

A variant of this model is also possible (and was also under consideration): anyone could upload meshes and use them on their own builds, but to be able to sell them, you’d have to have a Premium account. So content pirates could still have fun on their own, but at least they wouldn’t be able to profit from it. On the other hand, anyone not willing to invest in SL, but also not really wishing to contribute to its economy, would still be able to upload meshes, have fun with them… but be unable to give or sell them to friends. They could still create gorgeous buildings for others to admire. It would be a compromise!

Now, these days, almost all professional content creators use sculpties — from hair designers to shoe designers, furniture designers to weapon designers. They might not use many sculpties, or just a few for effect, but it’s hard to come across a professional content creator that does not use any sculpties at all (at the very least, they’ll outsource the work!). This means that all of them would get content protection by discarding sclupties and using meshes instead. Meshed content that gets pirated can always be tracked down to a Premium account! There would be no doubts about whose alt they belong to. While this is not fool-proof, and is not a replacement for a more thorough DRM solution, it nevertheless is a good compromise.

So good, in fact, that if I were LL, I would not restrict myself to protecting professional content creators 🙂 I would forbid selling content by anyone who has not a credit card (or similar authentication mechanism) on file. Basic accounts would still be able to roam the grid, buy content, use products and services, transact L$ among other residents, but they wouldn’t be able to put content for sale, or to transfer their objects to any other resident. But I guess I’m just too radical 🙂 After all, lately, people have been worrying less about content theft, and more about LL’s (and SL’s!) future…

What is the biggest issue with meshes? To be honest, the major problem is that amateurs would be left out of the fun — at least for a while — since creating wonderful meshes with anything less than Maya, 3DS, or Blender is hard (and the first two have licensing costs of thousands of dollars; Blender is free and open source), and learning any of those tools is way beyond an amateur’s abilities. Gluing prims together is very simple by contrast. Now, I have no pretension to know how much amateur content is sold in SL compared to professional one, but I’m sure it’s pretty high. High enough for Philip to have dropped the whole project.

Instead, I think that LL should consider rethinking their building interface. A lot of the professional modelling applications have a modular approach: to create the final mesh, you can not only poke at it and twist and deform it, but add or subtract shapes from it. The SL building interface could achieve something similar: you’d assemble an object made out of prims (subtracting prims would be a must!), then click on a button, and “meshmerise” it. You could keep a copy of the original prims as a reference, so you could tweak it again and create new meshes. A few clever applications already do that for sculpties! They’re not perfect, but you can achieve some good results that way — good enough for amateurs with patience. I always wondered why LL never included that in the building tools. But I agree that sculpties were just a “temporary” measure, introduced in 2007, until the work for full meshes was finished…

On the other hand, that would be a nice challenge for 3rd-party viewers to implement 🙂 Let’s face it, between having bouncing boobs and a cleverer avatar radar, or a built-in mesh creator, which feature would make more people switch over to a 3rd-party viewer? 😉

Print Friendly, PDF & Email