[Opensim-dev] terrain texture blend weight painting
Toni Alatalo
antont at kyperjokki.fi
Mon Nov 15 12:18:50 UTC 2010
Hi,
we've had a first implementation of terrain texture blend weight
painting in Naali for some weeks now. Am posting to ask for insight
about how to go about integrating it to Opensim, or at least to give a
little heads-up of what is going on with rex dev, also related to the
generic scene entity-component work.
An ugly but hopefully informative screenshot:
http://wiki.realxtend.org/images/2/27/Terraintexturepaint2_scaled.png
(from the public sandbox on world.realxtend.org:9000 -- that has auth
off).
What you see there is two terrains: 1) below a Linden style terrain
received from Opensim with the lludp terrain messages, using the
height-based texture mapping. The brick tile is used underwater, and
the dirt above the water level. 2) above there is another terrain,
using the same textures, but so that a weigtmap is used to specify
where each texture is used, instead of determining it from the height.
So with this you can e.g. paint where roads go for traffic sims or
racing games. This works using the previous Naali (0.3.3) release and
any version of opensim+modrex, for example the previous Taiga release.
It currently just uses a local file to save the weights though, so
doesn't work for real use now, but works for testing how it looks etc.
currently.
Now the question is: are there people out there interested in using
this? Perhaps to help with integrating it to Opensim? Or at least with
insight to how it should be integrated?
Currently in that test Opensim doesn't know anything about that
terrain. For Opensim it is just a prim, and the generic
entity-component storage mechanism in ModRex is used to store and
replicate it to clients. So Opensim doesn't do any collisions with it
or anything.
There are two ways to go about integrating:
a) Add something to the Linden terrain protocol to communicate what
technique is used to define the texture usage on a terrain. I.e. keep
using the single hardcoded terrain otherwise as is, but just add the
option to paint the texture blend weights. This I suppose would be
quite simple to hack somehow?
b) Work towards having a generic entity-component mechanism, and
implement terrain as a component that can support different features
depending on the type of the terrain, but integrate with the physics
etc. elsewhere in Opensim.
We are currently using the b) approach in the so-called Tundra
experiment, where use Naali itself as a server (we've added a simple
server module to Naali for that, but the scene code etc. is the same
as when using as a client). This has been the simplest way to get to
test how using the generic EC-model works for making features ..
there's nothing hardcoded about the world, it starts as completely
empty by default, but you can then add an Environment entity with a
WaterPlane component, and any number of scene entities with the
Terrain component etc. if you want. And the terrain component feeds
the physics info for the physics module (we've also added physics with
bullet to Naali). So far it still seems like this would be the good
way for Opensim too. Tundra is very much w.i.p. yet and there is no
release of it, is in a branch of Naali on github, but we'll make some
sort of preview release soon (in 1-2 weeks I think) for those who want
to test.
But to get this feature to work properly with Opensim quickly I
suppose some simple hack to do a) would be it. We'll be using this now
with Tundra at least 'cause need it in some projects already now, but
if there's interest in devving / using this with Opensim as well I
think that'd be cool (and also the folks using it with Tundra now may
need it some day in a project where need Opensim feats).
~Toni
More information about the Opensim-dev
mailing list