Archivos de Tags: 3.0.0 @es

osgART 2.0 RC3 con OpenSceneGraph 2.9.7 o posterior (incluyendo 3.0.0)

Hace bastante tiempo tuve problemas para usar osgART 2.0 RC3 con OpenSceneGraph 2.9.7 o cualquier versión posterior, no conseguía que el video de la cámara web se mostrara en el fondo así que siempre me limitaba a usar OpenSceneGraph 2.9.6. Hoy me he dado cuenta de que mi aplicación osgART podía funcionar con OpenSceneGraph 2.9.7 o superior (la versión actual 3.0.0 también funciona!), pero como siempre me quedaba en la 2.9.6 no sabía que había solucionado el problema!

NOTA: Si quieres instalar OpenSceneGraph 3.0.0 en Ubuntu 11.10 o Ubuntu 12.04 tendrás que aplicar los parches que he creado y subido a mi repositorio de github.

La clave del problema esta que al configurar el osgART::VideoGeode para el fondo se puede usar TEXTURE_2D o TEXTURE_RECTANGLE. Si usas TEXTURE_RECTANGLE funcionará en versiones nuevas de OpenSceneGraph. Se puede ver un ejemplo en la línea 40 de “examples/osgartsimple/osgartsimple.cpp” en el código fuente de osgART 2.0 RC3:

osg::Group* createImageBackground(osg::Image* video) {
	osgART::VideoLayer* _layer = new osgART::VideoLayer();
	_layer->setSize(*video);
	osgART::VideoGeode* _geode = new osgART::VideoGeode(osgART::VideoGeode::USE_TEXTURE_2D, video);
	addTexturedQuad(*_geode,video->s(),video->t());
	_layer->addChild(_geode);
	return _layer;
}

Si tienes instalado OpenSceneGraph 2.9.7 o superior con osgART 2.0 RC3 tal cual viene el código fuente, al ejecutar este ejemplo desde “/usr/local/bin/osgartsimple” verás algo como esto al mostrar el típico patrón “Hiro” a la cámara:

Si modificas el código anterior a esto:

osg::Group* createImageBackground(osg::Image* video) {
	osgART::VideoLayer* _layer = new osgART::VideoLayer();
	_layer->setSize(*video);
	osgART::VideoGeode* _geode = new osgART::VideoGeode(osgART::VideoGeode::USE_TEXTURE_RECTANGLE, video);
	addTexturedQuad(*_geode,video->s(),video->t());
	_layer->addChild(_geode);
	return _layer;
}

Y luego compilas e instalas osgART 2.0 RC3 otra vez, “/usr/local/bin/osgartsimple” funcionará sin problemas.