Re: [osg-users] Bug in Sequence.cpp
Hi Sebastian, On 15 August 2012 10:34, Sebastian Messerschmidt wrote: > The problem was in one of my visitors, that was setting the wrong indices. > Anyways, any objections introducing a check in the setInterval function? I have no objection to adding a check, or at least you adding a check and submitting it for review :-) Robert. ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] Bug in Sequence.cpp
Okay, The problem was in one of my visitors, that was setting the wrong indices. Anyways, any objections introducing a check in the setInterval function? cheers Sebastian Hello, I've encountered a bug in Sequence.cpp where the update function crashes (OSG 3.1.2, VisualStudio 2005) The problem is the _begin,_end in conjunction with the frameTime list. If a setInterval is called with invalid values the update function will determine an incorrect index into the _frameTime vector. Now there are two questions how to fix this. 1. As I don't know the details about the sequence implementation I'm wondering if the indices are put in correctly. It seems that most of the flt-files insert a range of 1,1 and only define one frame which later on will access the _frameTime[1]. The question here is, is the frame with number 1 really the index 1? Maybe someone can help me out here, as I don't know the exact specification for openflight. 2. I see two approaches here. First is to fix the sequence numbers and insert begin-1 and end-1 instead of the original values. Also there should be check before inserting, if the _frameNumber size is sufficient. I additionally could add a runtime check before accessing the _frameTime vector. Second option is to look into the openflight importer. Maybe the problem is here. Either the source file is not valid at this point, or the importer is using the wrong indices. So any opinions how to fix it? This is the sequence in question: Sequence { name "test" nodeMask 0x cullingActive TRUE defaultTime 1 frameTime { 0 } lastFrameTime 0 interval LOOP 1 1 duration 1 -1 mode START sync 0 clearOnStop 0 num_children 1 Geode { DataVariance STATIC name "p3813" nodeMask 0x0 cullingActive TRUE StateSet { DataVariance STATIC rendering_hint DEFAULT_BIN renderBinMode INHERIT GL_CULL_FACE ON GL_LIGHTING ON Use Material_4 Use CullFace_1 } num_drawables 1 Geometry { DataVariance STATIC useDisplayList TRUE useVertexBufferObjects FALSE PrimitiveSets 1 { DrawArrays QUADS 0 4 } VertexArray Vec3Array 4 { -2.04065 -7.8943 -5.90435 5.11647 -6.81152 -5.90435 2.69813 7.57828 -5.90601 -5.07137 5.89075 -5.90601 } NormalBinding PER_VERTEX NormalArray Vec3Array 4 { -2.50113e-005 0.000115154 1 -2.50113e-005 0.000115154 1 -2.50113e-005 0.000115154 1 -2.50113e-005 0.000115154 1 } ColorBinding OVERALL ColorArray Vec4Array 1 { 1 1 1 1 } } } } cheers Sebastian ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
[osg-users] Bug in Sequence.cpp
Hello, I've encountered a bug in Sequence.cpp where the update function crashes (OSG 3.1.2, VisualStudio 2005) The problem is the _begin,_end in conjunction with the frameTime list. If a setInterval is called with invalid values the update function will determine an incorrect index into the _frameTime vector. Now there are two questions how to fix this. 1. As I don't know the details about the sequence implementation I'm wondering if the indices are put in correctly. It seems that most of the flt-files insert a range of 1,1 and only define one frame which later on will access the _frameTime[1]. The question here is, is the frame with number 1 really the index 1? Maybe someone can help me out here, as I don't know the exact specification for openflight. 2. I see two approaches here. First is to fix the sequence numbers and insert begin-1 and end-1 instead of the original values. Also there should be check before inserting, if the _frameNumber size is sufficient. I additionally could add a runtime check before accessing the _frameTime vector. Second option is to look into the openflight importer. Maybe the problem is here. Either the source file is not valid at this point, or the importer is using the wrong indices. So any opinions how to fix it? This is the sequence in question: Sequence { name "test" nodeMask 0x cullingActive TRUE defaultTime 1 frameTime { 0 } lastFrameTime 0 interval LOOP 1 1 duration 1 -1 mode START sync 0 clearOnStop 0 num_children 1 Geode { DataVariance STATIC name "p3813" nodeMask 0x0 cullingActive TRUE StateSet { DataVariance STATIC rendering_hint DEFAULT_BIN renderBinMode INHERIT GL_CULL_FACE ON GL_LIGHTING ON Use Material_4 Use CullFace_1 } num_drawables 1 Geometry { DataVariance STATIC useDisplayList TRUE useVertexBufferObjects FALSE PrimitiveSets 1 { DrawArrays QUADS 0 4 } VertexArray Vec3Array 4 { -2.04065 -7.8943 -5.90435 5.11647 -6.81152 -5.90435 2.69813 7.57828 -5.90601 -5.07137 5.89075 -5.90601 } NormalBinding PER_VERTEX NormalArray Vec3Array 4 { -2.50113e-005 0.000115154 1 -2.50113e-005 0.000115154 1 -2.50113e-005 0.000115154 1 -2.50113e-005 0.000115154 1 } ColorBinding OVERALL ColorArray Vec4Array 1 { 1 1 1 1 } } } } cheers Sebastian ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org