Thanks Robert,

I'll follow this way. You are right, this is the way to get the quickest 
results.

- Werner -

Am Donnerstag, 26. August 2010 14:19:48 schrieb Robert Osfield:
> Hi Werner,
> 
> Possible the most simple and quickest way for you to set things up is
> to simple create a new vertex, normal and tex coords for every
> triangle corner, then use osg::DrawArrays(GL_TRIANGLES,
> total_no_of_new_vertices) for the PrimitiveSet, and BIND_PER_VERTEX
> for the binding of the normals.  Note, you'll need to create a new
> Vec3Array for the vertices form the index and orignal vertex data.
> 
> This won't be the most efficient route as it's likely to result in
> duplicate vertices but at least it should be very straight forward.
> You can make things more efficient later.
> 
> Robert.
> 
> On Thu, Aug 26, 2010 at 12:08 PM, Werner Modenbach
> 
> <[email protected]> wrote:
> > Thanks Robert, I get closer to it.
> > 
> > Just for verification:
> > 
> > If I have i.e. 10 vertexes and I get 20 calls to the callback method each
> > defining a triangle.
> > Each call gives me 3 indexes, 3 normals and 3 texcoords.
> > 
> > Right now I just push everything into the corresponding arrays and at the
> > end I call:
> >    geometry->addPrimitiveSet(new
> > osg::DrawArrays(osg::PrimitiveSet::TRIANGLES, 0,
> > osgVertexIndices->size()));
> > 
> > You say this will not work because:
> > 1) geometry->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET);
> >    expects just 1 normal for the whole thing (?)
> > 2) Texture coordinates are allways bound per vertex?
> > 
> > In this case I have to:
> > 1) initialize a normal array with Vec3(0.0, 0.0, 0.0)
> >    for each triangle callback I have to look on each vertex index , if
> > the indexes normal is 0
> >        if yes:  just set it
> >        if no:   duplicate the vertex at the end of the vertexes and
> > push_back the normal
> > 2) do something comparable on the texcoords
> > 
> > Is that your recommendation?
> > 
> > Is there any way to bind normals to the vertex indexes?
> > 
> > Thanks in advance!
> > 
> > - Werner -
> > 
> > Am Donnerstag, 26. August 2010 12:06:34 schrieb Robert Osfield:
> >> Hi Werner,
> >> 
> >> 
> >> BIND_PER_PRIMITIVE_SET will mean that you'll have one of the
> >> associated attribute (i.e. colour, normal) per osg::PrimitiveSet
> >> attached the osg::Geometry, so if you have one osg::DrawElementsUShort
> >> used for the triangles then you'll need just one of the associated
> >> attribute for it.
> >> 
> >> BIND_PER_PRIMITIVE will apply the attribute per primitive in you case
> >> per triangle.
> >> 
> >> Tex coords in the OSG are always bound per vertex, there isn't a
> >> control to alter this.
> >> 
> >> If you have a vertex array and indices for your triangles the natural
> >> thing to do would be to use a osg::DrawElementsUShort(GL_TRIANGLES)
> >> then use push_back(tri.p1) for each index on each triangle.
> >> 
> >> I would suggest binding the normals per vertex, you'll have to do this
> >> for the tex coords as well.  If a single vertex will have multiple tex
> >> coords or multiple normals associated with it due to differences in
> >> the triangles then you'll need to duplicate the vertices and remap the
> >> indices on the triangles to fit this.
> >> 
> >> Robert.
> >> 
> >> On Thu, Aug 26, 2010 at 10:38 AM, Werner Modenbach
> >> 
> >> <[email protected]> wrote:
> >> > Thank you Paul for your response.
> >> > 
> >> > Yes, you are right, the solution isn't perfect at all. But I'm
> >> > integrating some external code which is just giving me a vertex array
> >> > and a per triangle callback with vertex indexes and normal and texture
> >> > coords.
> >> > 
> >> > And further more I need some screenshots very urgently for a customer
> >> > presentation.
> >> > 
> >> > The performance improvement has to wait :-(
> >> > 
> >> > So I try to analyse why it's not working. And I detected something I
> >> > don't understand.
> >> > In my opinion it should give the same result having:
> >> > 1) one normal per triangle an binding PER_PRIMITIVE
> >> > 2) 3 times the same normal and binding PER_PRIMITIVE_SET
> >> > 
> >> > But it doesn't. So I'm confused.
> >> > 
> >> > Thanks for further hints.
> >> > 
> >> > - Werner -
> >> > 
> >> > Am Mittwoch, 25. August 2010 22:41:14 schrieb Paul Martz:
> >> >> Werner Modenbach wrote:
> >> >> > Maybe someone can give me some explanation on my stupid little
> >> >> > problem.
> >> >> > 
> >> >> > I have a geometry being composed of TRIANGLES.
> >> >> > I have a vertex-array, a verted-index-array and a normal-array
> >> >> > assigned to my geometry.
> >> >> 
> >> >> Off-topic: Do you need to use the vertex-index-array? It is
> >> >> deprecated: /** deprecated - forces OpenGL slow path, just kept for
> >> >> backwards compatibility.*/
> >> >>          void setVertexIndices(IndexArray* array);
> >> >> 
> >> >> > 3 indexes and 3 normals per Triangle.
> >> >> > Normal binding is set to BIND_PER_PRIMITIVE_SET.
> >> >> > 
> >> >> > Unfortunately the rendering shows the geometry flat in curious dark
> >> >> > colors and some unexpected light behaviour.
> >> >> > For analysis purpose I set the normal binding to BIND_PER_PRIMITIVE
> >> >> > and pushed just 1 normal per TRIANGLE.
> >> >> > Everything looks good except I see the triangles and the geometry
> >> >> > isn't smooth.
> >> >> > The next test is pushing the same normal vector 3 times and setting
> >> >> > the binding back to BIND_PER_PRIMITIVE_SET.
> >> >> > In my understanding this should give the same optical result as
> >> >> > before. Unfortunately it doesn't and everything is dark again.
> >> >> > 
> >> >> > I guess, I misunderstand something with the normal bindings.
> >> >> > 
> >> >> > Any hint is highly appreciated. Thanks in advance
> >> >> 
> >> >> I'm not sure why you don't use BIND_PER_VERTEX, as you stated above
> >> >> that your normal array contains 3 normals per triangle, so you have
> >> >> one normal per vertex, right?
> >> >> 
> >> >> BIND_PER_PRIMITIVE would result in flat shading (only one normal used
> >> >> for each triangle -- which, by the way, also forces OpenGL down the
> >> >> slow path), and BIND_PER_PRIMITIVE_SET would be even more granular:
> >> >> one normal used for each PrimitiveSet you add to the Geometry. This
> >> >> would make all triangles in the PrimitiveSet either uniformly dark
> >> >> or uniformly lit, depending on the direction of the one normal used
> >> >> for the whole group.
> >> >> 
> >> >> For analysis purposes, I suggest using the normals pseudoloader:
> >> >>    > osgviewer dumptruck.osg.normals
> >> >> 
> >> >> Hope that helps,
> >> >>     -Paul
> >> >> 
> >> >> _______________________________________________
> >> >> osg-users mailing list
> >> >> [email protected]
> >> >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph
> >> >> .or g
> >> > 
> >> > --
> >> > TEXION Software Solutions
> >> > 
> >> > TEXION GmbH -  Rotter Bruch 26a  -  D 52068 Aachen - HRB 14999 Aachen
> >> > Fon: +49 241 475757-0, Fax: +49 241 475757-29, web:
> >> > http://www.texion.eu
> >> > 
> >> > Geschäftsführer/Managing Director: Werner Modenbach
> >> > _______________________________________________
> >> > osg-users mailing list
> >> > [email protected]
> >> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.
> >> > org
> >> 
> >> _______________________________________________
> >> osg-users mailing list
> >> [email protected]
> >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
> >> g
> > 
> > --
> > TEXION Software Solutions
> > 
> > TEXION GmbH -  Rotter Bruch 26a  -  D 52068 Aachen - HRB 14999 Aachen
> > Fon: +49 241 475757-0, Fax: +49 241 475757-29, web: http://www.texion.eu
> > 
> > Geschäftsführer/Managing Director: Werner Modenbach
> > _______________________________________________
> > osg-users mailing list
> > [email protected]
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> 
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

-- 
TEXION Software Solutions

TEXION GmbH -  Rotter Bruch 26a  -  D 52068 Aachen - HRB 14999 Aachen
Fon: +49 241 475757-0, Fax: +49 241 475757-29, web: http://www.texion.eu

Geschäftsführer/Managing Director: Werner Modenbach
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to