Hello Björn,
I did the necessary changes as suggested, unfortunately i am getting the
blank screen.
So i am providing you the code snippet where i defined the main scenegraph:
*******************************************************************************
/*
Create the whole scene here
- now we load the teapot
*/
NodePtr utah_teapot1 = SceneFileHandler::the().read("teapot.obj");
//set a string name for that node
//we shall use that string to search
setName(utah_teapot1,"UTAH_TEAPOT1");
/*
Check if the data loading
operation was ok or not
*/
if(utah_teapot1 == NullFC)
{
cout << "Loading the specified file was not possible." << endl;
return NullFC;
}
//the getCore method returns the CoredNodePtr,
//which all other pointer classes derived from
GeometryPtr geoUtah1 = GeometryPtr::dcast(utah_teapot1->getCore());
/*
Now create the material
for that for that geometry
inside the function createToonScene() - i m creating the shader chunk
*/
beginEditCP(geoUtah1, Geometry::MaterialFieldMask);
geoUtah1->setMaterial(createToonScene());
endEditCP(geoUtah1, Geometry::MaterialFieldMask);
/*
Set the geometry to
the node that we have
just read
*/
beginEditCP(utah_teapot1, Node::CoreFieldMask);
utah_teapot1->setCore(geoUtah1);
endEditCP(utah_teapot1, Node::CoreFieldMask);
GeometryPtr geoUtah2 = GeometryPtr::dcast(utah_teapot1->getCore());
/*
Now create the material
for that for that geometry
*/
beginEditCP(geoUtah2, Geometry::MaterialFieldMask);
geoUtah2->setMaterial(createPhongScene());
endEditCP(geoUtah2, Geometry::MaterialFieldMask);
/*
Now create a Node for that
newly created geometry with
the material
*/
NodePtr utah_teapot2 = Node::create();
beginEditCP(utah_teapot2, Node::CoreFieldMask);
utah_teapot2->setCore(geoUtah2);
endEditCP(utah_teapot2, Node::CoreFieldMask);
//crate a node with a switch core
// I declared the SwitchPtr sw as global
sw = Switch::create();
/*
Create a Node to hold the switch core
*/
switchNode = Node::create();
beginEditCP(switchNode,Node::ChildrenFieldMask |
Node::CoreFieldMask);
switchNode->setCore(sw);
switchNode->addChild(utah_teapot1);
switchNode->addChild(utah_teapot2);
endEditCP(switchNode,Node::ChildrenFieldMask |
Node::CoreFieldMask);
/*
At last create the root
*/
NodePtr root = Node::create();
beginEditCP(root, Node::CoreFieldMask |
Node::ChildrenFieldMask);
root->setCore(Group::create());
root->addChild(switchNode);
endEditCP(root, Node::CoreFieldMask |
Node::ChildrenFieldMask);
return root;
********************************************************************************
And in the key-press event i have as follows:
************************************
switch(k)
{
case 27:
{
OSG::osgExit();
exit(0);
}
break;
case 't':
{
cout << "toon" << endl;
beginEditCP(sw, Switch::ChoiceFieldMask);
/*the first choice is set to mode
that will be changed with the
key-press event
*/
sw->setChoice(0);
endEditCP(sw, Switch::ChoiceFieldMask);
}
break;
case 'p':
{
cout << "phong" << endl;
beginEditCP(sw, Switch::ChoiceFieldMask);
/*the first choice is set to mode
that will be changed with the
key-press event
*/
sw->setChoice(1);
endEditCP(sw, Switch::ChoiceFieldMask);
}
break;
default:
break;
**************************************
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users