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" <[email protected]>:
> 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
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to