Esempio n. 1
0
void updateScene()
{
    NodePtr roseNodePtr = createRose();

    NodePtr topNodePtr = createTag("top", Vec3f(0, 1, 0));
    NodePtr bottomNodePtr = createTag("bottom", Vec3f(0, -1, 0));
    NodePtr leftNodePtr = createTag("left", Vec3f(-1, 0, 0));
    NodePtr rightNodePtr = createTag("right", Vec3f(1, 0, 0));
    NodePtr frontNodePtr = createTag("front", Vec3f(0, 0, 1));
    NodePtr backNodePtr = createTag("back", Vec3f(0, 0, -1));

    beginEditCP(scene, Node::ChildrenFieldMask);
    {
        scene->addChild(topNodePtr);
        scene->addChild(bottomNodePtr);
        scene->addChild(leftNodePtr);
        scene->addChild(rightNodePtr);
        scene->addChild(frontNodePtr);
        scene->addChild(backNodePtr);
        scene->addChild(roseNodePtr);
    }
    endEditCP(scene, Node::ChildrenFieldMask);

    mgr->showAll();
    glutPostRedisplay();
}
NodePtr createScene(void)
{
    //Make Main Scene Node
    NodePtr scene = osg::Node::create();
    osg::ComponentTransformPtr Trans;
    Trans = osg::ComponentTransform::create();
    osg::setName(Trans, std::string("MainTransformationCore"));
    beginEditCP(scene, Node::CoreFieldMask | Node::ChildrenFieldMask);
        scene->setCore(Trans);

        for (int i(0); i < SkeletonNodes.size(); ++i)
        {
            scene->addChild(SkeletonNodes[i]);
        }

        for (int i(0); i < UnboundGeometries.size(); ++i)
        {
            scene->addChild(UnboundGeometries[i]);
        }

        for (int i(0); i < MeshNodes.size(); ++i)
        {
            scene->addChild(MeshNodes[i]);
        }

    endEditCP  (scene, Node::CoreFieldMask | Node::ChildrenFieldMask);

    return scene;
}
    virtual void started(const DialogEventPtr e)
    {
        if(DialogPtr::dcast(e->getSource()) == BDialogChildB)
        {
            NodePtr s = makeSphere(1,2);
            beginEditCP(scene, Node::ChildrenFieldMask);
                while(scene->getNChildren() > 0)
                {
                    scene->subChild(scene->getNChildren()-1);
                }
                scene->addChild(s);
            endEditCP(scene, Node::ChildrenFieldMask);
        }
        if(DialogPtr::dcast(e->getSource()) == BDialogChildA)
        {
            NodePtr s = makeBox(3,3,3,2,2,2);
            beginEditCP(scene, Node::ChildrenFieldMask);
                while(scene->getNChildren() > 0)
                {
                    scene->subChild(scene->getNChildren()-1);
                }
                scene->addChild(s);
            endEditCP(scene, Node::ChildrenFieldMask);
        }
        if(DialogPtr::dcast(e->getSource()) == ADialogChildA)
        {
            beginEditCP(MainInternalWindowBackground, ColorLayer::ColorFieldMask);
                MainInternalWindowBackground->setColor(Color4f(0.0,0.0,1.0,0.5));
            endEditCP(MainInternalWindowBackground, ColorLayer::ColorFieldMask);
        }
        if(DialogPtr::dcast(e->getSource()) == ADialogChildB)
        {
            beginEditCP(MainInternalWindowBackground, ColorLayer::ColorFieldMask);
                MainInternalWindowBackground->setColor(Color4f(1.0,0.0,0.0,0.5));
            endEditCP(MainInternalWindowBackground, ColorLayer::ColorFieldMask);
        }
        if(DialogPtr::dcast(e->getSource()) == End1 || DialogPtr::dcast(e->getSource()) == End2 || DialogPtr::dcast(e->getSource()) == End3 || DialogPtr::dcast(e->getSource()) == End4 )
        {
            TutorialWindowEventProducer->closeWindow();
        }
        if(DialogPtr::dcast(e->getSource()) == Restart1 || DialogPtr::dcast(e->getSource()) == Restart2 || DialogPtr::dcast(e->getSource()) == Restart3 || DialogPtr::dcast(e->getSource()) == Restart4)
        {
            beginEditCP(MainInternalWindowBackground, ColorLayer::ColorFieldMask);
                MainInternalWindowBackground->setColor(Color4f(1.0,1.0,1.0,0.5));
            endEditCP(MainInternalWindowBackground, ColorLayer::ColorFieldMask);

            NodePtr s = makeTorus(.5, 2, 16, 16);
            beginEditCP(scene, Node::ChildrenFieldMask);
                while(scene->getNChildren() > 0)
                {
                    scene->subChild(scene->getNChildren()-1);
                }
                scene->addChild(s);
            endEditCP(scene, Node::ChildrenFieldMask);
        }
    }
Esempio n. 4
0
//////////////////////////////////////////////////////////////////////////
//! build a box
//////////////////////////////////////////////////////////////////////////
void buildBox(void)
{
    Vec3f Lengths(frand()*2.0+0.5, frand()*2.0+0.5, frand()*2.0+0.5);
    Matrix m;
    //create OpenSG mesh
    GeometryPtr box;
    NodePtr boxNode = makeBox(Lengths.x(), Lengths.y(), Lengths.z(), 1, 1, 1);
    box = GeometryPtr::dcast(boxNode->getCore());
    SimpleMaterialPtr box_mat = SimpleMaterial::create();
    beginEditCP(box_mat);
        box_mat->setAmbient(Color3f(0.0,0.0,0.0));
        box_mat->setDiffuse(Color3f(0.0,1.0 ,0.0));
    endEditCP(box_mat);
    beginEditCP(box, Geometry::MaterialFieldMask);
        box->setMaterial(box_mat);
    endEditCP(box, Geometry::MaterialFieldMask);
    TransformPtr boxTrans;
    NodePtr boxTransNode = makeCoredNode<Transform>(&boxTrans);
    m.setIdentity();
    Real32 randX = frand()*10.0-5.0;
    Real32 randY = frand()*10.0-5.0;
    m.setTranslate(randX, randY, 10.0);
    beginEditCP(boxTrans, Transform::MatrixFieldMask);
        boxTrans->setMatrix(m);
    endEditCP(boxTrans, Transform::MatrixFieldMask);

    //create ODE data
    PhysicsBodyPtr boxBody = PhysicsBody::create(physicsWorld);
    beginEditCP(boxBody, PhysicsBody::PositionFieldMask);
        boxBody->setPosition(Vec3f(randX, randY, 10.0));
    endEditCP(boxBody, PhysicsBody::PositionFieldMask);
    boxBody->setBoxMass(1.0, Lengths.x(), Lengths.y(), Lengths.z());

    PhysicsBoxGeomPtr boxGeom = PhysicsBoxGeom::create();
    beginEditCP(boxGeom, PhysicsBoxGeom::BodyFieldMask | PhysicsBoxGeom::SpaceFieldMask  | PhysicsBoxGeom::LengthsFieldMask | PhysicsBoxGeom::CategoryBitsFieldMask);
        boxGeom->setBody(boxBody);
        boxGeom->setSpace(physicsSpace);
        boxGeom->setLengths(Lengths);
        boxGeom->setCategoryBits(BoxCategory);
    endEditCP(boxGeom, PhysicsBoxGeom::BodyFieldMask | PhysicsBoxGeom::SpaceFieldMask | PhysicsBoxGeom::LengthsFieldMask | PhysicsBoxGeom::CategoryBitsFieldMask);

    //add attachments
    beginEditCP(boxNode, Node::AttachmentsFieldMask);
        boxNode->addAttachment(boxGeom);
    endEditCP(boxNode, Node::AttachmentsFieldMask);
    beginEditCP(boxTransNode, Node::AttachmentsFieldMask | Node::ChildrenFieldMask);
        boxTransNode->addAttachment(boxBody);
        boxTransNode->addChild(boxNode);
    endEditCP(boxTransNode, Node::AttachmentsFieldMask | Node::ChildrenFieldMask);

    //add to SceneGraph
    beginEditCP(spaceGroupNode, Node::ChildrenFieldMask);
        spaceGroupNode->addChild(boxTransNode);
    endEditCP(spaceGroupNode, Node::ChildrenFieldMask);
}
Esempio n. 5
0
//////////////////////////////////////////////////////////////////////////
//! build a sphere
//////////////////////////////////////////////////////////////////////////
void buildSphere(void)
{
    Real32 Radius(frand()*1.5+0.2);
    Matrix m;
    //create OpenSG mesh
    GeometryPtr sphere;
    NodePtr sphereNode = makeSphere(2, Radius);
    sphere = GeometryPtr::dcast(sphereNode->getCore());
    SimpleMaterialPtr sphere_mat = SimpleMaterial::create();
    beginEditCP(sphere_mat);
    sphere_mat->setAmbient(Color3f(0.0,0.0,0.0));
    sphere_mat->setDiffuse(Color3f(0.0,0.0,1.0));
    endEditCP(sphere_mat);
    beginEditCP(sphere, Geometry::MaterialFieldMask);
    sphere->setMaterial(sphere_mat);
    endEditCP(sphere);
    TransformPtr sphereTrans;
    NodePtr sphereTransNode = makeCoredNode<Transform>(&sphereTrans);
    m.setIdentity();
    Real32 randX = frand()*10.0-5.0;
    Real32 randY = frand()*10.0-5.0;
    m.setTranslate(randX, randY, 10.0);
    beginEditCP(sphereTrans, Transform::MatrixFieldMask);
    sphereTrans->setMatrix(m);
    endEditCP(sphereTrans);
    //create ODE data
    PhysicsBodyPtr sphereBody = PhysicsBody::create(physicsWorld);
    beginEditCP(sphereBody, PhysicsBody::PositionFieldMask | PhysicsBody::AngularDampingFieldMask);
        sphereBody->setPosition(Vec3f(randX, randY, 10.0));
        sphereBody->setAngularDamping(0.0001);
    endEditCP(sphereBody, PhysicsBody::PositionFieldMask | PhysicsBody::AngularDampingFieldMask);
    sphereBody->setSphereMass(0.4,Radius);

    PhysicsSphereGeomPtr sphereGeom = PhysicsSphereGeom::create();
    beginEditCP(sphereGeom, PhysicsSphereGeom::BodyFieldMask | PhysicsSphereGeom::SpaceFieldMask | PhysicsSphereGeom::RadiusFieldMask | PhysicsSphereGeom::CategoryBitsFieldMask);
        sphereGeom->setBody(sphereBody);
        sphereGeom->setSpace(physicsSpace);
        sphereGeom->setRadius(Radius);
        sphereGeom->setCategoryBits(SphereCategory);
    endEditCP(sphereGeom, PhysicsSphereGeom::BodyFieldMask | PhysicsSphereGeom::SpaceFieldMask | PhysicsSphereGeom::RadiusFieldMask | PhysicsSphereGeom::CategoryBitsFieldMask);
    
    //add attachments
    beginEditCP(sphereNode, Node::AttachmentsFieldMask);
    sphereNode->addAttachment(sphereGeom);
    endEditCP(sphereNode);
    beginEditCP(sphereTransNode, Node::AttachmentsFieldMask | Node::ChildrenFieldMask);
    sphereTransNode->addAttachment(sphereBody);
    sphereTransNode->addChild(sphereNode);
    endEditCP(sphereTransNode);
    //add to SceneGraph
    beginEditCP(spaceGroupNode, Node::ChildrenFieldMask);
    spaceGroupNode->addChild(sphereTransNode);
    endEditCP(spaceGroupNode);
}
Esempio n. 6
0
void
IceXML::DocumentBuilder::startElement(const string& name, const Attributes& attributes, int line, int column)
{
    NodePtr parent = _nodeStack.front();

    Element* element = new Element(parent, name, attributes, line, column);
#ifdef NDEBUG
    parent->addChild(element);
#else
    assert(parent->addChild(element));
#endif

    _nodeStack.push_front(element);
}
static NodePtr makePerturbedUniform (UInt16 numSubdiv, 
				     Real32 radius,
				     Real32 rate = 0.1f)
{
   static Real32 factor = 1.1f;

   NodePtr         sphereNode = makeSphere(numSubdiv, radius);
   GeometryPtr     sphere = GeometryPtr::dcast(sphereNode->getCore());
   GeoPositionsPtr points = sphere->getPositions();
   beginEditCP(points);
   for (UInt32 i=0; i<points->size(); ++i) {
      Real32 random = (rand()/Real32(RAND_MAX));
      if (random <= rate) {
	 points->setValue(factor*points->getValue(i), i);
      }
   }
   endEditCP(points);

   NodePtr node = Node::create();
   beginEditCP(node);
   node->setCore(Transform::create());
   node->addChild(sphereNode);
   endEditCP(node);

   return node;
}
Esempio n. 8
0
void
IceXML::DocumentBuilder::characters(const string& data, int line, int column)
{
    NodePtr parent = _nodeStack.front();
    TextPtr text = new Text(parent, data, line, column);
    parent->addChild(text);
}
NodePtr makeTransformedCube (Real32 xsize,
			     Real32 ysize,
			     Real32 zsize,
			     UInt16 hor,
			     UInt16 vert,
			     UInt16 depth,
			     const Color3f& c)
{
   GeoColors3fPtr color = GeoColors3f::create();
   beginEditCP(color);
   color->addValue(c);
   endEditCP(color);
   GeometryPtr box = makeBoxGeo(xsize, ysize, zsize, hor, vert, depth);
   beginEditCP(box);
   box->setColors(color);
   endEditCP(box);
   NodePtr boxNode = Node::create();
   beginEditCP(boxNode);
   boxNode->setCore(box);
   endEditCP(boxNode);
   NodePtr node = Node::create();
   beginEditCP(node);
   node->setCore(Transform::create());
   node->addChild(boxNode);
   endEditCP(node);
   return node;
}
	virtual void  setRoot          ( NodePtr root )
	{
		if(_internalRoot == NullFC)
		{
			initialize();
		}

		if(_root != root)
		{
			if(_root != NullFC)
			{
				beginEditCP(_internalRoot, Node::ChildrenFieldMask);
				_internalRoot->subChild(_root);
				endEditCP(_internalRoot, Node::ChildrenFieldMask);
			}

			_root = root;
			if(_root != NullFC)
			{
				beginEditCP(_internalRoot, Node::ChildrenFieldMask);
				_internalRoot->addChild(_root);
				endEditCP(_internalRoot, Node::ChildrenFieldMask);
			}
		}
	}
Esempio n. 11
0
 NodePtr createScene(void)
 {
     endEditCP(_pos);
     
     std::map<UInt32, GeoIndicesPtr>::iterator it, end;
     end = _ind.end();
     
     NodePtr scene;
     
     if(_ind.size() == 1)
     {
         scene = makeNodeFor(createGeo(_ind.begin()->first));
     }
     else
     {
         scene = makeNodeFor(Group::create());
         beginEditCP(scene);
         
         for(it = _ind.begin(); it != end; ++it)
         {
             scene->addChild(makeNodeFor(createGeo(it->first)));
         }
         
         endEditCP(scene);
     }
     
     return scene;
 }
Esempio n. 12
0
NodePtr makeScene()
{
    g_fb_chunk = FatBorderChunk::create();
    beginEditCP(g_fb_chunk);
    g_fb_chunk->activateWithStandardLighting();
    g_fb_chunk->setIgnore(true);
    endEditCP(g_fb_chunk);

    NodePtr root = makeCoredNode<Switch>();
    beginEditCP(root);
    root->addChild(makeTeapot());
    root->addChild(makeTorus());
    root->addChild(makeTrimmedCylinder());
    endEditCP(root);
    return root;
}
Esempio n. 13
0
// Initialize GLUT & OpenSG and set up the scene
int main(int argc, char **argv)
{
    // OSG init
    osgInit(argc,argv);

    // GLUT init
    int winid = setupGLUT(&argc, argv);

    // the connection between GLUT and OpenSG
    GLUTWindowPtr gwin= GLUTWindow::create();
    gwin->setId(winid);
    gwin->init();

    // create the scene

    NodePtr torus = makeTorus( .5, 2, 16, 32 );

    // create the transformation node
    // scenegraph nodes are split into 2 parts: the node and its core
    
    // 1. create the Node
    NodePtr scene = Node::create();
    
    // 2. create the core
    trans = Transform::create();
    
    // 3. associate the core with the node
 
    // OpenSG objects need to be informed when they are being changed, 
    // that's what beginEditCP() and endEditCP() do
    beginEditCP(scene, Node::CoreFieldMask | Node::ChildrenFieldMask);
    {
        scene->setCore(trans);
 
        // add the torus as a child
        scene->addChild(torus);
    }
    endEditCP  (scene, Node::CoreFieldMask | Node::ChildrenFieldMask);
    

    // create the SimpleSceneManager helper
    mgr = new SimpleSceneManager;

    // tell the manager what to manage
    mgr->setWindow(gwin );
    mgr->setRoot  (scene);

    // show the whole scene
    mgr->showAll();

    // GLUT main loop
    glutMainLoop();

    return 0;
}
Esempio n. 14
0
SceneFileHandler::FCPtrStore SceneFileHandler::readTopNodes(
    const  Char8  *fileName,
    GraphOpSeq *graphOpSeq)
{
    std::vector<FieldContainerPtr> nodeVec;

    if(!fileName)
    {
        SWARNING << "cannot read NULL file" << std::endl;
        return nodeVec;
    }

    std::string fullFilePath = initPathHandler(fileName);
    if(fullFilePath.empty())
    {
        SWARNING << "Couldn't open file " << fileName << std::endl;
        return nodeVec;
    }

    std::ifstream in(fullFilePath.c_str(), std::ios::binary);

    if(in)
    {
        nodeVec = readTopNodes(in, fullFilePath.c_str(), graphOpSeq);
        in.close();
    }
    else
    {
        SWARNING << "Couldn't open input stream for file " << fullFilePath << std::endl;
    }

    // Ok stream interface didn't work try via filename
    if(nodeVec.empty())
    {
        NodePtr scene = read(fullFilePath.c_str());
        if(scene == NullFC)
            return nodeVec;

        while(scene->getNChildren() > 0)
        {
            NodePtr child = scene->getChild(0);
            NodePtr newChild = Node::create();
            while(child->getNChildren() > 0)
                newChild->addChild(child->getChild(0));
            newChild->setCore(child->getCore());
            if(graphOpSeq != NULL)
                graphOpSeq->run(newChild);
            nodeVec.push_back(newChild);
            scene->subChild(child);
        }
    }

    return nodeVec;
}
Esempio n. 15
0
void VRMLLODBinder::addLevel(NodePtr pLevel)
{
    NodePtr pNode = NodePtr::dcast(_pFieldContainer);

    if(pNode != NullFC && pLevel != NullFC)
    {
        beginEditCP(pNode, Node::ChildrenFieldMask);
        {
            pNode->addChild(pLevel);
        }
        endEditCP  (pNode, Node::ChildrenFieldMask);
    }
}
FaceSpatialize<BasicTraits>::CategoryRaw::CategoryRaw (NodePtr root,
						       const FaceIterator& face)
  :  m_ccw(true), 
     //m_faceLength(0),
     m_hasNormal(hasNormalAttributes(face)), 
     m_hasColor(hasColorAttributes(face)),
     m_hasTex(hasTexAttributes(face))
{
   CategoryRaw::begin(face);
   beginEditCP(root);
   root->addChild(m_node);
   endEditCP(root);
}
Esempio n. 17
0
void VRMLSwitchBinder::addChoice(NodePtr pChoice)
{
    NodePtr pNode = NodePtr::dcast(_pFieldContainer);

    if(pNode != NullFC && pChoice != NullFC)
    {
        beginEditCP(pNode, Node::ChildrenFieldMask);
        {
            pNode->addChild(pChoice);
        }
        endEditCP  (pNode, Node::ChildrenFieldMask);
    }
}
Esempio n. 18
0
void Particles::createSymmetricEmitterLine(Vec3f dir, Real32 dist, UInt16 num)
{
	NodePtr localTransNode;
	TransformPtr localTrans;
	Matrix m;
	dir.normalize();
	for (int i = 1; i < num; i++)
	{
		localTransNode = Node::create();
		localTrans = Transform::create();
		m.setIdentity();
		m.setTranslate(dir*(i*dist));
		beginEditCP(localTrans, Transform::MatrixFieldMask);
			localTrans->setMatrix(m);
		endEditCP(localTrans, Transform::MatrixFieldMask);
		beginEditCP(localTransNode, Node::CoreFieldMask | Node::ChildrenFieldMask);
			localTransNode->setCore(localTrans);
			localTransNode->addChild(cloneTree(particleNode));
		endEditCP(localTransNode, Node::CoreFieldMask | Node::ChildrenFieldMask);
		beginEditCP(particleTransNode, Node::ChildrenFieldMask);
			particleTransNode->addChild(localTransNode);
		endEditCP(particleTransNode, Node::ChildrenFieldMask);

		localTransNode = Node::create();
		localTrans = Transform::create();
		m.setIdentity();
		m.setTranslate(dir*(-i*dist));
		beginEditCP(localTrans, Transform::MatrixFieldMask);
			localTrans->setMatrix(m);
		endEditCP(localTrans, Transform::MatrixFieldMask);
		beginEditCP(localTransNode, Node::CoreFieldMask | Node::ChildrenFieldMask);
			localTransNode->setCore(localTrans);
			localTransNode->addChild(cloneTree(particleNode));
		endEditCP(localTransNode, Node::CoreFieldMask | Node::ChildrenFieldMask);
		beginEditCP(particleTransNode, Node::ChildrenFieldMask);
			particleTransNode->addChild(localTransNode);
		endEditCP(particleTransNode, Node::ChildrenFieldMask);
	} // for
} // createSymmetricEmitterLine
Esempio n. 19
0
NodePtr createScenegraph(){
    
    SimpleMaterialPtr simpleMaterial = SimpleMaterial::create();

    beginEditCP (simpleMaterial,    SimpleMaterial::DiffuseFieldMask |
                                    SimpleMaterial::AmbientFieldMask |
                                    SimpleMaterial::TransparencyFieldMask);
                
        simpleMaterial->setDiffuse(Color3f(1,0,0));
        simpleMaterial->setAmbient(Color3f(0.2, 0.2, 0.2));
        simpleMaterial->setTransparency(0.5);

    endEditCP   (simpleMaterial,    SimpleMaterial::DiffuseFieldMask |
                                    SimpleMaterial::AmbientFieldMask |
                                    SimpleMaterial::TransparencyFieldMask);
                                    
    NodePtr simpleMaterialNode = Node::create();
    NodePtr sphere = makeSphere(2,6);
    
    MaterialGroupPtr mg = MaterialGroup::create();
    beginEditCP(mg);
        mg->setMaterial(simpleMaterial);
    endEditCP(mg);
    
    beginEditCP(simpleMaterialNode);
        simpleMaterialNode->setCore(mg);
        simpleMaterialNode->addChild(sphere);
    endEditCP(simpleMaterialNode);
    
    NodePtr root = Node::create();
    
    beginEditCP(root);
        root->setCore(Group::create());
        root->addChild(simpleMaterialNode);
    endEditCP(root);
    
    return root;
}
Esempio n. 20
0
 virtual void actionPerformed(const ActionEventPtr e)
  {
      TutorialSound->stop(TutorialSoundChannelID);
      std::cout << "Stop Action" << std::endl;
      NodePtr s = makeTorus(.5, 2, 16, 16);
      beginEditCP(scene, Node::ChildrenFieldMask);
          while(scene->getNChildren() > 0)
          {
              scene->subChild(scene->getNChildren()-1);
          }
          scene->addChild(s);
      endEditCP(scene, Node::ChildrenFieldMask);
      
      segUpdate = 0;
  }
Esempio n. 21
0
bool SplitGraphOp::traverse(NodePtr& root)
{
    // If the root node is not a Group, make it one
    if (isLeaf(root))
    {
        NodePtr n = makeNodeFor(root->getCore());

        beginEditCP(root);
        root->setCore(Group::create());
        root->addChild(n);
        endEditCP(root);
    }

    return GraphOp::traverse(root);
}
Esempio n. 22
0
 virtual void segmentActivated(const CaptionEventPtr e)
 {
     if(segUpdate == 6)
     {
         NodePtr s = makeSphere(1,2);
         beginEditCP(scene, Node::ChildrenFieldMask);
             while(scene->getNChildren() > 0)
             {
                 scene->subChild(scene->getNChildren()-1);
             }
             scene->addChild(s);
         endEditCP(scene, Node::ChildrenFieldMask);
     }
     if(segUpdate == 9)
     {
         NodePtr s = makeBox(3,3,3,2,2,2);
         beginEditCP(scene, Node::ChildrenFieldMask);
             while(scene->getNChildren() > 0)
             {
                 scene->subChild(scene->getNChildren()-1);
             }
             scene->addChild(s);
         endEditCP(scene, Node::ChildrenFieldMask);
     }
     if(segUpdate == 11)
     {
         beginEditCP(scene, Node::ChildrenFieldMask);
             while(scene->getNChildren() > 0)
             {
                 scene->subChild(scene->getNChildren()-1);
             }
         endEditCP(scene, Node::ChildrenFieldMask);
     }
     ++segUpdate;
     std::cout<<"Segment Activated"<<std::endl;
 }
FaceSpatializeIndexed<BasicTraits>::CategoryRaw::CategoryRaw (NodePtr root, 
			  OpenSGFaceBase<OpenSGTraits>* node, const FaceIterator& face)
  :  m_hasNormal(hasNormalAttributes(face)), 
     m_hasColor(hasColorAttributes(face)),
     m_hasTex(hasTexAttributes(face)),
     m_original(node->getObjectAdapter().getNode())
{
   // create object adapter 
   m_original.setObjectAdapter(&node->getObjectAdapter());

   CategoryRaw::begin(node, face);
   beginEditCP(root);
   root->addChild(m_node);
   endEditCP(root);
}
Esempio n. 24
0
		NodePtr createNode(const DocumentPtr& owner_doc) {
			NodePtr node;
			if(name_ == XmlText) {
				node = Text::create(value_, owner_doc);
			} else {
				node = Element::create(name_, owner_doc);
			}
			for(auto& a : attributes_) {
				node->addAttribute(a.second->createAttribute());
			}
			for(auto& c : children_) {
				node->addChild(c->createNode(owner_doc));
			}
			node->init();
			return node;
		}
Esempio n. 25
0
NodePtr createScenegraph()
{
    scene = Node::create();
    setName(scene, "Scene");

    /*
    model1 = SceneFileHandler::the().read("data/high_res_box.wrl");

    if (model1 == NullFC)
    {
        cout << "Unable to load model1" << endl;
        return NullFC;
    }
    setName(model1, "Highresbox");

    model2 = SceneFileHandler::the().read("data/box.wrl");
    if (model2 == NullFC)
    {
        cout << "Unable to load model2" << endl;
        return NullFC;
    }
    setName(model2, "Box");
    */

#if OSG_MAJOR_VERSION >= 2
	model = SceneFileHandler::the()->read("data/char.wrl");
#else
	model = SceneFileHandler::the().read("data/chair.wrl");
#endif 

    if (model == NullFC)
    {
        cout << "Unable to load model1" << endl;
        return NullFC;
    }

    beginEditCP(scene, Node::CoreFieldMask | Node::ChildrenFieldMask);
        scene->setCore(Group::create());
        //scene->addChild(model1);
        //scene->addChild(model2);
        scene->addChild(model);
    endEditCP(scene, Node::CoreFieldMask | Node::ChildrenFieldMask);

    //model = model1;
    return scene;
}
Esempio n. 26
0
OSG_USING_NAMESPACE

#if 1
int main (int argc, char **argv)
{
    NodePtr  node;

    const char *fileName = (argc > 1) ? argv[1] : "tie.wrl";

    osgInit(argc, argv);

    NodePtr  pScene      = Node::create();
    GroupPtr pSceneGroup = Group::create();

    pScene->setCore(pSceneGroup);

    node = SceneFileHandler::the().read(fileName);

    node->updateVolume();

    Vec3f center;
    node->getVolume().getCenter(center);

    std::cerr << "Volume: center " << center << ", volume "
              << node->getVolume().getScalarVolume() << std::endl;


    pScene->addChild(node);

    VRMLWriteAction *pWriter = VRMLWriteAction::create();

//    pWriter->addOptions(VRMLWriteAction::OSGNoNormals);

//VRMLWriteAction::OSGNoIndent |

    pWriter->open((argc > 2) ? argv[2] : "test.wrl");

    pWriter->write(pScene);

    pWriter->close();

    return 0;
}
Esempio n. 27
0
int main( int argc, char **argv )
{
    osgInit(argc,argv);
    
    QApplication::setColorSpec( QApplication::CustomColor );
    QApplication a( argc, argv );

    if ( !QGLFormat::hasOpenGL() ) {
	qWarning( "This system has no OpenGL support. Exiting." );
	return -1;
    }
    
    OpenSGWidget w(QGLFormat(QGL::DoubleBuffer | QGL::DepthBuffer | QGL::Rgba |
                             QGL::DirectRendering));

    // create the scene
    NodePtr scene;
    
    if(argc > 1)
    {
        scene = Node::create();
        GroupPtr g = Group::create();
        
        beginEditCP(scene);
        scene->setCore(g);
        
        for(UInt16 i = 1; i < argc; ++i)
            scene->addChild(SceneFileHandler::the().read(argv[i]));
        
        endEditCP(scene);
    }
    else
    {
        scene = makeTorus(.5, 3, 16, 16);
    }

    w.getManager()->setRoot(scene);
    w.getManager()->showAll();

    w.show();
    return a.exec();
}
Esempio n. 28
0
Action::ResultE SplitGraphOp::traverseLeave(NodePtr& node, Action::ResultE res)
{
    std::vector<NodePtr>::iterator it = node->editMFChildren()->getValues().begin();
    std::vector<NodePtr>::iterator en = node->editMFChildren()->getValues().end  ();
    std::vector<NodePtr> toAdd;
    std::vector<NodePtr> toSub;

    for ( ; it != en; ++it )
    {
        bool special=isInExcludeList(*it);
        bool leaf=isLeaf(*it);

        if (!special && leaf)
        {
            if (splitNode(*it, toAdd))
                toSub.push_back(*it);
        }
    }

    it = toAdd.begin();
    en = toAdd.end  ();

    for ( ; it != en; ++it )
    {
        beginEditCP(node, Node::ChildrenFieldMask);
        node->addChild(*it);
        endEditCP  (node, Node::ChildrenFieldMask);
    }

    it = toSub.begin();
    en = toSub.end  ();

    for ( ; it != en; ++it )
    {
        beginEditCP(node, Node::ChildrenFieldMask);
        addRefCP(*it);
        node->subChild(*it);
        endEditCP  (node, Node::ChildrenFieldMask);
    }
    return res;
}
static NodePtr makePerturbedAll (UInt16 numSubdiv, 
				 Real32 radius,
				 Real32 stdDeviation = 0.1f)
{
   NodePtr         sphereNode = makeSphere(numSubdiv, radius);
   GeometryPtr     sphere = GeometryPtr::dcast(sphereNode->getCore());
   GeoPositionsPtr points = sphere->getPositions();
   beginEditCP(points);
   for (UInt32 i=0; i<points->size(); ++i) {
      Real32 factor = 1.0f + stdDeviation * (rand()/Real32(RAND_MAX) - 0.5f);
      points->setValue(factor*points->getValue(i), i);
   }
   endEditCP(points);

   NodePtr node = Node::create();
   beginEditCP(node);
   node->setCore(Transform::create());
   node->addChild(sphereNode);
   endEditCP(node);

   return node;
}
Esempio n. 30
0
SceneFileHandler::FCPtrStore SceneFileHandler::readTopNodes(
    std::istream &is, const Char8 *fileNameOrExtension,
    GraphOpSeq *graphOpSeq)
{
    std::vector<FieldContainerPtr> nodeVec;
    NodePtr scene = read(is, fileNameOrExtension);
    if(scene == NullFC)
        return nodeVec;

    while(scene->getNChildren() > 0)
    {
        NodePtr child = scene->getChild(0);
        NodePtr newChild = Node::create();
        while(child->getNChildren() > 0)
            newChild->addChild(child->getChild(0));
        newChild->setCore(child->getCore());
        if(graphOpSeq != NULL)
            graphOpSeq->run(newChild);
        nodeVec.push_back(newChild);
        scene->subChild(child);
    }

    return nodeVec;
}