コード例 #1
0
ファイル: Scene.cpp プロジェクト: bxs3514/Realtime_GI
SceneObject *Scene::addDynamicOpaqueObject(Model *model, float scale, const Float3 &pos, const Quaternion &rot)
{
	Assert_(model != nullptr);
	Assert_(_numObjectBases < MAX_DYNAMIC_OBJECTS);
	Assert_(_numTotalModelsShared < MAX_MODELS);
	Assert_(_numObjectBases < MAX_OBJECT_MATRICES);
	Assert_(_numPrevWVPs < MAX_OBJECT_MATRICES);

	uint64 modelIndex = getModelIndex(model);
	Assert_(modelIndex != -1);

	_objectBases[_numObjectBases] = createBase(scale, pos, rot);
	_prevWVPs[_numPrevWVPs] = _objectBases[_numObjectBases];
	_sceneStaticOpaqueObjectBounds[_numStaticOpaqueObjects] = SceneObjectBound();

	SceneObject &obj = _dynamicOpaqueObjects[_numDynamicOpaqueObjects];
	obj.base = &_objectBases[_numObjectBases];
	obj.model = model;
	obj.bound = &_sceneDynamicOpaqueObjectBounds[_numDynamicOpaqueObjects];
	obj.prevWVP = &_prevWVPs[_numPrevWVPs];
	obj.id = _highestSceneObjId++;

	genSceneObjectBounds(DYNAMIC_OBJ | OPAQUE_OBJ, _numDynamicOpaqueObjects, modelIndex);

	_numObjectBases++;
	_numPrevWVPs++;
	_numDynamicOpaqueObjects++;

	return &obj;
}
コード例 #2
0
ファイル: animate.cpp プロジェクト: gideonmay/PyOSG
osg::Node* createModel(bool overlay, osgSim::OverlayNode::OverlayTechnique technique)
{
    osg::Vec3 center(0.0f,0.0f,0.0f);
    float radius = 100.0f;

    osg::Group* root = new osg::Group;

    float baseHeight = center.z()-radius*0.5;
    osg::Node* baseModel = createBase(osg::Vec3(center.x(), center.y(), baseHeight),radius);
    osg::Node* movingModel = createMovingModel(center,radius*0.8f);

    if (overlay)
    {
        osgSim::OverlayNode* overlayNode = new osgSim::OverlayNode(technique);
        overlayNode->setContinuousUpdate(true);
        overlayNode->setOverlaySubgraph(movingModel);
        overlayNode->setOverlayBaseHeight(baseHeight-0.01);
        overlayNode->addChild(baseModel);
        root->addChild(overlayNode);
    }
    else
    {

        root->addChild(baseModel);
    }

    root->addChild(movingModel);

    return root;
}
コード例 #3
0
osg::Node* createModel()
{
    osg::Vec3 center(0.0f,0.0f,0.0f);
    float radius = 100.0f;

    osg::Group* root = new osg::Group;

    root->addChild(createMovingModel(center,radius*0.8f));

    root->addChild(createBase(center-osg::Vec3(0.0f,0.0f,radius*0.5),radius));

    return root;
}
コード例 #4
0
void geHorizontalSlider::create(rendererGL10* renderer, geGUIBase* parent, const char* name, float x, float y, float cx)
{
	createBase(renderer, parent);

	setSize(cx, 5);
	setPos(x, y);

	STRCPY(m_szName, name);
	setClientAreaPrimaryActiveForeColor(0.21f, 0.21f, 0.21f, 1.0f);
	applyPrimaryColorToVBClientArea(EGRADIENT_VERTICAL_DOWN, 0.4f);
	setColor(&m_cVBGrabberArea, 0.6f, 0.6f, 0.6f, 1.0f, EGRADIENT_VERTICAL_UP, 0.5f);

	m_fSliderPos=0.0f;
	m_bGrabbed=false;
	m_fMousePrevXPos=0.0f;
	setMouseBoundCheck(false);
	setRange(0.0f, 1.0f);
}
コード例 #5
0
ファイル: Scene.cpp プロジェクト: bxs3514/Realtime_GI
void Scene::setProxySceneObject(const std::wstring &modelPath, float scale, const Float3 &pos, const Quaternion &rot)
{
	Model *m = addModel(modelPath);
	_objectBases[_numObjectBases] = createBase(scale, pos, rot);
	_prevWVPs[_numPrevWVPs] = _objectBases[_numObjectBases];

	SceneObject &obj = _proxySceneObject;
	obj.base = &_objectBases[_numObjectBases];
	obj.model = m;
	obj.bound = nullptr;
	obj.prevWVP = &_prevWVPs[_numPrevWVPs];
	obj.id = _highestSceneObjId++;

	_numObjectBases++;
	_numPrevWVPs++;

	_hasProxySceneObject = true;
}
コード例 #6
0
ファイル: osgshadow.cpp プロジェクト: AnthonyYou/osg
    osg::Node* createModel(osg::ArgumentParser& /*arguments*/)
    {
        osg::Vec3 center(0.0f,0.0f,0.0f);
        float radius = 100.0f;
        // the shadower model
        osg::Node* shadower = createMovingModel(center,radius*0.5f);
        shadower->setNodeMask(CastsShadowTraversalMask);

        // the shadowed model
        osg::Node* shadowed = createBase(center-osg::Vec3(0.0f,0.0f,radius*0.25),radius);
        shadowed->setNodeMask(ReceivesShadowTraversalMask);

        osg::Group* group = new osg::Group;

        group->addChild(shadowed);
        group->addChild(shadower);

        return group;
    }
コード例 #7
0
osg::Node* createModel()
{
    osg::Vec3 center(0.0f,0.0f,0.0f);
    float radius = 100.0f;

    // the shadower model
    osg::Node* shadower = createMovingModel(center,radius*0.5f);

    // the shadowed model
    osg::Node* shadowed = createBase(center-osg::Vec3(0.0f,0.0f,radius*0.1),radius);

    // combine the models together to create one which has the shadower and the shadowed with the required callback.
    osg::Group* root = new osg::Group;

    root->setStateSet(createSpotLightDecoratorState(0,1));

    root->addChild(shadower);
    root->addChild(shadowed);

    return root;
}
コード例 #8
0
ファイル: Scene.cpp プロジェクト: bxs3514/Realtime_GI
SceneObject *Scene::addStaticOpaquePlaneObject(float scale, const Float3 &pos, const Quaternion &rot)
{
	Assert_(_numObjectBases < MAX_STATIC_OBJECTS);
	Assert_(_numTotalModelsShared < MAX_MODELS);
	Assert_(_numObjectBases < MAX_OBJECT_MATRICES);
	Assert_(_numPrevWVPs < MAX_OBJECT_MATRICES);

	if (!_planeModel)
	{
		addPlaneModel();
		_modelIndices.push_back(_numTotalModelsShared - 1);
	}

	uint64 modelIndex = getModelIndex(_planeModel);
	Assert_(modelIndex != -1);

	_objectBases[_numObjectBases] = createBase(scale, pos, rot);
	_prevWVPs[_numPrevWVPs] = _objectBases[_numObjectBases];
	_sceneStaticOpaqueObjectBounds[_numStaticOpaqueObjects] = SceneObjectBound();

	SceneObject &obj = _staticOpaqueObjects[_numStaticOpaqueObjects];
	obj.base = &_objectBases[_numObjectBases];
	obj.model = _planeModel;
	obj.bound = &_sceneStaticOpaqueObjectBounds[_numStaticOpaqueObjects];
	obj.prevWVP = &_prevWVPs[_numPrevWVPs];
	obj.id = _highestSceneObjId++;


	genSceneObjectBounds(STATIC_OBJ | OPAQUE_OBJ, _numStaticOpaqueObjects, modelIndex);

	_numObjectBases++;
	_numPrevWVPs++;
	_numStaticOpaqueObjects++;

	return &obj;
}
コード例 #9
0
ファイル: Index.cpp プロジェクト: sietse/otter-browser
Index::Index(const std::string &language):
	language_(language)
{
	findDirectories();
	createBase();
}
コード例 #10
0
ファイル: Index.cpp プロジェクト: sietse/otter-browser
Index::Index()
{
	findDirectories();
	createBase();
}
コード例 #11
0
void
f ()
{
    createBase().memberFunction();
}
コード例 #12
0
osg::Group* QOSG::ProjectiveARViewer::createProjectorScene() {

    unsigned int tex_width = 2048;
    unsigned int tex_height = 2048;
    unsigned int samples = 0;
    unsigned int colorSamples = 0;

    osg::Camera::RenderTargetImplementation renderImplementation = osg::Camera::FRAME_BUFFER_OBJECT;

    // load model to view
    osg::Node* model = viewerPerspective->getSceneData();
    if(!model)
        model = osgDB::readNodeFile("cessna.osgt");

    if (!model){
        return NULL;
    }

    // texture to render to and to use for rendering of graph.
    osg::Texture2D* texture = new osg::Texture2D;
    texture->setTextureSize(tex_width, tex_height);
    texture->setInternalFormat(GL_RGBA);
    texture->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::LINEAR);
    texture->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR);

    // create the camera node to do the render to texture
    if (!renderCamera)
        renderCamera = new osg::Camera;

    // set up the background color and clear mask.
    renderCamera->setClearColor(osg::Vec4(0.0f, 0.0f, 0.0f, 1.0f));
    renderCamera->setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    double fovy, aspectRatio, zNear, zFar;
    viewerPerspective->getCamera()->getProjectionMatrixAsPerspective(fovy, aspectRatio, zNear, zFar);
    renderCamera->setProjectionMatrixAsPerspective(viewerFOV, 1.0, zNear, zFar);

    if(useGraph){
        const osg::BoundingSphere& bs = model->getBound();
        if (!bs.valid())
        {
            return NULL;
        }
        osg::Vec3d viewerRelPos(viewerPos - graphPos);

        osg::Vec3d renderCameraRelPos(viewerRelPos * (bs.radius() / graphRadius));

        renderCamera->setViewMatrixAsLookAt(renderCameraRelPos + bs.center(), bs.center(), osg::Vec3(0.0f, 0.0f, 1.0f));
    }
    else{
        renderCamera->setViewMatrix(viewerPerspective->getCamera()->getViewMatrix());
    }
    renderCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);

    // set viewport
    renderCamera->setViewport(0, 0, tex_width, tex_height);

    // set the camera to render before the main camera.
    renderCamera->setRenderOrder(osg::Camera::PRE_RENDER);

    // tell the camera to use OpenGL frame buffer object where supported.
    renderCamera->setRenderTargetImplementation(renderImplementation);

    // attach the texture and use it as the color buffer.
    renderCamera->attach(osg::Camera::COLOR_BUFFER, texture,
        0, 0, false,
        samples, colorSamples);

    // add subgraph to render
    renderCamera->addChild(model);

    osg::Group* projectorScene = new osg::Group;
    base = createBase();

    /* Enable projective texturing for all objects of base */
    if(useGraph){
        base->setStateSet(createProjectorState(texture, viewerPos, graphPos - viewerPos, viewerFOV));
    }
    else{
        base->setStateSet(createProjectorState(texture, viewerPos, viewerDir, viewerFOV));
    }

    projectorScene->addChild(base);
    projectorScene->addChild(renderCamera);

    return projectorScene;
}