Thanks, works great for the quick solution :-)

Am Donnerstag, 26. August 2010 14:32:19 schrieb Werner Modenbach:
> 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-openscenegra
> > >> >> ph .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-openscenegrap
> > >> > h. 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.o
> > > rg
> > 
> > _______________________________________________
> > 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