A Possible OpenSim Pathfinding Implementation

Navigation Mesh

A navigation mesh displayed in an unmodified viewer

OpenSimulator has a good track-record when it comes to actualizing new features. It had support for custom meshes almost immediately, and there was rapid progress on the materials system. Things like support for multiple attachments per attachment point took a little longer, but OpenSim eventually adopted it. One of the larger features we haven’t yet seen an implementation for yet is pathfinding.

Dahlia Trimble, a member of OpenSim’s core developer group, has been quietly working on a pathfinding implementation. While much of its essential functionality is complete, it is not yet ready to be included with OpenSim, and may not be for quite some time due to some rather unfortunate issues with platforms other than Windows. When reading this blog post, it’s also a good idea to keep in mind that I have not personally had the opportunity to make use of this pathfinding implementation. I only know a few things about it based on what I’ve seen and read about it, and from a few rather brief responses from the module’s author. Continue reading

OpenSim Materials Progress and Observations (Updated)

Materials Testing

Materials Testing

It has been a few days since the demo module for materials made its appearance. There have been a few updates to it, and I’ve had some time to play around with just how well it works. I’m going to share my observations, but be sure to take them with a grain of salt. Not only may I have missed something, but the demo module itself is not necessarily going to reflect the final implementation of materials in OpenSim. If you’re going to experiment with materials right now, don’t rely on anything you create being useful as anything more than a test. Continue reading

OpenSim Gets (Very) Preliminary Materials Support (Updated)

Dahlia Trimble, one of the core developers of OpenSimulator, has begun work on a module that gives OpenSim support for new materials on prim, sculpt, or mesh builds. The module that enables it is really more of a demonstration right now; it has issues setting materials, and they will only persist until a region is restarted. In addition, there is currently no third party viewer that includes the material code and also has a grid manager. It requires above average effort on pretty much all fronts to try it at all right now. Still, it’s a start, and an exciting one!

What are Materials?

Other bloggers like Inara Pey and Nalates Urriah have already done a good job explaining just what materials are, and what they can do for the inworld experience. Geenz Spad, an Exodus Viewer developer who is largely responsible for coding the viewer side of materials is also doing his part to educate at his blog. So I’ll only provide a brief explanation.

Materials as they will be used in OpenSim consist of the addition of two new textures that complement the one we’re already used to. The plain jane, old fashioned texture is known as a diffuse map. The two new ones are a normal map, and a specular map.

Basically, a normal map makes use of lighting tricks to simulate the appearance of detail and depth. In effect, an object inworld that has a low polygon count can seem to have more polygons than it actually has. This is only an illusion… a thorough inspection of any prim or mesh that has a normal map from extreme camera angles will reveal that there isn’t any depth, just additional light or shadow. But it allows for creators to fabricate far more efficient objects that look as though they have more detail than they actually do.

A specular map has to do with how much light an object will reflect, and where. For example, you might have a very dry rock that has a lump of gold sticking out of it. You don’t want the rock to look shiny, but the gold should be very reflective. A specular map allows creators to specify where and how much light an object reflects from it’s surface in a granular manner.

OpenSim’s Current Level of Support for Materials

Right now, support for materials in OpenSim is very preliminary. Dahlia Trimble has created a module that enables materials as a demonstration. It currently appears to have some pieces missing, and any materials applied to objects inworld will disappear when the simulator is restarted. Anyone wanting to bravely test things will also need to be able to grab a copy of the very latest OpenSim code and compile it.

The only viewer available that can set or view materials is a project viewer from Linden Lab®, and it doesn’t have the ability to easily connect to an OpenSim environment. What’s more, you will be the only person able to see any materials you set at the moment, and even they will disappear if you leave the simulator for any reason. It is possible to make them stick using a special proxy, but this doesn’t really qualify as a proper workaround. (Update! The proxy is no longer necessary. Now when you set materials, everyone with a materials enabled viewer will see them until the simulator is restarted.)

Dahlia is still puzzling things out, and I’m really looking forward to further progress! As it was, I had a lot of fun helping to test things out with her and Nebadon Izumi on OSgrid yesterday. Nebadon made a video during the experience, which I’m embedding below. It really shows the difference between an object with and without materials applied.

LL Announces Normal and Specular Map Support

YAY! Normal maps!

LL has just announced that they’ll soon be introducing support for normal and specularity mapping. This is really, really, really, big news! There’s already some great blog write-ups on what these are and what they can do by Nalates Urriah and Inara Pey. (Go read them! I’ll wait.) Hey! What was that sound? That was the sound of hundreds of mesh content creators coming to a screeching halt as they wait for these features to be rolled out! Which is a good thing… their content is gonna look even more awesome now.

The big question for me is how and when OpenSimulator will get the materials feature.

On the server side… probably nobody knows yet. I’m guessing it won’t take too very long, but OpenSim developers will need to wait to see how LL is implementing this on their end before taking any action. OpenSim had mesh support almost immediately after LL’s initial mesh implementation hit their beta grid. Hopefully we’ll see similar interest and action taken by one or more OpenSim devs.

On the viewer side, we’re faced with the little problem of the Havok sub-license. LL’s official viewer is no longer able to login to OpenSim, and the Exodus viewer, which is in charge of the viewer side implementation of the material system, has just signed onto the Havok sub-license, making it also unable to login to OpenSim. What I’m hoping is that this will be a non-issue, and other viewers like Zen or Teapot often pick up the necessary code for features like this very quickly. Once these or other viewers do so, users on OpenSim based environments will be able to create better looking and more efficient content.

Linden Labs Removing -loginuri Option From Viewer

Quite recently, people have started to notice that the development and beta builds have removed the command line option -loginuri. This is a pretty important and useful option. It allows a viewer that lacks a comprehensive grid manager to login to any grid or simulator they choose. It’s also useful for things like using a proxy with the viewer. Projects that try to make SL more useful for the visually impaired, for example, might make use of a proxy between the viewer and grid.

So the big question is, is this by design or by accident? Nebadon Izumi of OSgrid went straight to Oz Linden to find out, and gave me permission to share some of the conversation here.

[10:07] <nebadon> OzLinden : ping
[10:09] <OzLinden> pong
[10:10] <nebadon> are you guys really removing -loginURI support from the viewer?
[10:10] <nebadon> or is that just a mistake?
[10:10] <nebadon> cause latest Dev and Beta viewers get an error if you try to use it
[10:11] <OzLinden> that was deliberate, but there is a related bug that I'm working on now
[10:12] <nebadon> ok so it will eventually be back?
[10:12] <OzLinden> no, I don't believe so
[10:12] <nebadon> why is it being removed?
[10:13] <OzLinden> part of cleaning up grid handling - it really doesn't serve much useful purpose
[10:13] <nebadon> sure it does
[10:13] <nebadon> it lets us connect to opensim
[10:14] <nebadon> this essentially kills all support for OpenSim
[10:14] <OzLinden> which our Havok license does not allow

That seems pretty clear. Oz says it’s gone for good, that there’s no good reason to keep it around, and that having Havok client side trumps the open-source utility of the viewer. If you disagree, do let LL and Oz Linden know how you feel.

INI Files and Associative Arrays in LSL on OpenSim

I have a dirty little secret. As much as I love building and tinkering and just plain messing around in-world, something I haven’t done nearly enough is script with LSL. It isn’t because I can’t. Although I relegated programming to a hobby years ago now, I once wrote software for a living. Picking up the basics of LSL really isn’t a challenge. The problem is that I just don’t like it. It’s… very awkward. It’s fine for a small, simple script, but once you try to do anything really large it gets unwieldy to the point where I just want to bang my head on the desk. I have a whole laundry list of things I wish LSL did better, but this post isn’t really about that. Instead it’s about one way I make my life a bit easier. Or about killing two birds with one stone.

Continue reading