Re: [osg-users] second newbie question reiterated withdrawLi (UNCLASSIFIED)
Classification: UNCLASSIFIED Caveats: NONE If i remove the matrix transform that performs the rotation for the the right triangle, i get the correct color on my triangle. i don't understand why. help. -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users- boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 11:35 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLin(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE I thought that this code in drawLines sets the color. The strange thing is that the first triangle that I draw is the wrong color and the second triangle is the correct color and they are both drawn from the same geode. i'm totally confused. // pass the created vertex array to the points geometry object. linesGeom-setVertexArray(vertices); // set the colors as before, plus using the above osg::Vec4Array* colors = new osg::Vec4Array; colors-push_back(osg::Vec4( colorVec[colorIndex][0], colorVec[colorIndex][1], colorVec[colorIndex][2], colorVec[colorIndex][3])); linesGeom-setColorArray(colors); linesGeom-setColorBinding(osg::Geometry::BIND_OVERALL); -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users- boun...@lists.openscenegraph.org] On Behalf Of Tomlinson, Gordon Sent: Thursday, March 12, 2009 11:11 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLine(UNCLASSIFIED) You do not show how you set the color and material on the triangles If this is not specified then you will pickup what ever the last color and/or material that was used by Opengl Gordon Product Manager 3d __ Gordon Tomlinson Email : gtomlinson @ overwatch.textron.com __ -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 12:04 PM To: OpenSceneGraph Users Subject: [osg-users] second newbie question reiterated with drawLine(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE Any insight would be welcome. So I'm drawing several triangles on my scene. here is the code that draws the first 2. I'm reusing the first same geode. The strange thing is that the 'right triangle' is a different color (black) than the 'left triangle' (light green) I'm actually drawing 2 others and they are black too. I need them to be green. Can anyone tell me what I'm doing wrong? It makes no sense to me. Danny osg::Vec3Array* tri = new osg::Vec3Array; tri-push_back(osg::Vec3(0.0f, -0.1f, depth)); tri-push_back(osg::Vec3(0.1f, 0.0f, depth)); tri-push_back(osg::Vec3(0.0f, 0.1f, depth)); osg::ref_ptrosg::Geode triangle = new osg::Geode(); triangle-addDrawable( drawLines( tri, 0 ) ); // right triangle { osg::ref_ptrosg::MatrixTransform translate = new osg::MatrixTransform; osg::Matrix tran_mat = osg::Matrix::translate( hud_aspect,0.0f, 0.0f ); translate-setMatrix( tran_mat ); osg::ref_ptrosg::MatrixTransform rotate = new osg::MatrixTransform; osg::Matrix rot_mat = osg::Matrix::rotate( M_PI, 0.0f, 0.0f, 1.0f); rotate-setMatrix( rot_mat ); camera-addChild(translate.get()); translate-addChild( rotate.get() ); rotate-addChild( triangle.get() );; } // left triangle { osg::Matrix m; osg::ref_ptrosg::MatrixTransform mt = new osg::MatrixTransform; m.makeTranslate( -hud_aspect, 0.0f, 0.0f ); mt-setMatrix( m ); camera-addChild(mt.get()); mt-addChild( triangle.get() );. } // create LINES osg::Geometry * drawLines( osg::Vec3Array * vertices, int colorIndex ) { // create Geometry object to store all the vertices and lines primitive. osg::Geometry* linesGeom = new osg::Geometry(); // pass the created vertex array to the points geometry object. linesGeom-setVertexArray(vertices); // set the colors as before, plus using the above osg::Vec4Array* colors = new osg::Vec4Array; colors-push_back(osg::Vec4( colorVec[colorIndex][0], colorVec[colorIndex][1], colorVec[colorIndex][2], colorVec[colorIndex][3])); linesGeom-setColorArray(colors); linesGeom-setColorBinding(osg::Geometry::BIND_OVERALL); // set the normal in the same way color. osg::Vec3Array* normals = new osg::Vec3Array; normals-push_back(osg::Vec3(0.0f,-1.0f,0.0f));
Re: [osg-users] second newbie question reiterated withdrawLi(UNCLASSIFIED)
Are you rendering with lighting enabled or disabled? I notice that along with setting the color array, you are setting a normal array in your code below. Normally (no pun intended) you supply a normal array if lighting is enabled... -Shayne -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 10:40 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLi(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE If i remove the matrix transform that performs the rotation for the the right triangle, i get the correct color on my triangle. i don't understand why. help. -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users- boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 11:35 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLin(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE I thought that this code in drawLines sets the color. The strange thing is that the first triangle that I draw is the wrong color and the second triangle is the correct color and they are both drawn from the same geode. i'm totally confused. // pass the created vertex array to the points geometry object. linesGeom-setVertexArray(vertices); // set the colors as before, plus using the above osg::Vec4Array* colors = new osg::Vec4Array; colors-push_back(osg::Vec4( colorVec[colorIndex][0], colorVec[colorIndex][1], colorVec[colorIndex][2], colorVec[colorIndex][3])); linesGeom-setColorArray(colors); linesGeom-setColorBinding(osg::Geometry::BIND_OVERALL); -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users- boun...@lists.openscenegraph.org] On Behalf Of Tomlinson, Gordon Sent: Thursday, March 12, 2009 11:11 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLine(UNCLASSIFIED) You do not show how you set the color and material on the triangles If this is not specified then you will pickup what ever the last color and/or material that was used by Opengl Gordon Product Manager 3d __ Gordon Tomlinson Email : gtomlinson @ overwatch.textron.com __ -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 12:04 PM To: OpenSceneGraph Users Subject: [osg-users] second newbie question reiterated with drawLine(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE Any insight would be welcome. So I'm drawing several triangles on my scene. here is the code that draws the first 2. I'm reusing the first same geode. The strange thing is that the 'right triangle' is a different color (black) than the 'left triangle' (light green) I'm actually drawing 2 others and they are black too. I need them to be green. Can anyone tell me what I'm doing wrong? It makes no sense to me. Danny osg::Vec3Array* tri = new osg::Vec3Array; tri-push_back(osg::Vec3(0.0f, -0.1f, depth)); tri-push_back(osg::Vec3(0.1f, 0.0f, depth)); tri-push_back(osg::Vec3(0.0f, 0.1f, depth)); osg::ref_ptrosg::Geode triangle = new osg::Geode(); triangle-addDrawable( drawLines( tri, 0 ) ); // right triangle { osg::ref_ptrosg::MatrixTransform translate = new osg::MatrixTransform; osg::Matrix tran_mat = osg::Matrix::translate( hud_aspect,0.0f, 0.0f ); translate-setMatrix( tran_mat ); osg::ref_ptrosg::MatrixTransform rotate = new osg::MatrixTransform; osg::Matrix rot_mat = osg::Matrix::rotate( M_PI, 0.0f, 0.0f, 1.0f); rotate-setMatrix( rot_mat ); camera-addChild(translate.get()); translate-addChild( rotate.get() ); rotate-addChild( triangle.get() );; } // left triangle { osg::Matrix m; osg::ref_ptrosg::MatrixTransform mt = new osg::MatrixTransform; m.makeTranslate( -hud_aspect, 0.0f, 0.0f ); mt-setMatrix( m ); camera-addChild(mt.get()); mt-addChild( triangle.get() );. } // create LINES osg::Geometry * drawLines( osg::Vec3Array * vertices, int colorIndex ) { // create Geometry object to store all the vertices and lines primitive. osg::Geometry* linesGeom = new osg::Geometry(); // pass the created vertex array to the points geometry object
Re: [osg-users] second newbie question reiterated withdrawLi(UNCLASSIFIED)
Another thought...if you do have lighting enabled, your lighting normals on the black triangle could be facing the opposite direction from the light source which might explain the black color. It might also explain why when you fiddle with the matrix transform, the triangle color shows up (i.e. the triangle is oriented towards the light source)... -Shayne -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 10:40 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLi(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE If i remove the matrix transform that performs the rotation for the the right triangle, i get the correct color on my triangle. i don't understand why. help. -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users- boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 11:35 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLin(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE I thought that this code in drawLines sets the color. The strange thing is that the first triangle that I draw is the wrong color and the second triangle is the correct color and they are both drawn from the same geode. i'm totally confused. // pass the created vertex array to the points geometry object. linesGeom-setVertexArray(vertices); // set the colors as before, plus using the above osg::Vec4Array* colors = new osg::Vec4Array; colors-push_back(osg::Vec4( colorVec[colorIndex][0], colorVec[colorIndex][1], colorVec[colorIndex][2], colorVec[colorIndex][3])); linesGeom-setColorArray(colors); linesGeom-setColorBinding(osg::Geometry::BIND_OVERALL); -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users- boun...@lists.openscenegraph.org] On Behalf Of Tomlinson, Gordon Sent: Thursday, March 12, 2009 11:11 AM To: OpenSceneGraph Users Subject: Re: [osg-users] second newbie question reiterated withdrawLine(UNCLASSIFIED) You do not show how you set the color and material on the triangles If this is not specified then you will pickup what ever the last color and/or material that was used by Opengl Gordon Product Manager 3d __ Gordon Tomlinson Email : gtomlinson @ overwatch.textron.com __ -Original Message- From: osg-users-boun...@lists.openscenegraph.org [mailto:osg-users-boun...@lists.openscenegraph.org] On Behalf Of Konkle, Daniel T AMRDEC/Dynetics Sent: Thursday, March 12, 2009 12:04 PM To: OpenSceneGraph Users Subject: [osg-users] second newbie question reiterated with drawLine(UNCLASSIFIED) Classification: UNCLASSIFIED Caveats: NONE Any insight would be welcome. So I'm drawing several triangles on my scene. here is the code that draws the first 2. I'm reusing the first same geode. The strange thing is that the 'right triangle' is a different color (black) than the 'left triangle' (light green) I'm actually drawing 2 others and they are black too. I need them to be green. Can anyone tell me what I'm doing wrong? It makes no sense to me. Danny osg::Vec3Array* tri = new osg::Vec3Array; tri-push_back(osg::Vec3(0.0f, -0.1f, depth)); tri-push_back(osg::Vec3(0.1f, 0.0f, depth)); tri-push_back(osg::Vec3(0.0f, 0.1f, depth)); osg::ref_ptrosg::Geode triangle = new osg::Geode(); triangle-addDrawable( drawLines( tri, 0 ) ); // right triangle { osg::ref_ptrosg::MatrixTransform translate = new osg::MatrixTransform; osg::Matrix tran_mat = osg::Matrix::translate( hud_aspect,0.0f, 0.0f ); translate-setMatrix( tran_mat ); osg::ref_ptrosg::MatrixTransform rotate = new osg::MatrixTransform; osg::Matrix rot_mat = osg::Matrix::rotate( M_PI, 0.0f, 0.0f, 1.0f); rotate-setMatrix( rot_mat ); camera-addChild(translate.get()); translate-addChild( rotate.get() ); rotate-addChild( triangle.get() );; } // left triangle { osg::Matrix m; osg::ref_ptrosg::MatrixTransform mt = new osg::MatrixTransform; m.makeTranslate( -hud_aspect, 0.0f, 0.0f ); mt-setMatrix( m ); camera-addChild(mt.get()); mt-addChild( triangle.get() );. } // create LINES osg::Geometry * drawLines( osg::Vec3Array * vertices, int colorIndex ) { // create Geometry object to store all the vertices and lines primitive. osg::Geometry