I'm hoping that someone can help me with a weird problem I'm having with an
openflight terrain I have.
It seems that when I mesh my terrain (with Multigen Creator 2.5.1) I can't see
it anyore. Note that the problem only occurs when I disable lighting (i.e
GL_LIGHTING). However, when I un-mesh the terrain (seperate faces) then it
works correctly, regarless of the lighting state.
I converted the *.FLT to *.OSG so that I can look at the different between the
meshed and un-meshed version. What I discovered was that the color array in the
meshed version contained invalid RGBA components - they do not correspond to
the color set within Creator. The color should be (1,1,1,1) but I'm getting
(1,0,1,0). So it's normal that I don't see the terrain because the alpha is 0.
The green component also 0, which I can't understand as well.
For example:
Code:
ColorBinding PER_VERTEX
ColorArray Vec4Array 9
{
1 0 1 0
1 0 1 0
1 0 1 0
1 0 1 0
1 0 1 0
1 0 1 0
1 0 1 0
1 0 1 0
1 0 1 0
}
The reason why I want to use the meshed version of the terrain is to improve
rendering performance.
We've isolated the problem in the LocalVertexPool::readRecord() function in the
openflight plugin. It seems that the <alphaIndex> value extracted from the FLT
is incorrect (see snipit below).
Code:
virtual void readRecord(RecordInputStream& in, Document& document)
{
[...]
if (mask & HAS_COLOR_INDEX)
{
uint32 alphaIndex = in.readUInt32(); [b]// << Bad
alphaIndex.[/b]
int index = alphaIndex & 0x00ffffff;
uint8 alpha = alphaIndex >> 24;
osg::Vec4 color = document.getColorPool()->getColor(index);
color.a() = (float)alpha/255;
vertex.setColor(color);
if (!color.valid())
{
osg::notify(osg::NOTICE)<<"Warning: data error detected in
LocalVertexPool::readRecord color="<<color.r()<<" "<<color.g()<<"
"<<color.b()<<" "<<color.a()<<std::endl;
}
}
[...]
}
Obviously, the meshed FLT file could ne invalid, right? So I used a different
application (an old 3D Explorer app) to load the meshed version and it works
correctly.
I can't exaplin it.
I've attached a snipit of the terrain for you to look at. It contains the
following files:
.\gr01.rgb
.\gr01.rgb .attr
.\small_faces.flt : unmeshed version
.\small_faces.osg
.\small_mesh.flt : meshed version
.\small_mesh.osg
Can anyone shed some light of this problem?
Cheers,
Guy
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=25823#25823
Attachments:
http://forum.openscenegraph.org//files/smallflt_129.zip
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org