today I sucessfully created my first demeter maps
- as I took a stone texture as detail texture,
all the world is full of stones.
Is it possible to use different detail textures
at different locations of the world? Seems like
this is similar but not identical to the two
former posts about procedural texturing and multitexturing.
What I am thinking about, is the following:
- give mapc a detail texture map, that specifies
a detail texture id from 0 to N-1 for every
tile,
- and corresponding N detail textures (instead
of a single one, as at the moment).
For me this simple approach would suffice, where
the creator of a map has to check, that neighbor tiles fit seemlessly together.
It seems all worlds not completely made of
a single material would need this feature.
Did I miss something here? Is this prohibitive for any reason?
Thanks & best regards,
- Muruve
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
That sounds like a great approach to take, Muruve. Indeed you have not missed anything - currently there is only one detail texture for the entire world, and of course this is too constrictive for many applications' needs. I think your suggested approach is a good one. Let me think it over for a day or two and, if I can't think of any significant drawbacks, I will go ahead and implement that feature for an upcoming release.
Of course, if you would like to implement this feature and contribute it back to the community, that would work too...
Does anyone else see any problems with this approach?
- Clay
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
the longer I think about using different textures,
the more unclear the whole thing is to me.
I read several of the articles about terrain rendering
mentioned in some of the other posts here (among
them Duchaineau 1997, Ulrich 2000, and Lindstrom
2001), and if I understood the general idea
right, then some of the atomic quads/triangles are
combined and instead of a bunch of quads/triangles
with a very small coverage of screen area a larger
one covering a sufficiently large area of the screen
is rendered.
But how do different textures for different
quads/triangles (at different positions) fit into
this scheme? I.e., although every atomic quad/triangle
has a texture, what texture has a larger one
representing several of the atomic ones, if they
have different textures?
I have not found anything about this problem in
the articles mentioned before. Only Duchaineau
states, that the problem of selection of level
of detail (LOD) for texture blocks has to
be solved before - but he does not give a
reference for such a solution.
Can someone point me to papers about this
problem? Or is there a common sense approach
to this?
The only thing I could make up, was the following
(asssume quads for the moment):
- associate to every texture a texture type
(e.g., stone, earth, grass, ...),
- create a/some "low level of detail" texture(s) for every
quadruple of texture types (thought of as types
of the four vertices of that texture), and
- assign every non-atomic quad a "low level of detail"
texture where the types of the vertices (i.e. for
every vertex the type of the unique inner quad
containing the vertex) correspond to the types
of the vertices of the low detail texture,
i.e. let S, E, and G be texture types and
o-o-o
|S|E|
o-o-o
|S|G|
o-o-o
be four atomic quads with textures of respective types,
that should be replaced by a single quad, then we choose
a low detail texture for the quadruple (S,E,S,G), and
for
we would choose a low detail texture for the quadruple
(S,E,S,S).
The last example shows the problem with this simple
approach: the inner of the non-complex quad is almost
complete made of texture G, but as G does not appear
at the vertices, the low detail texture will not
contain any G resemblances (e.g., green color).
Perhaps one could blend two different low detail
textures, one for the vertices and one for
the most frequent texture type? - Or combining
of textures should be constrained/driven by
equality of texture types also?
Does anyone know how one is expected to do this?
By the way, what kind of tesselation technique is
used in Demeter, bottom up combination of quads?
Thanks
- Muruve
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If I am understanding you correctly, and the Demeter
engine correctly, the problems you mention do not
exist: I believe Demeter only draws the detail
texture for terrain that is really near. And also,
for terrain that is very near, it will not combine
multiple quads or triangles into one ...
I.e., the points where such combinations are made
is further off, where detail is anyway not shown?
Do I understand the workings of Demeter incorrectly?
(Then this is an opportunity for me to understand
them better.)
Hugo van der Merwe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Mr. Yurga is correct about this problem; he's referring to the fact that is always one and only one detail texture for the entire terrain. What he would like to do is have different detail textures in different areas. For example, in an area where there are stones, he would like a stone texture, and in an area that is grass he would like a grass detail texture, etc.
This dovetails perfectly with the work Stephan is doing for OpenMountains, now if I would just make the time to get my latest procedural texture fixes over to him, we would all be better off...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I just finished getting all of Demeter installed (with OSG), and I must say, WOW!
I've been playing with hacking on the sources for ViewerOSG. In relation to this problem, I think I have a solution (whether or not it would be possible or not, who knows).
It seems like you could make each node (is that the correct phrase) have its own detail texture. If I understand it correctly, if you made each chunk of the landscape into it's own Geode node in OSG, then each chunk could have it's own detail texture... Is this right?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You're basically right, John. Each "block" in Demeter would have its own detail texture (the entire terrain is a single node as far as OSG is concerned.) Of course, it would be expected that a single detail texture would be shared by as many blocks as possible, so for instance you might have only 10 or 12 detail textures even for thousands of blocks. This is a straightforward way to solve this problem that wouldn't require any major surgery to Demeter - just some enhancement of how it handles detail textures. This is definitely on my task list, but I can't make any promises about when I'll get to it.
As a side note on this topic, I encourage everyone to take a look at the Bungie game called Halo, which is now shipping for the X-Box. The terrain, particularly the detail textures (grass and rock nicely mixed together in different areas) is breathtaking. It's on display on most computer stores and it's well worth a look, even if you have no interest in gaming or the X-Box. Be sure to look straight down at the ground if you get a chance to play with it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
today I sucessfully created my first demeter maps
- as I took a stone texture as detail texture,
all the world is full of stones.
Is it possible to use different detail textures
at different locations of the world? Seems like
this is similar but not identical to the two
former posts about procedural texturing and multitexturing.
What I am thinking about, is the following:
- give mapc a detail texture map, that specifies
a detail texture id from 0 to N-1 for every
tile,
- and corresponding N detail textures (instead
of a single one, as at the moment).
For me this simple approach would suffice, where
the creator of a map has to check, that neighbor tiles fit seemlessly together.
It seems all worlds not completely made of
a single material would need this feature.
Did I miss something here? Is this prohibitive for any reason?
Thanks & best regards,
- Muruve
That sounds like a great approach to take, Muruve. Indeed you have not missed anything - currently there is only one detail texture for the entire world, and of course this is too constrictive for many applications' needs. I think your suggested approach is a good one. Let me think it over for a day or two and, if I can't think of any significant drawbacks, I will go ahead and implement that feature for an upcoming release.
Of course, if you would like to implement this feature and contribute it back to the community, that would work too...
Does anyone else see any problems with this approach?
- Clay
Hi,
the longer I think about using different textures,
the more unclear the whole thing is to me.
I read several of the articles about terrain rendering
mentioned in some of the other posts here (among
them Duchaineau 1997, Ulrich 2000, and Lindstrom
2001), and if I understood the general idea
right, then some of the atomic quads/triangles are
combined and instead of a bunch of quads/triangles
with a very small coverage of screen area a larger
one covering a sufficiently large area of the screen
is rendered.
But how do different textures for different
quads/triangles (at different positions) fit into
this scheme? I.e., although every atomic quad/triangle
has a texture, what texture has a larger one
representing several of the atomic ones, if they
have different textures?
I have not found anything about this problem in
the articles mentioned before. Only Duchaineau
states, that the problem of selection of level
of detail (LOD) for texture blocks has to
be solved before - but he does not give a
reference for such a solution.
Can someone point me to papers about this
problem? Or is there a common sense approach
to this?
The only thing I could make up, was the following
(asssume quads for the moment):
- associate to every texture a texture type
(e.g., stone, earth, grass, ...),
- create a/some "low level of detail" texture(s) for every
quadruple of texture types (thought of as types
of the four vertices of that texture), and
- assign every non-atomic quad a "low level of detail"
texture where the types of the vertices (i.e. for
every vertex the type of the unique inner quad
containing the vertex) correspond to the types
of the vertices of the low detail texture,
i.e. let S, E, and G be texture types and
o-o-o
|S|E|
o-o-o
|S|G|
o-o-o
be four atomic quads with textures of respective types,
that should be replaced by a single quad, then we choose
a low detail texture for the quadruple (S,E,S,G), and
for
o-o-o-o-o
|S|G|G|E|
o-o-o-o-o
|G|G|G|G|
o-o-o-o-o
|S|G|G|S|
o-o-o-o-o
we would choose a low detail texture for the quadruple
(S,E,S,S).
The last example shows the problem with this simple
approach: the inner of the non-complex quad is almost
complete made of texture G, but as G does not appear
at the vertices, the low detail texture will not
contain any G resemblances (e.g., green color).
Perhaps one could blend two different low detail
textures, one for the vertices and one for
the most frequent texture type? - Or combining
of textures should be constrained/driven by
equality of texture types also?
Does anyone know how one is expected to do this?
By the way, what kind of tesselation technique is
used in Demeter, bottom up combination of quads?
Thanks
- Muruve
Hi,
If I am understanding you correctly, and the Demeter
engine correctly, the problems you mention do not
exist: I believe Demeter only draws the detail
texture for terrain that is really near. And also,
for terrain that is very near, it will not combine
multiple quads or triangles into one ...
I.e., the points where such combinations are made
is further off, where detail is anyway not shown?
Do I understand the workings of Demeter incorrectly?
(Then this is an opportunity for me to understand
them better.)
Hugo van der Merwe
Mr. Yurga is correct about this problem; he's referring to the fact that is always one and only one detail texture for the entire terrain. What he would like to do is have different detail textures in different areas. For example, in an area where there are stones, he would like a stone texture, and in an area that is grass he would like a grass detail texture, etc.
This dovetails perfectly with the work Stephan is doing for OpenMountains, now if I would just make the time to get my latest procedural texture fixes over to him, we would all be better off...
I just finished getting all of Demeter installed (with OSG), and I must say, WOW!
I've been playing with hacking on the sources for ViewerOSG. In relation to this problem, I think I have a solution (whether or not it would be possible or not, who knows).
It seems like you could make each node (is that the correct phrase) have its own detail texture. If I understand it correctly, if you made each chunk of the landscape into it's own Geode node in OSG, then each chunk could have it's own detail texture... Is this right?
You're basically right, John. Each "block" in Demeter would have its own detail texture (the entire terrain is a single node as far as OSG is concerned.) Of course, it would be expected that a single detail texture would be shared by as many blocks as possible, so for instance you might have only 10 or 12 detail textures even for thousands of blocks. This is a straightforward way to solve this problem that wouldn't require any major surgery to Demeter - just some enhancement of how it handles detail textures. This is definitely on my task list, but I can't make any promises about when I'll get to it.
As a side note on this topic, I encourage everyone to take a look at the Bungie game called Halo, which is now shipping for the X-Box. The terrain, particularly the detail textures (grass and rock nicely mixed together in different areas) is breathtaking. It's on display on most computer stores and it's well worth a look, even if you have no interest in gaming or the X-Box. Be sure to look straight down at the ground if you get a chance to play with it.