hybr wrote:
> Hi Almir,
> 
> I feel like your best bet in this situation is save your scene on .osg (text) 
> format and watch what's going on in text editor, and so with your original 
> model. You can see what changes are and if they correct.
> 
> Cheers,
> Sergey.
> 
> 17.02.2011, 05:43, "Almir Brazil" <>:
> 
> > Hi hybr!
> > 
> > I can feel that I'm getting close.
> > 
> > I've done all what you say..  the project compile sucessfully, but I'm 
> > getting a black texture replacing my original static texture.
> > I tried all first 8 texture units, as you say.
> > 
> > I know that the imagestream is playing, because I can see the 'resize' 
> > messages in console.
> > 
> > Did I forget something?
> > 
> > (code attached below).
> > 
> > Thanks,
> > Almir
> > 
> > ------------------
> > Read this topic online here:
> > http://forum.openscenegraph.org/viewtopic.php?p=36755#36755
> > 
> > /* -*-c++-*-
> >  *
> >  * osgART - ARToolKit for OpenSceneGraph
> >  * Copyright (C) 2005-2008 Human Interface Technology Laboratory New Zealand
> >  *
> >  * This file is part of osgART 2.0
> >  *
> >  * osgART 2.0 is free software: you can redistribute it and/or modify
> >  * it under the terms of the GNU General Public License as published by
> >  * the Free Software Foundation, either version 3 of the License, or
> >  * (at your option) any later version.
> >  *
> >  * osgART 2.0 is distributed in the hope that it will be useful,
> >  * but WITHOUT ANY WARRANTY; without even the implied warranty of
> >  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >  * GNU General Public License for more details.
> >  *
> >  * You should have received a copy of the GNU General Public License
> >  * along with osgART 2.0.  If not, see <http://www.gnu.org/licenses/>.
> >  *
> >  */
> > 
> > #include <osgART/Foundation>
> > #include <osgART/VideoLayer>
> > #include <osgART/PluginManager>
> > #include <osgART/VideoGeode>
> > #include <osgART/Utils>
> > #include <osgART/GeometryUtils>
> > #include <osgART/MarkerCallback>
> > #include <osgART/TransformFilterCallback>
> > 
> > #include <osgViewer/Viewer>
> > #include <osgViewer/ViewerEventHandlers>
> > 
> > #include <osgDB/FileUtils>
> > 
> > #include <osgDB/WriteFile>
> > #include <osgDB/ReadFile>
> > #include <osgDB/FileNameUtils>
> > #include <osgDB/Registry>
> > #include <osg/NodeVisitor>
> > 
> > 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;
> > }
> > 
> > class GetDrawableByNameVisitor : public osg::NodeVisitor {
> > public:
> >         GetDrawableByNameVisitor(const std::string &name):
> >           osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN), 
> > m_name(name), result(0)
> >         {
> >                 setNodeMaskOverride(0xffffffff);
> >                 setTraversalMask(0xffffffff);
> >         }
> > 
> >           using osg::NodeVisitor::apply;
> > 
> >           void apply(osg::Geode& geode)
> >         {
> >                 for (unsigned int i = 0; i <geode.getNumDrawables(); i++)
> >                 {
> >                         osg::Drawable* dr = geode.getDrawable(i);
> >                         if (dr->getName()==m_name)
> >                         result = dr;
> >                 }
> >         }
> > osg::Drawable* getResult(){return result;}
> > 
> > private:
> >         std::string m_name;
> >         osg::Drawable* result;
> > };
> > 
> > int main(int argc, char* argv[])  {
> > 
> >         // create a root node
> >         osg::ref_ptr<osg::Group> root = new osg::Group;
> > 
> >         osgViewer::Viewer viewer;
> > 
> >         // attach root node to the viewer
> >         viewer.setSceneData(root.get());
> > 
> >         // add relevant handlers to the viewer
> >         viewer.addEventHandler(new osgViewer::StatsHandler);
> >         viewer.addEventHandler(new osgViewer::WindowSizeHandler);
> >         viewer.addEventHandler(new osgViewer::ThreadingHandler);
> >         viewer.addEventHandler(new osgViewer::HelpHandler);
> > 
> >         // preload the video and tracker
> >         int _video_id = 
> > osgART::PluginManager::instance()->load("osgart_video_artoolkit2");
> >         int _tracker_id = 
> > osgART::PluginManager::instance()->load("osgart_tracker_artoolkit2");
> > 
> >         // Load a video plugin.
> >         osg::ref_ptr<osgART::Video> video =
> >                 dynamic_cast<osgART::Video*>(osgART::PluginManager::instance()->get(_video_id));
> > 
> >         // check if an instance of the video stream could be started
> >         if (!video.valid())
> >         {
> >                 // Without video an AR application can not work. Quit if 
> > none found.
> >                 osg::notify(osg::FATAL) << "Could not initialize video 
> > plugin!" << std::endl;
> >                 exit(-1);
> >         }
> > 
> >         // Open the video. This will not yet start the video stream but will
> >         // get information about the format of the video which is essential
> >         // for the connected tracker
> >         video->open();
> > 
> >         osg::ref_ptr<osgART::Tracker> tracker =
> >                 dynamic_cast<osgART::Tracker*>(osgART::PluginManager::instance()->get(_tracker_id));
> > 
> >         if (!tracker.valid())
> >         {
> >                 // Without tracker an AR application can not work. Quit if 
> > none found.
> >                 osg::notify(osg::FATAL) << "Could not initialize tracker 
> > plugin!" << std::endl;
> >                 exit(-1);
> >         }
> > 
> >         // get the tracker calibration object
> >         osg::ref_ptr<osgART::Calibration> calibration = 
> > tracker->getOrCreateCalibration();
> > 
> >         // load a calibration file
> >         if (!calibration->load(std::string("data/camera_para.dat")))
> >         {
> > 
> >                 // the calibration file was non-existing or couldnt be 
> > loaded
> >                 osg::notify(osg::FATAL) << "Non existing or incompatible 
> > calibration file" << std::endl;
> >                 exit(-1);
> >         }
> > 
> >         // set the image source for the tracker
> >         tracker->setImage(video.get());
> > 
> >         osgART::TrackerCallback::addOrSet(root.get(), tracker.get());
> > 
> >         osg::ref_ptr<osgART::Marker> markerA = 
> > tracker->addMarker("single;karsten_a.patt;70;0;0");
> > 
> >         if (!markerA.valid())
> >         {
> >                 // Without marker an AR application can not work. Quit if 
> > none found.
> >                 osg::notify(osg::FATAL) << "Could not add marker!" << 
> > std::endl;
> >                 exit(-1);
> >         }
> > 
> >         markerA->setActive(true);
> > 
> >         osg::ref_ptr<osg::MatrixTransform> arTransformA = new 
> > osg::MatrixTransform();
> >         osgART::attachDefaultEventCallbacks(arTransformA.get(), 
> > markerA.get());
> >         arTransformA->addChild(osgDB::readNodeFile("karsten.osg"));
> >         arTransformA->getOrCreateStateSet()->setRenderBinDetails(100, 
> > "RenderBin");
> > 
> >         GetDrawableByNameVisitor gdbny("Standard_3");
> >         arTransformA->accept(gdbny);
> >         if (gdbny.getResult())
> >         {
> > 
> >                 osg::Image* videocomp = osgDB::readImageFile("comp2.mov");
> >                 osg::ImageStream* myImageStream = 
> > dynamic_cast<osg::ImageStream*>(videocomp);
> > 
> >                 osg::Texture2D* animatedTexture = new 
> > osg::Texture2D(myImageStream);
> > 
> >                 if(myImageStream->valid())
> >         {
> >             std::cout << "Got movie" << std::endl;
> >                  myImageStream->play();
> >                         //is->pause();
> >         }
> >         else
> >         {
> >             std::cout << "No movie!" << std::endl;
> >                         exit(1);
> >         }
> > 
> >                 gdbny.getResult()->getOrCreateStateSet()->setTextureAttribute(0,animatedTexture,osg::StateAttribute::ON);
> >         }
> > 
> >         osg::ref_ptr<osg::Group> videoBackground = 
> > createImageBackground(video.get());
> >         videoBackground->getOrCreateStateSet()->setRenderBinDetails(0, 
> > "RenderBin");
> > 
> >         osg::ref_ptr<osg::Camera> cam = calibration->createCamera();
> > 
> >         cam->addChild(arTransformA.get());
> > 
> >         cam->addChild(videoBackground.get());
> > 
> >         root->addChild(cam.get());
> > 
> >         video->start();
> >         return viewer.run();
> > }
> > 
> > _______________________________________________
> > osg-users mailing list
> > 
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > 
> _______________________________________________
> osg-users mailing list
> 
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> 
>  ------------------
> Post generated by Mail2Forum


Hi hybr!

That's working!!! Finally!  :D 
I installed the ffmpeg plugin and loaded the movie with .mov.ffmpeg extension.  
As you said before, the code is correct...  only a plugin problem.
Only the audio is not playing... but that's no much important.

Thanks again!

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





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to