3D terrain, tunnels and undersea air spaces

At present, all terrain in OpenSim is created using a 2D height map, as in Second Life™. Some time ago, I posted a blog post about the idea of using voxels, essentially a way of having a 3D grid of heights similar to 2D pixels. This has not been taken up or discussed anywhere else since but, I would argue, remains a serious issue in the usability of 3D worlds.

What can’t you do? Well, at present, you cannot make a seamless tunnel through land, i.e. you cannot have truly subterranean locations unless they are covered by prim land, rocks or other buildings. To do this, you would need a totally new type of height map, although it would perhaps be possible to write code to automatically upgrade existing height maps in much the same way as other database upgrades are made between OpenSim versions: essentially, the default for the upgrade would be for there to be no voxels beneath other voxels, i.e. no concavities. These could then be tunnelled later, which would require changes to both the server and viewer software. I admit, this is a LOT of re-engineering and unlikely to happen quickly.

Undersea locations would also be possible if sea voxels were marked as such, where no voxel marking sea height could be within a land space or above the maximum surface of the sea. This would enable air pockets under the sea, although excavating them upwards might be a tricky thing to make a viewer do in practice. At the moment, the manual land tools leave a lot to be desired anyway, but this seems like a thing that would be much harder to make work in a usable manner.

What about a temporary, easy workaround? In OpenSim, we love those! How about a tool to copy existing height maps into mega meshes with the same textures (and flat bottoms), that could then be exported, excavated horizontally as required and then put back in place of the existing height maps? The real height map would then be removed by flattening the terrain below the level of the mega mesh that had replaced it. It won’t fix the issue of undersea air pockets but it would make tunnels and caves possible above sea level, or undersea tunnels or caves flooded with water. Of course, as an after-thought, such meshes would also be usable in Second Life™ if they could be scaled to mega meshes without too much land impact. Any thoughts?

More on meshes – hooray!

As if my wish had been answered, today Linden Lab announced that meshes will indeed be coming to Second Life, contrary to earlier fears. We don’t yet have a timescale but, despite the massive layoff of staff whose efforts must have contributed to this work (e.g. Qarl Linden/Fizz – Karl Stiefvater), somehow LL have managed to keep the idea going as a practical concern. Prokofy Neva has typically trolled the comments page at length, posing ridiculously as ever as the harbinger of doom that small content makers will be driven out. Too many such predictions about the end of SL as we know it have been made before, and all have been proved unfounded. I simply do not believe it. As ever, content creators will rise to the challenge, and they will excel.

This can only be a good thing. With ModRex waiting in the wings, you can bet that OpenSim will be on the case: in fact, they were ahead of the game on this one. LL realised this, as I said they would, and do not want to be seen to be lagging behind their competitor and spin-off imitator, which already has other significant functionality that SL lacks. To be behind in something so fundamental and obvious could kill SL and send people running for OpenSim. But SL has the advantage of being first at the party, and LL naturally wants to keep it that way rather than surrender to the many new grid providers running the OpenSim software on their servers across the Web.

By the way, OpenSim 0.7 now fully supports the Linden Viewer 2.0 codebase. If, as expected, meshes are only available in the 2.x branch and not the 1.x branch, the third party viewer developers will have to play catch up. But this is something that they have done before with Snowglobe in double quick time, and I would put very little past their ingenuity and determination where it concerns keeping up and surpassing the Linden viewer code. There is also the alternative of adapting the existing GPL code used in the RealXtend viewer that can already display meshes, although this was written for the 1.x codebase.

As I said in the previous post, it is meshes that will allow both SL and OpenSim to continue to compete and outperform the other virtual worlds, to remain modern in terms of attractive, industry standard graphics capability, to provide ever improving content creation, and to attract new users.