本文整理汇总了C++中osg::NodeUnrecPtr::addChild方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeUnrecPtr::addChild方法的具体用法?C++ NodeUnrecPtr::addChild怎么用?C++ NodeUnrecPtr::addChild使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::NodeUnrecPtr
的用法示例。
在下文中一共展示了NodeUnrecPtr::addChild方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initFloor
void initFloor(void)
{
OSG::GeometryUnrecPtr floor = OSG::makePlaneGeo(2000.f, 2000.f, 10, 10);
OSG::NodeUnrecPtr floorN = OSG::makeNodeFor(floor);
OSG::TransformUnrecPtr xform = OSG::Transform::create();
OSG::NodeUnrecPtr xformN = OSG::makeNodeFor(xform);
OSG::ImageUnrecPtr img = OSG::ImageFileHandler::the()->read("sand1Tile.png");
OSG::TextureObjChunkUnrecPtr tex = OSG::TextureObjChunk::create();
tex->setImage(img);
OSG::ChunkMaterial *chunkMat = dynamic_cast<OSG::ChunkMaterial *>(floor->getMaterial());
if(chunkMat != NULL)
{
chunkMat->addChunk(tex);
}
OSG::Quaternion quat;
quat.setValueAsAxisDeg(OSG::Vec3f(1.f, 0.f, 0.f), -90.f);
xform->editMatrix().setRotate(quat);
xformN->addChild(floorN);
g->rootN->addChild(xformN);
}
示例2: build
OSG::NodeTransitPtr OSGSofaShadowGraph::build(
Node::SPtr root,
bool ignoreLights )
{
_scene = NULL;
_chunkOverrideGroup = NULL;
_shadowStage = NULL;
VisualParams* vparams = VisualParams::defaultInstance();
OSG::NodeUnrecPtr shadowStageNode;
_chunkOverrideGroup = OSG::ChunkOverrideGroup::create();
_scene = OSG::makeNodeFor(_chunkOverrideGroup);
sofa::simulation::OSGVisualUpdateVisitor vm_visitor( vparams);
vm_visitor.setChunkOverrideGroupNode(_scene);
// get lights
if (!ignoreLights)
{
if (!_shadowStage)
_shadowStage = OSG::ShadowStage::create();
_shadowStage->setMapSize(1024);
_shadowStage->setShadowSmoothness(0.5f);
_shadowStage->setShadowMode(OSG::ShadowStage::NO_SHADOW);
_shadowStage->setAutoSearchForLights(true);
shadowStageNode = OSG::makeNodeFor(_shadowStage);
sofa::simulation::OSGLightVisitor light_visitor( vparams);
//light_visitor.setTurnOffLights(ignoreLights);
light_visitor.setOSG2Parent(_scene);
light_visitor.setOSG2ShadowStage(_shadowStage);
light_visitor.setAttachNode(_scene);
root->execute(&light_visitor);
if (light_visitor.getAttachNode())
{
vm_visitor.setOSG2Parent(light_visitor.getAttachNode());
root->execute(&vm_visitor);
}
}
else
{
vm_visitor.setOSG2Parent(_scene);
root->execute(&vm_visitor);
}
if (shadowStageNode && !ignoreLights)
{
shadowStageNode->addChild(_scene);
return OSG::NodeTransitPtr(shadowStageNode);
}
return OSG::NodeTransitPtr(_scene);
}
示例3: createScene
OSG::NodeTransitPtr createScene(OSG::Window *win)
{
OSG::NodeRecPtr rootN = OSG::makeNodeFor(OSG::Group::create());
// Create ground:
OSG::NodeUnrecPtr groundN = OSG::makePlane(25,25,1,1);
OSG::Matrix m;
OSG::Quaternion q;
q.setValueAsAxisDeg(OSG::Vec3f(1,0,0), -90);
m.setRotate(q);
OSG::TransformUnrecPtr groundTransC = OSG::Transform::create();
groundTransC->setMatrix(m);
OSG::NodeUnrecPtr groundTransN = OSG::makeNodeFor(groundTransC);
groundTransN->addChild(groundN);
rootN->addChild(groundTransN);
// Set ground material:
OSG::SimpleMaterialUnrecPtr mat = OSG::SimpleMaterial::create();
mat->setDiffuse(OSG::Color3f(0.8,0.8,0.8));
dynamic_cast<OSG::Geometry*>(groundN->getCore())->setMaterial(mat);
// // Create figure:
// OSG::NodeUnrecPtr figure1N =
// OSG::SceneFileHandler::the()->read("../Models/Figure.obj");
// G.figure1TransC = OSG::Transform::create();
// OSG::NodeUnrecPtr trans1N = OSG::makeNodeFor(G.figure1TransC);
// trans1N->addChild(figure1N);
// rootN->addChild(trans1N);
OSG::NodeUnrecPtr figureModelA =
OSG::SceneFileHandler::the()->read("../assets/Figure.obj");
BoardGame::Figure* figureA = new BoardGame::Figure();
figureA->setModel(figureModelA);
rootN->addChild(figureA->getRoot());
OSG::NodeUnrecPtr figureModelB =
OSG::SceneFileHandler::the()->read("../assets/Figure.obj");
BoardGame::Figure* figureB = new BoardGame::Figure();
figureB->setModel(figureModelB);
rootN->addChild(figureB->getRoot());
G.selectedNode = figureModelA;
return(OSG::NodeTransitPtr(rootN));
}
示例4: init
void init(int argc, char *argv[])
{
OSG::osgInit(argc, argv);
int glutWinId = setupGLUT(&argc, argv);
// the connection between GLUT and OpenSG
OSG::GLUTWindowUnrecPtr gwin= OSG::GLUTWindow::create();
gwin->setGlutId(glutWinId);
gwin->init();
// load the scene
root = OSG::ChunkOverrideGroup::create();
rootN = OSG::makeNodeFor(root);
if(argc < 2)
{
FWARNING(("No file given!\n"));
FWARNING(("Supported file formats:\n"));
OSG::SceneFileHandler::the()->print();
sceneN = OSG::makeTorus(.5, 2, 16, 16);
}
else
{
/*
All scene file loading is handled via the SceneFileHandler.
*/
sceneN = OSG::SceneFileHandler::the()->read(argv[1]);
}
rootN->addChild(sceneN);
OSG::commitChanges();
// create the SimpleSceneManager helper
mgr = new OSG::SimpleSceneManager;
// tell the manager what to manage
mgr->setWindow(gwin );
mgr->setRoot (rootN);
// show the whole scene
mgr->showAll();
}
示例5: loadCharacter
void loadCharacter(void)
{
OSG::NodeUnrecPtr modelN = OSG::SceneFileHandler::the()->read("western.male01.mesh", NULL);
ObjectCollector()(modelN);
SkinnedGeoStore::iterator sIt = g->skinGeos.begin();
SkinnedGeoStore::iterator sEnd = g->skinGeos.end ();
for(; sIt != sEnd; ++sIt)
{
(*sIt)->setRenderMode(g->renderMode);
}
g->xform = OSG::Transform::create();
OSG::NodeUnrecPtr xformN = OSG::makeNodeFor(g->xform);
xformN->addChild(modelN);
g->rootN->addChild(xformN);
}
示例6: init
int init(int argc, char **argv)
{
OSG::osgInit(argc,argv);
// GLUT init
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
int winid = glutCreateWindow("OpenSG");
glutKeyboardFunc(key);
glutVisibilityFunc(vis);
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutIdleFunc(display);
// glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
// glEnable( GL_DEPTH_TEST );
// glEnable( GL_LIGHTING );
// glEnable( GL_LIGHT0 );
// glFrontFace(GL_CW);
glEnable(GL_CULL_FACE);
// OSG
OSG::SceneFileHandler::the()->print();
// create the graph
// beacon for camera and light
OSG::NodeUnrecPtr b1n = OSG::Node::create();
OSG::GroupUnrecPtr b1 = OSG::Group::create();
b1n->setCore( b1 );
// transformation
OSG::NodeUnrecPtr t1n = OSG::Node::create();
OSG::TransformUnrecPtr t1 = OSG::Transform::create();
t1n->setCore( t1 );
t1n->addChild( b1n );
cam_trans = t1;
// light
OSG::NodeUnrecPtr dlight = OSG::Node::create();
OSG::DirectionalLightUnrecPtr dl = OSG::DirectionalLight::create();
dlight->setCore( dl );
// dlight->setCore( Group::create() );
dl->setAmbient( .0, .0, .0, 1 );
dl->setDiffuse( .8f, .8f, .8f, 1.f );
dl->setDirection(0,0,1);
dl->setBeacon( b1n);
// root
root = OSG::Node::create();
OSG::GroupUnrecPtr gr1 = OSG::Group::create();
root->setCore( gr1 );
root->addChild( t1n );
root->addChild( dlight );
// Load the file
OSG::NodeUnrecPtr file = NULL;
if(argc > 1)
file = OSG::SceneFileHandler::the()->read(argv[1], NULL);
if ( file == NULL )
{
std::cerr << "Couldn't load file, ignoring" << std::endl;
file = OSG::makeSphere(4, 2.0);
}
#if 0
OSG::GeometryPtr pGeo = cast_dynamic<OSG::GeometryPtr>(file->getCore());
if(pGeo == NULL && file->getNChildren() != 0)
{
pGeo = cast_dynamic<OSG::GeometryPtr>(file->getChild(0)->getCore());
}
if(pGeo == NULL)
{
fprintf(stderr, "no geo\n");
}
#endif
// OSG::GraphOpRefPtr op = OSG::GraphOpFactory::the()->create("Stripe");
// op->traverse(file);
//.........这里部分代码省略.........
示例7: doMain
// Initialize GLUT & OpenSG and set up the scene
int doMain(int argc, char **argv)
{
// OSG init
OSG::osgInit(argc, argv);
// GLUT init
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
int winid = glutCreateWindow("OpenSG CGFX Shader");
// the connection between GLUT and OpenSG
_gwin = OSG::GLUTWindow::create();
_gwin->setGlutId(winid);
_gwin->setSize( 800, 800 );
_gwin->init();
// init callbacks
glutSetWindow(winid);
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutIdleFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutKeyboardFunc(keyboard);
const char *effectFile = "blinn_bump_reflect.vinstruct.cgfx";
if(argc > 1)
{
effectFile = argv[1];
}
_cgfxmat = OSG::CgFXMaterial::create();
_cgfxmat->setEffectFile(effectFile);
// this multipass technique leads to a render bug,
// I have no idea what's wrong :-(
//_cgfxmat->setTechnique(1);
OSG::ChunkMaterialUnrecPtr mat2 = OSG::ChunkMaterial::create();
OSG::MaterialChunkUnrecPtr matc = OSG::MaterialChunk::create();
matc->setDiffuse(OSG::Color4f(1, 0, 0, 1));
mat2->addChunk(matc);
//mat2->addChunk(texc);
// create root node
_scene = OSG::Node::create();
OSG::GeometryUnrecPtr geo1 = OSG::makeLatLongSphereGeo(50, 50, 2.0f);
OSG::calcVertexTangents(geo1,
0,
OSG::Geometry::TexCoords6Index,
OSG::Geometry::TexCoords7Index);
geo1->setMaterial(_cgfxmat);
OSG::NodeUnrecPtr sphere1 = OSG::Node::create();
sphere1->setCore(geo1);
OSG::TransformUnrecPtr trans1 = OSG::Transform::create();
trans1->editMatrix().setTranslate(-2 , 0, 0);
OSG::NodeUnrecPtr transn1 = OSG::Node::create();
transn1->setCore(trans1);
transn1->addChild(sphere1);
//
OSG::GeometryUnrecPtr geo2 = OSG::makeLatLongSphereGeo(50, 50, 1.0f);
geo2->setMaterial(mat2);
OSG::NodeUnrecPtr sphere2 = OSG::Node::create();
sphere2->setCore(geo2);
OSG::TransformUnrecPtr trans2 = OSG::Transform::create();
trans2->editMatrix().setTranslate(2 , 0, 0);
OSG::NodeUnrecPtr transn2 = OSG::Node::create();
transn2->setCore(trans2);
transn2->addChild(sphere2);
_scene->setCore (OSG::Group::create());
_scene->addChild(transn1 );
_scene->addChild(transn2 );
// create the SimpleSceneManager
//.........这里部分代码省略.........
示例8: init
int init(int argc, char **argv)
{
OSG::osgInit(argc,argv);
// GLUT init
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
int winid = glutCreateWindow("OpenSG");
glutKeyboardFunc(key);
glutVisibilityFunc(vis);
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutIdleFunc(display);
// OSG
OSG::SceneFileHandler::the()->print();
// create the graph
// beacon for camera and light
OSG::NodeUnrecPtr b1n = OSG::Node::create();
OSG::GroupUnrecPtr b1 = OSG::Group::create();
b1n->setCore(b1);
// transformation
OSG::NodeUnrecPtr t1n = OSG::Node::create();
OSG::TransformUnrecPtr t1 = OSG::Transform::create();
t1n->setCore (t1 );
t1n->addChild(b1n);
cam_trans = t1;
// light
OSG::NodeUnrecPtr dlight = OSG::Node::create();
OSG::DirectionalLightUnrecPtr dl = OSG::DirectionalLight::create();
dlight->setCore(dl);
dl->setAmbient (0.0, 0.0, 0.0, 1.0);
dl->setDiffuse (0.8, 0.8, 0.8, 1.0);
dl->setDirection(0.0, 0.0, 1.0 );
dl->setBeacon (b1n );
// root
OSG::NodeUnrecPtr root = OSG::Node::create();
OSG::GroupUnrecPtr gr1 = OSG::Group::create();
root->setCore (gr1 );
root->addChild(t1n );
root->addChild(dlight);
// Load the file
OSG::NodeUnrecPtr file = NULL;
if(argc > 1)
{
file = OSG::SceneFileHandler::the()->read(argv[1], NULL);
}
if(file == NULL)
{
std::cerr << "Couldn't load file, ignoring" << std::endl;
//file = OSG::makeSphere(4, 2.0);
file = OSG::Node::create();
OSG::AlgorithmStageUnrecPtr pStage = OSG::AlgorithmStage::create();
file->setCore(pStage);
pAlgo = OSG::GPUVolRTV2::create();
pStage->setAlgorithm(pAlgo);
// fix/freeze the node volume
file->editVolume().setStatic(true);
file->editVolume().setBounds( 0.f, 0.f, 0.f,
1.f, 1.f, 1.f);
}
OSG::commitChanges();
file->updateVolume();
OSG::Vec3f min,max;
file->getVolume().getBounds( min, max );
std::cout << "Volume: from " << min << " to " << max << std::endl;
//.........这里部分代码省略.........
示例9: init
void init(int argc, char *argv[])
{
OSG::osgInit(argc, argv);
int glutWinId = setupGLUT(&argc, argv);
// the connection between GLUT and OpenSG
OSG::GLUTWindowUnrecPtr gwin= OSG::GLUTWindow::create();
gwin->setGlutId(glutWinId);
gwin->init();
// load the scene
root = OSG::ChunkOverrideGroup::create();
rootN = OSG::makeNodeFor(root);
if(argc < 2)
{
FWARNING(("No file given!\n"));
FWARNING(("Supported file formats:\n"));
OSG::SceneFileHandler::the()->print();
sceneN = OSG::makeTorus(.5, 2, 16, 16);
}
else
{
/*
All scene file loading is handled via the SceneFileHandler.
*/
sceneN = OSG::SceneFileHandler::the()->read(argv[1]);
}
OSG::TransformUnrecPtr xform = OSG::Transform::create();
OSG::NodeUnrecPtr xformN = OSG::makeNodeFor(xform);
// xform->editMatrix().setTranslate(OSG::Vec3f(100.f, 0.f, 0.f));
// xform->editMatrix().setRotate(OSG::Quaternion(OSG::Vec3f(0.f, 1.f, 0.f), 0.3f * OSG::Pi));
OSG::NodeUnrecPtr boxN = OSG::makeBox(1.f, 1.f, 5.f, 1, 1, 1);
xformN->addChild(sceneN);
rootN ->addChild(xformN);
rootN ->addChild(boxN );
OSG::commitChanges();
// collect geometries in the scene
collectGeometry(rootN);
// construct skin shader
vpSkin = OSG::ShaderProgram::createVertexShader ();
vpSkin->setProgram(vpCode);
fpSkin = OSG::ShaderProgram::createFragmentShader();
fpSkin->setProgram(fpCode);
shSkin = OSG::ShaderProgramChunk::create();
shSkin->addShader(vpSkin);
shSkin->addShader(fpSkin);
matSkin = OSG::ChunkMaterial::create();
matSkin->addChunk(shSkin);
// process animations
processAnim(sceneN);
// create the SimpleSceneManager helper
mgr = OSG::SimpleSceneManager::create();
// tell the manager what to manage
mgr->setWindow(gwin );
mgr->setRoot (rootN);
// show the whole scene
mgr->showAll();
}
示例10: doMain
int doMain (int argc, char **argv)
{
OSG::osgInit(argc,argv);
// GLUT init
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(800, 800);
int winid = glutCreateWindow("OpenSG");
glutKeyboardFunc(key);
glutVisibilityFunc(vis);
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutIdleFunc(display);
// OSG
OSG::SceneFileHandler::the()->print();
// create the graph
// beacon for camera and light
OSG::NodeUnrecPtr b1n = OSG::Node::create();
OSG::GroupUnrecPtr b1 = OSG::Group::create();
fprintf(stderr, "Create b1n %p %d %d \n",
b1n.get(),
b1n->getRefCount(),
b1n->getWeakRefCount());
b1n->setCore( b1 );
// transformation
OSG::NodeUnrecPtr t1n = OSG::Node::create();
OSG::TransformUnrecPtr t1 = OSG::Transform::create();
t1n->setCore (t1 );
t1n->addChild(b1n);
fprintf(stderr, "Create t1n %p %d %d \n",
t1n.get(),
t1n->getRefCount(),
t1n->getWeakRefCount());
cam_trans = t1;
// light
OSG::NodeUnrecPtr dlight = OSG::Node::create();
OSG::DirectionalLightUnrecPtr dl = OSG::DirectionalLight::create();
{
dlight->setCore(dl);
dl->setAmbient( .3f, .3f, .3f, 1 );
dl->setDiffuse( .8f, .8f, .8f, .8f );
dl->setDirection(0,0,1);
dl->setBeacon( b1n);
}
fprintf(stderr, "Create dlight %p %d %d \n",
dlight.get(),
dlight->getRefCount(),
dlight->getWeakRefCount());
hdrroot = OSG::Node::create();
hdrroot->editVolume().setInfinite();
hdrroot->editVolume().setStatic ();
hdrroot->setCore(OSG::Group::create());
// root
root = OSG::Node:: create();
OSG::GroupUnrecPtr gr1 = OSG::Group::create();
root->setCore(gr1);
hdrroot->addChild(root);
root->addChild(t1n );
root->addChild(dlight);
fprintf(stderr, "Create root %p %d %d \n",
root.get(),
root->getRefCount(),
root->getWeakRefCount());
// Load the file
OSG::NodeUnrecPtr file = NULL;
//.........这里部分代码省略.........
示例11: setupAnim
OSG::NodeTransitPtr setupAnim(void)
{
OSG::NodeTransitPtr returnValue = OSG::Node::create();
returnValue->setCore(OSG::Group::create());
static const OSG::Real32 aOffsets[6][3] =
{
{ -5.5, 0.0, 0.0 },
{ 5.5, 0.0, 0.0 },
{ 0.0, -5.5, 0.0 },
{ 0.0, 5.5, 0.0 },
{ 0.0, 0.0, -5.5 },
{ 0.0, 0.0, 5.5 }
};
static const OSG::Real32 aDiffuse[6][3] =
{
{ 1.f, 0.f, 0.f },
{ 0.f, 1.f, 0.f },
{ 0.f, 0.f, 1.f },
{ 1.f, 1.f, 0.f },
{ 1.f, 0.f, 1.f },
{ 0.f, 1.f, 1.f }
};
for(OSG::UInt32 i = 0; i < 6; ++i)
{
OSG::NodeUnrecPtr pTN = OSG::Node::create();
pAnimTrs[i] = OSG::ComponentTransform::create();
OSG::GeometryUnrecPtr pGeo = OSG::makeBoxGeo(1.f, 1.f, 1.f,
2, 2, 2);
OSG::NodeUnrecPtr pGeoNode = OSG::Node::create();
pGeoNode->setCore(pGeo);
OSG::SimpleMaterialUnrecPtr pMat = OSG::SimpleMaterial::create();
pMat->setDiffuse(OSG::Color3f(aDiffuse[i][0],
aDiffuse[i][1],
aDiffuse[i][2]));
pMat->setAmbient(OSG::Color3f(aDiffuse[i][0],
aDiffuse[i][1],
aDiffuse[i][2]));
pGeo->setMaterial(pMat);
pAnimTrs[i]->editTranslation().setValues(aOffsets[i][0],
aOffsets[i][1],
aOffsets[i][2]);
pTN->setCore (pAnimTrs[i]);
pTN->addChild(pGeoNode );
returnValue->addChild(pTN);
}
return returnValue;
}
示例12: doMain
// Initialize GLUT & OpenSG and set up the scene
int doMain(int argc, char **argv)
{
printf("Press key '9' or '0' to toggle light sources.\n");
printf("Set the shadow mode with key '1' ... '8'\n");
printf("Change MapSize with keys 'y' = 512, 'x' = 1024, 'c' = 2048\n");
printf("NOTE: Real point lights only supported for ShadowMode 1...6!\n");
// OSG init
OSG::osgInit(argc, argv);
// GLUT init
int winid = setupGLUT(&argc, argv);
gwin = OSG::GLUTWindow::create();
//Erstellen der ben�tigten Komponenten--------------------------------------
rootNode = OSG::makeCoredNode<OSG::Group>();
OSG::NodeUnrecPtr scene = OSG::makeCoredNode<OSG::Group>();
/*
// create lights
//Directional Light 1
OSG::NodeUnrecPtr light1 = OSG::makeCoredNode<OSG::DirectionalLight>(&_light1_core);
OSG::NodeUnrecPtr light1_beacon = OSG::makeCoredNode<OSG::Transform>(&_light1_trans);
_light1_trans->editMatrix().setTranslate(0.0, 0.0, 0.0);
_light1_core->setDirection(0.8,0.8,0.5);
_light1_core->setAmbient(0.15,0.15,0.15,1);
_light1_core->setDiffuse(0.5,0.5,0.5,1);
_light1_core->setSpecular(0.0,0.0,0.0,1);
_light1_core->setBeacon(light1_beacon);
_light1_core->setShadowIntensity(0.7);
_light1_core->setOn(true);
*/
// Point Light 1
OSG::NodeUnrecPtr light1 = OSG::makeCoredNode<OSG::PointLight>(&_light1_core);
OSG::NodeUnrecPtr light1_beacon = OSG::makeCoredNode<OSG::Transform >(&_light1_trans);
_light1_trans->editMatrix().setTranslate(50.0, 50.0, 10.0);
_light1_core->setAmbient(0.15f, 0.15f, 0.15f, 1);
_light1_core->setDiffuse(0.5f, 0.5f, 0.5f, 1);
_light1_core->setSpecular(0.0f, 0.0f, 0.0f, 1);
_light1_core->setBeacon(light1_beacon);
_light1_core->setOn(true);
_light1_core->setShadowIntensity(0.8f);
// Spot Light 2
OSG::NodeUnrecPtr light2 = OSG::makeCoredNode<OSG::SpotLight>(&_light2_core);
OSG::NodeUnrecPtr light2_beacon = OSG::makeCoredNode<OSG::Transform>(&_light2_trans);
//_light2_trans->editMatrix().setTranslate(75.0, 0.0, 25.0);
_light2_trans->editMatrix().setTranslate(250.0, -250.0, 300.0);
_light2_core->setAmbient(0.15,0.15,0.15,1);
_light2_core->setDiffuse(0.5,0.5,0.5,1);
_light2_core->setSpecular(0.0,0.0,0.0,1);
_light2_core->setSpotCutOffDeg(40.0);
_light2_core->setSpotDirection(-0.85,0.85,-1.0);
_light2_core->setBeacon(light2_beacon);
_light2_core->setShadowIntensity(0.7);
_light2_core->setOn(true);
/*
// Point Light 2
OSG::NodeUnrecPtr light2 = OSG::makeCoredNode<OSG::PointLight>(&_light2_core);
OSG::NodeUnrecPtr light2_beacon = OSG::makeCoredNode<OSG::Transform> (&_light2_trans);
_light2_trans->editMatrix().setTranslate(40.0, 0.0, 40.0);
_light2_core->setAmbient(0.15f, 0.15f, 0.15f, 1);
_light2_core->setDiffuse(0.5f, 0.5f, 0.5f, 1);
_light2_core->setSpecular(0.0f, 0.0f, 0.0f, 1);
_light2_core->setBeacon(light2_beacon);
_light2_core->setOn(false);
_light2_core->setShadowIntensity(0.7f);
*/
light1->addChild(light2);
light2->addChild(scene);
//Eigene Kamera erstellen
Pcamera = OSG::PerspectiveCamera::create();
cam_beacon = OSG::makeCoredNode<OSG::Transform>(&cam_trans);
cam_trans->editMatrix().setTranslate(0.0, 0.0, 25.0);
Pcamera->setBeacon(cam_beacon);
Pcamera->setFov(OSG::osgDegree2Rad(60));
Pcamera->setNear(1.0);
Pcamera->setFar(1000);
// create scene
// bottom
OSG::NodeUnrecPtr plane = OSG::makePlane(300.0, 300.0, 256, 256);
OSG::ImageUnrecPtr plane_img = OSG::Image::create();
plane_img->read("gras.jpg");
OSG::TextureObjChunkUnrecPtr plane_tex_obj = OSG::TextureObjChunk::create();
OSG::TextureEnvChunkUnrecPtr plane_tex_env = OSG::TextureEnvChunk::create();
plane_tex_obj->setImage(plane_img);
//.........这里部分代码省略.........
示例13: doMain
int doMain (int argc, char **argv)
{
int dummy;
// OSG init
OSG::osgInit(argc, argv);
// create the graph
// beacon for camera and light
OSG::NodeUnrecPtr b1n = OSG::Node::create();
OSG::GroupUnrecPtr b1 = OSG::Group::create();
b1n->setCore( b1 );
// transformation
OSG::NodeUnrecPtr t1n = OSG::Node::create();
OSG::TransformUnrecPtr t1 = OSG::Transform::create();
t1n->setCore( t1 );
t1n->addChild( b1n );
cam_trans = t1;
// light
OSG::NodeUnrecPtr dlight = OSG::Node::create();
OSG::DirectionalLightUnrecPtr dl = OSG::DirectionalLight::create();
dlight->setCore( dl );
dl->setAmbient( .3, .3, .3, 1 );
dl->setDiffuse( 1, 1, 1, 1 );
dl->setDirection(0,0,1);
dl->setBeacon( b1n);
// root
root = OSG::Node::create();
OSG::GroupUnrecPtr gr1 = OSG::Group::create();
root->setCore( gr1 );
root->addChild( t1n );
root->addChild( dlight );
// Load the file
OSG::NodeUnrecPtr file = NULL;
if ( argc > 1 )
file = OSG::SceneFileHandler::the()->read(argv[1]);
if ( file == NULL )
{
std::cerr << "Couldn't load file, ignoring" << std::endl;
file = OSG::makeTorus( .5, 2, 16, 16 );
}
OSG::Thread::getCurrentChangeList()->commitChanges();
file->updateVolume();
OSG::Vec3f min,max;
file->getVolume().getBounds( min, max );
std::cout << "Volume: from " << min << " to " << max << std::endl;
dlight->addChild( file );
std::cerr << "Tree: " << std::endl;
//root->dump();
// Camera
cam = OSG::PerspectiveCamera::create();
cam->setBeacon( b1n );
cam->setFov( OSG::osgDegree2Rad( 90 ) );
cam->setNear( 0.1 );
cam->setFar( 100000 );
// Background
OSG::SolidBackgroundUnrecPtr bkgnd = OSG::SolidBackground::create();
bkgnd->setColor(OSG::Color3f(0,0,1));
// Viewport
vp = OSG::Viewport::create();
vp->setCamera( cam );
vp->setBackground( bkgnd );
vp->setRoot( root );
vp->setSize( 0,0, 1,1 );
// Action
ract = OSG::RenderAction::create();
// tball
OSG::Vec3f pos;
pos.setValues(min[0] + ((max[0] - min[0]) * 0.5),
min[1] + ((max[1] - min[1]) * 0.5),
max[2] + ( max[2] - min[2] ) * 1.5 );
//.........这里部分代码省略.........
示例14: main
int main(int argc, char **argv)
{
OSG::osgInit(argc,argv);
OSG::PerfMonitor::the()->enable(true); // Enable performance monitoring
// GLUT init
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(500, 500);
glutCreateWindow("PerfMonitor FG Test");
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutIdleFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutKeyboardFunc(keyboard);
pwin=OSG::PassiveWindow::create();
pwin->init();
// create the scene
OSG::NodeUnrecPtr scene;
if(argc > 1)
{
scene = OSG::Node::create();
OSG::GroupUnrecPtr g = OSG::Group::create();
scene->setCore(g);
for(OSG::UInt16 i = 1; i < argc; ++i)
scene->addChild(OSG::SceneFileHandler::the()->read(argv[i]));
}
else
{
scene = OSG::makeTorus(.5, 3, 16, 16);
}
// create the SimpleSceneManager helper
mgr = OSG::SimpleSceneManager::create();
// create the window and initial camera/viewport
mgr->setWindow(pwin );
// tell the manager what to manage
mgr->setRoot (scene);
OSG::Thread::getCurrentChangeList()->commitChanges();
// show the whole scene
mgr->showAll();
// add the statistics forground
perfmon_fg = OSG::PerfMonitorForeground::create();
pwin->getPort(0)->addForeground(perfmon_fg);
//statfg->setMaxSize(25);
//statfg->setColor(Color4f(0,1,0,0.7));
act = OSG::RenderAction::create();
mgr->setAction(act);
// GLUT main loop
glutMainLoop();
return 0;
}
示例15: init
void init(std::vector<std::string> &filenames)
{
size_t i;
OSG::DirectionalLightUnrecPtr dl;
OSG::Real32 x,y,z;
OSG::BoxVolume volume;
OSG::Vec3f min,max;
OSG::Vec3f size;
glEnable( GL_DEPTH_TEST );
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
// GLint twoSide = 1;
// glLightModeliv(GL_LIGHT_MODEL_TWO_SIDE,&twoSide);
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
// create the graph
// beacon for camera and light
OSG::NodeUnrecPtr b1n = OSG::Node::create();
OSG::GroupUnrecPtr b1 = OSG::Group::create();
b1n->setCore( b1 );
// transformation
OSG::NodeUnrecPtr t1n = OSG::Node::create();
OSG::TransformUnrecPtr t1 = OSG::Transform::create();
t1n->setCore( t1 );
t1n->addChild( b1n );
cam_trans = t1;
// light
OSG::NodeUnrecPtr dlight = OSG::Node::create();
dl = OSG::DirectionalLight::create();
dlight->setCore( dl );
dl->setAmbient( .3f, .3f, .3f, 1 );
dl->setDiffuse( 1, 1, 1, 1 );
dl->setDirection(0,0,1);
dl->setBeacon( b1n);
// root
root = OSG::Node::create();
OSG::GroupUnrecPtr gr1 = OSG::Group::create();
root->setCore( gr1 );
root->addChild( t1n );
root->addChild( dlight );
// Load the file
OSG::NodeUnrecPtr scene = OSG::Node::create();
scene->setCore(OSG::Group::create());
OSG::NodeUnrecPtr file;
for(i=0;i<filenames.size();i++)
{
file = OSG::SceneFileHandler::the()->read(filenames[i].c_str(),0);
if(file != NULL)
scene->addChild(file);
else
std::cerr << "Couldn't load file, ignoring " << filenames[i] << std::endl;
}
if ( filenames.size()==0 )
{
file = OSG::makeTorus( .5, 2, 16, 16 );
scene->addChild(file);
// scene->addChild(makeBox(.6,.6,.6,5,5,5));
}
prepareSceneGraph(scene);
OSG::Thread::getCurrentChangeList()->commitChanges();
scene->invalidateVolume();
scene->updateVolume();
volume=scene->getVolume();
volume.getBounds(min,max);
size = max-min;
if(ca>0)
{
if(cb==-1)
cb=ca;
if(cc==-1)
cc=cb;
OSG::NodeUnrecPtr node;
OSG::NodeUnrecPtr geoNode;
OSG::TransformUnrecPtr trans;
for(x=-ca/2.0 ; x<ca/2.0 ; x++)
for(y=-cb/2.0 ; y<cb/2.0 ; y++)
for(z=-cc/2.0 ; z<cc/2.0 ; z++)
{
trans=OSG::Transform::create();
node=OSG::Node::create();
node->setCore(trans);
//.........这里部分代码省略.........