<div dir="ltr">I dunno man, your code is making my head explode. I don't think Geode HAS an addChild method, so I don't even know why what you're doing would compile.<div><br></div><div>I don't think I can help any further. I'm missing something or you are.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 20, 2018 at 5:46 PM Diego Mancilla <<a href="mailto:dmancillac@gmail.com">dmancillac@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
The suggestion of Chris solve the problem.<br>
<br>
The actual code:<br>
<br>
<br>
Code:<br>
osg::Node* lines = osgDB::readNodeFile("lines.dxf");<br>
osg::Geode* geode = new osg::Geode;<br>
<br>
ColorVisitor newColor;<br>
newColor.setColor( 1.0f, 0.0f, 0.0f );<br>
topography->accept(newColor);<br>
<br>
geode->addChild(lines); <br>
_mViewer->setSceneData(geode);<br>
_mViewer->realize();<br>
<br>
<br>
<br>
<br>
Where ColorVisitor is a derived class from osg::NodeVistor:<br>
<br>
<br>
Code:<br>
<br>
<br>
class ColorVisitor : public osg::NodeVisitor<br>
{<br>
public:<br>
ColorVisitor();<br>
ColorVisitor(const osg::Vec4 &color);<br>
virtual ~ColorVisitor();<br>
virtual void ColorVisitor::apply(osg::Node &node);<br>
virtual void ColorVisitor::apply(osg::Geode &geode);<br>
virtual void ColorVisitor::setColor(const float r, const float g, const float b, const float a = 1.0f);<br>
virtual void ColorVisitor::setColor(const osg::Vec4 &color);<br>
<br>
private:<br>
osg::Vec4 m_color;<br>
osg::ref_ptr< osg::Vec4Array > m_colorArrays;<br>
<br>
<br>
<br>
and the implementation:<br>
<br>
<br>
Code:<br>
<br>
#include "ColorVisitor.h"<br>
<br>
ColorVisitor::ColorVisitor(): osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) {<br>
m_color.set(1.0, 1.0, 1.0, 1.0);<br>
m_colorArrays = new osg::Vec4Array;<br>
m_colorArrays->push_back(m_color);<br>
};<br>
<br>
ColorVisitor::ColorVisitor(const osg::Vec4 &color): osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN){<br>
m_color = color;<br>
m_colorArrays = new osg::Vec4Array;<br>
m_colorArrays->push_back(m_color);<br>
};<br>
<br>
ColorVisitor::~ColorVisitor(){};<br>
<br>
void ColorVisitor::apply(osg::Node &node) {<br>
traverse(node);<br>
};<br>
<br>
void ColorVisitor::apply(osg::Geode &geode) {<br>
osg::StateSet *state = NULL;<br>
unsigned int vertNum = 0;<br>
unsigned int numGeoms = geode.getNumDrawables();<br>
<br>
for (unsigned int geodeIdx = 0; geodeIdx < numGeoms; geodeIdx++) {<br>
if (curGeom) {<br>
osg::Vec4Array *colorArrays = dynamic_cast<osg::Vec4Array *>(curGeom->getColorArray());<br>
if (colorArrays) {<br>
for (unsigned int i = 0; i < colorArrays->size(); i++) {<br>
osg::Vec4 *color = &colorArrays->operator [](i);<br>
color->set(m_color._v[0], m_color._v[1], m_color._v[2], m_color._v[3]);<br>
}<br>
}<br>
else {<br>
curGeom->setColorArray(m_colorArrays.get());<br>
curGeom->setColorBinding(osg::Geometry::BIND_OVERALL);<br>
}<br>
}<br>
}<br>
};<br>
<br>
void ColorVisitor::setColor(const float r, const float g, const float b, const float a) {<br>
<br>
osg::Vec4 *c = &m_colorArrays->operator [](0);<br>
m_color.set(r, g, b, a);<br>
*c = m_color;<br>
<br>
};<br>
<br>
void ColorVisitor::setColor(const osg::Vec4 &color) {<br>
<br>
osg::Vec4 *c = &m_colorArrays->operator [](0);<br>
m_color = color;<br>
*c = m_color;<br>
};<br>
<br>
<br>
<br>
The ColorVistor class I took it from Gordon Tomlison's OSG Samples (cant post links yet)<br>
<br>
One thing stills bother me. If I dont use the line <br>
Code:<br>
geode->addChild(lines)<br>
<br>
 and instead I pass directly the node to the viewer<br>
<br>
Code:<br>
_mViewer->setSceneData(lines);<br>
<br>
 the application crashes. Can anyone tell why this is happening? <br>
<br>
Thank you!<br>
PS: Sorry I coudnt get the code blocks indented... :(<br>
<br>
Cheers,<br>
<br>
------------------<br>
Read this topic online here:<br>
<a href="http://forum.openscenegraph.org/viewtopic.php?p=75219#75219" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=75219#75219</a><br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div style="text-align:center">Chris 'Xenon' Hanson, omo sanza lettere. Xenon@AlphaPixel.com <a href="http://www.alphapixel.com/" target="_blank">http://www.alphapixel.com/</a></div><div style="text-align:center">Training • Consulting • Contracting</div><div style="text-align:center">3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL • OpenGL ES 1 • OpenGL ES 2 • OpenCL</div><div style="text-align:center"><span style="font-size:12.8000001907349px">Legal/IP •</span><span style="font-size:12.8000001907349px"> </span><span style="font-size:12.8000001907349px">Forensics •</span><span style="font-size:12.8000001907349px"> </span>Imaging <span style="font-size:12.8px">•</span><span style="font-size:12.8px"> </span><span style="font-size:12.8px">UAVs </span><span style="font-size:12.8px">• GIS • GPS • osgEarth • Terrain • Telemetry • Cryptography • LIDAR • Embedded • Mobile • iPhone/iPad/iOS • Android</span></div><div style="text-align:center"><a href="https://twitter.com/alphapixel" target="_blank">@alphapixel</a> <a href="http://facebook.com/alphapixel" target="_blank">facebook.com/alphapixel</a> (775) 623-PIXL [7495]<br></div></div></div></div></div></div>