Hi Christian,

Thanks for your answer.

Indeed using 4 faces solved the situation, now I've a cube fully textured. I've 
also change from triangles to quads. I don't know if I've eared anything.


I add the code below (it may help someone else).

Code:

osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array;
osg::ref_ptr<osg::Vec2Array> texcoords = new osg::Vec2Array();
osg::ref_ptr<osg::Vec3Array> normals = new osg::Vec3Array;

// ------ top
vertices->push_back(osg::Vec3(0.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 1.0f));
vertices->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));

normals->push_back(osg::Vec3(0.0f,-1.0f, 0.0f));
normals->push_back(osg::Vec3(0.0f,-1.0f, 0.0f));
normals->push_back(osg::Vec3(0.0f,-1.0f, 0.0f));
normals->push_back(osg::Vec3(0.0f,-1.0f, 0.0f));

texcoords->push_back( osg::Vec2(0.0f, 0.0f) ); 
texcoords->push_back( osg::Vec2(0.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 0.0f) ); 


// ------ top
vertices->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 1.0f));
vertices->push_back(osg::Vec3(1.0f, 1.0f, 1.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 1.0f));

normals->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));
normals->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));
normals->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));
normals->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));

texcoords->push_back( osg::Vec2(0.0f, 0.0f) ); 
texcoords->push_back( osg::Vec2(0.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 0.0f) ); 


// ------ back
vertices->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 1.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 1.0f, 1.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 1.0f));

normals->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
normals->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
normals->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
normals->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));

texcoords->push_back( osg::Vec2(0.0f, 0.0f) ); 
texcoords->push_back( osg::Vec2(0.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 0.0f) ); 


// ------ Bottom
vertices->push_back(osg::Vec3(0.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 1.0f, 0.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));

normals->push_back(osg::Vec3(0.0f, 0.0f, -1.0f));
normals->push_back(osg::Vec3(0.0f, 0.0f, -1.0f));
normals->push_back(osg::Vec3(0.0f, 0.0f, -1.0f));
normals->push_back(osg::Vec3(0.0f, 0.0f, -1.0f));

texcoords->push_back( osg::Vec2(0.0f, 0.0f) ); 
texcoords->push_back( osg::Vec2(0.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 0.0f) ); 


// ------ Left
vertices->push_back(osg::Vec3(0.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 1.0f));
vertices->push_back(osg::Vec3(0.0f, 0.0f, 1.0f));

normals->push_back(osg::Vec3(-1.0f, 0.0f, 0.0f));
normals->push_back(osg::Vec3(-1.0f, 0.0f, 0.0f));
normals->push_back(osg::Vec3(-1.0f, 0.0f, 0.0f));
normals->push_back(osg::Vec3(-1.0f, 0.0f, 0.0f));

texcoords->push_back( osg::Vec2(0.0f, 0.0f) ); 
texcoords->push_back( osg::Vec2(0.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 0.0f) ); 


// ------ Right
vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 1.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 1.0f, 1.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 1.0f));

normals->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
normals->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
normals->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
normals->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));

texcoords->push_back( osg::Vec2(0.0f, 0.0f) ); 
texcoords->push_back( osg::Vec2(0.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 1.0f) ); 
texcoords->push_back( osg::Vec2(1.0f, 0.0f) ); 




osg::ref_ptr<osg::Geometry> geom = new osg::Geometry;
geom->setVertexArray(vertices);
geom->setNormalArray(normals, osg::Array::Binding::BIND_PER_VERTEX);
geom->addPrimitiveSet( new osg::DrawArrays(GL_QUADS, 0, 24));
geom->setTexCoordArray(0, texcoords.get());
osgUtil::SmoothingVisitor::smooth(*geom);


geom->setTexCoordArray(0, texcoords.get(), 
osg::Array::Binding::BIND_PER_VERTEX);


osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
osg::ref_ptr<osg::Image> image = 
osgDB::readImageFile("/usr/home/florian/Documents/Jeux/futur/stone_3_2048x2048.jpg");
texture->setImage(image);
texture->setUnRefImageDataAfterApply(true); 





Best,
Florian

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=66787#66787




Attachments: 
http://forum.openscenegraph.org//files/screenshot_from_2016_04_11_21_25_21_100.png


_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to