osg::Group* createModel() { // no database loaded so automatically create Ed Levin Park osg::Group* group = new osg::Group; // the base and sky subgraphs go to set the earth sky of the // model and clear the color and depth buffer for us, by using // osg::Depth, and setting their bin numbers to less than 0, // to force them to draw before the rest of the scene. osg::ClearNode* clearNode = new osg::ClearNode; clearNode->setRequiresClear(false); // we've got base and sky to do it. // use a transform to make the sky and base move around with the eye point. osg::Transform* transform = new MoveEarthySkyWithEyePointTransform; // transform's value isn't knowm until in the cull traversal so its bounding // volume is can't be determined, therefore culling will be invalid, // so switch it off, this causes all our paresnts to switch culling // off as well. But don't worry, culling will be back on once underneath // this node or any other branch above this transform. transform->setCullingActive(false); // add the sky and base layer. transform->addChild(makeSky()); // bin number -2 so drawn first. transform->addChild(makeBase()); // bin number -1 so draw second. // add the transform to the earth sky. clearNode->addChild(transform); // add to earth sky to the scene. group->addChild(clearNode); // the rest of the scene is drawn after the base and sky above. group->addChild(makeTrees()); // will drop into a transparent, depth sorted bin (1) group->addChild(makeTerrain()); // will drop into default bin - state sorted 0 group->addChild(makeTank()); // will drop into default bin - state sorted 0 // add the following in the future... // makeGliders // makeClouds return group; }
/*** 全方向移動型ロボットの生成 ***/ void makeOmni() { makeBase(); makeWheel(); }