Hello Carsten, thanks for your immediate reply. I could get the back trace earlier, but I hope this is what you wanted.
I added my prints too, but the actual seg-flault happens within OpenSG.
Thanks again and in advance for any idea what might not be correct here.
Lennart
init glut .... done
init OpenSG .... done
init application framework ..
create root .... done
create camera & light - beacon & node .... done
create light node .... done
create camera .... done
create view port .... done
create light .... done
create multi display window .... done
set window .... use internal Viewport .... done
.. done
attempting to set scene node - need to initialize? - yes ..
edit beacon cores .... done
edit beacons .... done
edit headlight .... done
edit light node .... done
edit root .... done
edit client camera .... done
create background .... done
edit client Viewport .... done
edit clusterWin.. done
setup Navigator .... done
create externalAction .... done
.. done
add new scene .... done
start application framework: init cluster ..
init network connections ..
153.97.89.70 32770
153.97.89.70 32770
.. done
.. done
==6995==
==6995== Process terminating with default action of signal 11 (SIGSEGV)
==6995== Access not within mapped region at address 0x68
==6995== at 0x457501A:
osg::Node::getToWorld(osg::TransformationMatrix<float>&) (in
/usr/lib/libOSGSystem.so)
==6995== by 0x4BED4D2:
osg::ProjectionCameraDecorator::getProjection(osg::TransformationMatrix<float>&,
unsigned, unsigned) (in /usr/lib/libOSGSystem.so)
==6995== by 0x4B66D46: osg::Camera::getFrustum(osg::FrustumVolume&,
osg::Viewport const&) (in /usr/lib/libOSGSystem.so)
==6995== by 0x44A4EEE: osg::DrawActionBase::start() (in
/usr/lib/libOSGSystem.so)
==6995== by 0x44B3E91: osg::RenderAction::start() (in
/usr/lib/libOSGSystem.so)
==6995== by 0x44A127D: osg::Action::callStart() (in /usr/lib/libOSGSystem.so)
==6995== by 0x44A12D1:
osg::Action::apply(__gnu_cxx::__normal_iterator<osg::NodePtr*,
std::vector<osg::NodePtr, std::allocator<osg::NodePtr> > >,
__gnu_cxx::__normal_iterator<osg::NodePtr*, std::vector<osg::NodePtr,
std::allocator<osg::NodePtr> > >) (in /usr/lib/libOSGSystem.so)
==6995== by 0x44A08C2: osg::Action::apply(osg::NodePtr) (in
/usr/lib/libOSGSystem.so)
==6995== by 0x4C2B4AC: osg::Viewport::render(osg::RenderActionBase*) (in
/usr/lib/libOSGSystem.so)
==6995== by 0x4C35281:
osg::Window::renderAllViewports(osg::RenderActionBase*) (in
/usr/lib/libOSGSystem.so)
==6995== by 0x44F34A9:
osg::ClusterWindow::clientRender(osg::RenderActionBase*) (in
/usr/lib/libOSGSystem.so)
==6995== by 0x44F2910:
osg::ClusterWindow::renderAllViewports(osg::RenderActionBase*) (in
/usr/lib/libOSGSystem.so)
Here is a bit more code to show you the scenegraph behind it, the m_-values are
all initialized before and, as I said, this code is working fine without the
projection camera decorators:
beginEditCP(m_client_beacon);
beginEditCP(m_light_beacon);
{
std::cout << std::endl << "edit beacon cores .." << std::flush;
beginEditCP(m_client_beaconCore);
beginEditCP(m_light_beaconCore);
{
Matrix camM, lightM;
camM.setTransform(Vec3f(0,1,10));
lightM.setTransform(Vec3f(1,10,2));
m_client_beaconCore->setMatrix(camM);
m_light_beaconCore->setMatrix(lightM);
}
endEditCP(m_client_beaconCore);
endEditCP(m_light_beaconCore);
std::cout << ".. done" << std::endl;
std::cout << "edit beacons .." << std::flush;
m_client_beacon->setCore(m_client_beaconCore);
m_light_beacon->setCore(m_light_beaconCore);
std::cout << ".. done" << std::endl;
}
endEditCP(m_client_beacon);
endEditCP(m_light_beacon);
std::cout << "edit headlight .." << std::flush;
beginEditCP(m_headlight);
{
m_headlight->setDirection(Vec3f(0,1,2));
m_headlight->setDiffuse(Color4f(1,1,1,1));
m_headlight->setAmbient(Color4f(0.2,0.2,0.2,1));
m_headlight->setSpecular(Color4f(1,1,1,1));
m_headlight->setBeacon(m_light_beacon);
}
endEditCP (m_headlight);
std::cout << ".. done" << std::endl;
std::cout << "edit light node .." << std::flush;
beginEditCP(m_lightNode);
{
m_lightNode->setCore(m_headlight);
}
endEditCP(m_lightNode);
std::cout << ".. done" << std::endl;
std::cout << "edit root .." << std::flush;
beginEditCP(m_root);
{
m_root->setCore(Group::create());
m_root->addChild(m_lightNode);
m_root->addChild(m_client_beacon);
m_root->addChild(m_light_beacon);
}
endEditCP(m_root);
std::cout << ".. done" << std::endl;
std::cout << "edit client camera .." << std::flush;
beginEditCP(m_clientCamera);
{
m_clientCamera->setBeacon(m_client_beacon);
m_clientCamera->setFov(deg2rad(90));
m_clientCamera->setNear(0.1);
m_clientCamera->setFar(100);
}
endEditCP(m_clientCamera);
std::cout << ".. done" << std::endl;
std::cout << "create background .." << std::flush;
SolidBackgroundPtr bkg = SolidBackground::create();
beginEditCP(bkg);
{
bkg->setColor(Color3f(0,0,0));
}
endEditCP(bkg);
std::cout << ".. done" << std::endl;
std::cout << "edit client Viewport .." << std::flush;
beginEditCP(m_clientViewport);
{
m_clientViewport->setCamera (m_clientCamera);
m_clientViewport->setBackground(bkg);
m_clientViewport->setRoot (m_root);
m_clientViewport->setSize (0,0,1,1);
}
endEditCP(m_clientViewport);
std::cout << ".. done" << std::endl;
ViewportPtr leftViewport = Viewport::create();
ViewportPtr rightViewport = Viewport::create();
ProjectionCameraDecoratorPtr cameraDecorator =
ProjectionCameraDecorator::create();
beginEditCP(cameraDecorator);
{
cameraDecorator->setLeftEye(true);
cameraDecorator->setEyeSeparation(0.06);
cameraDecorator->setDecoratee(m_clientCamera);
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f, 1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f, 1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f,-1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f,-1.f,-1.f));
beginEditCP(leftViewport);
{
leftViewport->setCamera (cameraDecorator);
leftViewport->setBackground(bkg);
leftViewport->setRoot (m_root);
leftViewport->setSize (0,0,639,639);
}
endEditCP(leftViewport);
}
endEditCP(cameraDecorator);
cameraDecorator = ProjectionCameraDecorator::create();
beginEditCP(cameraDecorator);
{
cameraDecorator->setLeftEye(false);
cameraDecorator->setEyeSeparation(0.06);
cameraDecorator->setDecoratee(m_clientCamera);
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f,-1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f,-1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f,-1.f, 1.f));
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f,-1.f, 1.f));
beginEditCP(rightViewport);
{
rightViewport->setCamera (cameraDecorator);
rightViewport->setBackground(bkg);
rightViewport->setRoot (m_root);
rightViewport->setSize (640,0,1279,639);
}
endEditCP(rightViewport);
}
endEditCP(cameraDecorator);
std::cout << "edit clusterWin" << std::flush;
beginEditCP(m_clusterWin);
{
m_clusterWin->setConnectionType("Multicast");
m_clusterWin->getServers().push_back("Server1");
m_clusterWin->getServers().push_back("Server2");
m_clusterWin->setHServers(2);
m_clusterWin->setVServers(1);
m_clusterWin->addPort(leftViewport);
m_clusterWin->addPort(rightViewport);
}
endEditCP(m_clusterWin);
std::cout << ".. done" << std::endl;
std::cout << "setup Navigator .." << std::flush;
m_clientNavigator.setCameraTransformation (m_client_beacon);
std::cout << ".. done" << std::endl;
std::cout << "create externalAction .." << std::flush;
m_externalAction = RenderAction::create();
std::cout << ".. done" << std::endl;
-----------------------------------------------------------------
Hello Lennart,
Kulf, Lennart wrote:
> But after that my running application crashes with a segmentation fault the
> moment all three windows appear and the first draw is attempted.
would it be possible for you to give us a backtrace of that seg fault?
Otherwise it is very difficult for me to figure out what goes wrong as I
don't have a cluster setup with which I could compare yours.
But maybe one of the others here that run clusters could take a look at
your code and spot something I missed on first glance? Thanks.
Thanks,
Carsten
---------------------------------------------------------------
Hello,
I found a Mail from the 09.May.2006 where Marcus Roth answers to a question
posted by Chuck Bueche.
I am developing quite the same as Chuck did.
I implemented my own framework for initializing the cluster environment and
successfully tested it
with the stereo example that can be found in the related pages in the api
documentation.
It even worked with mouse navigation.
Now I followed Marcus's description of what needs to be done in order to set up
different projection planes.
Marcus answered Chuck:
The MultiDisplayWindow is the right Window to use even for a Cave.
If you have e.g. 10 projectors, then place 10 viewports into the
MultiDisplayWindow
xxxxxxxxxx
If you have a resolution of 1280x1024 for your projectors, Set the size of the
MultDisplayWindow to 12800 x 1024.
First Viewport goes form 0,0 - 1279,1023. second from 1280,0 - 2559,1024 , ...
You can adjust the viewports so that they overlap with your projection area.
Assign a root to all viewports.
Assign a different ProjectionCameraDecorator to all viewports and configure the
projection plane
Assign your camera to all Decorators.
I think I followed the description and replacing the type of the
ShearedStereoCameraDecorator by
a ProjectionCameraDecorator and then setting up the projection surface had been
almost everything I did.
But after that my running application crashes with a segmentation fault the
moment all three windows appear and the first draw is attempted.
Setting H and V servers or not does not change anything just as leaving the
setNear, setFar, setFov for the Camera.
Setting the Viewports size to relative or absolute values doesn't change a
thing.
Every single object is initialized, none of the objects points to NullFC, I
know that for sure.
Does someone of you know what I need to do to get rid of the seg-fault and get
properly rendered perspectives?
I am grateful for any hint you might have.
Thanks in advance
Lennart
--------------------------------------
Here is what I do:
beginEditCP(m_clientCamera);
{
m_clientCamera->setBeacon(m_client_beacon);
m_clientCamera->setFov(deg2rad(90));
m_clientCamera->setNear(0.1);
m_clientCamera->setFar(100);
}
endEditCP(m_clientCamera);
SolidBackgroundPtr bkg = SolidBackground::create();
beginEditCP(bkg);
{
bkg->setColor(Color3f(0,0,0));
}
endEditCP(bkg);
ViewportPtr leftViewport = Viewport::create();
ViewportPtr rightViewport = Viewport::create();
ProjectionCameraDecoratorPtr cameraDecorator =
ProjectionCameraDecorator::create();
beginEditCP(cameraDecorator);
{
cameraDecorator->setLeftEye(true);
cameraDecorator->setEyeSeparation(0.06);
cameraDecorator->setDecoratee(m_clientCamera);
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f, 1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f, 1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f,-1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f,-1.f,-1.f));
beginEditCP(leftViewport);
{
leftViewport->setCamera (cameraDecorator);
leftViewport->setBackground(bkg);
leftViewport->setRoot (m_root);
leftViewport->setSize (0,0,639,639);
}
endEditCP(leftViewport);
}
endEditCP(cameraDecorator);
cameraDecorator = ProjectionCameraDecorator::create();
beginEditCP(cameraDecorator);
{
cameraDecorator->setLeftEye(false);
cameraDecorator->setEyeSeparation(0.06);
cameraDecorator->setDecoratee(m_clientCamera);
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f,-1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f,-1.f,-1.f));
cameraDecorator->getSurface ().push_back (Pnt3f (-1.f,-1.f, 1.f));
cameraDecorator->getSurface ().push_back (Pnt3f ( 1.f,-1.f, 1.f));
beginEditCP(rightViewport);
{
rightViewport->setCamera (cameraDecorator);
rightViewport->setBackground(bkg);
rightViewport->setRoot (m_root);
rightViewport->setSize (640,0,1279,639);
}
endEditCP(rightViewport);
}
endEditCP(cameraDecorator);
beginEditCP(m_clusterWin);
{
m_clusterWin->setConnectionType("Multicast");
m_clusterWin->getServers().push_back("Server1");
m_clusterWin->getServers().push_back("Server2");
m_clusterWin->setSize (1280,640);
m_clusterWin->addPort(leftViewport);
m_clusterWin->addPort(rightViewport);
m_clusterWin->init();
}
endEditCP(m_clusterWin);
<<winmail.dat>>
------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________ Opensg-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensg-users
