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

