void ScenePath::setScene( ScenePlugPtr scene ) { if( m_scene == scene ) { return; } if( havePathChangedSignal() ) { m_node->plugDirtiedSignal().disconnect( boost::bind( &ScenePath::plugDirtied, this, ::_1 ) ); } m_scene = scene; m_node = scene->node(); if( m_node && havePathChangedSignal() ) { m_node->plugDirtiedSignal().connect( boost::bind( &ScenePath::plugDirtied, this, ::_1 ) ); } emitPathChanged(); }
SceneView::SceneView( const std::string &name ) : View3D( name, new GafferScene::ScenePlug() ), m_sceneGadget( new SceneGadget ) { // add plugs and signal handling for them storeIndexOfNextChild( g_firstPlugIndex ); addChild( new IntPlug( "minimumExpansionDepth", Plug::In, 0, 0, Imath::limits<int>::max(), Plug::Default & ~Plug::AcceptsInputs ) ); plugSetSignal().connect( boost::bind( &SceneView::plugSet, this, ::_1 ) ); // set up our gadgets viewportGadget()->setPrimaryChild( m_sceneGadget ); viewportGadget()->keyPressSignal().connect( boost::bind( &SceneView::keyPress, this, ::_1, ::_2 ) ); m_sceneGadget->baseState()->add( const_cast<IECoreGL::State *>( baseState() ) ); m_sceneGadget->setContext( getContext() ); baseStateChangedSignal().connect( boost::bind( &SceneView::baseStateChanged, this ) ); m_lookThrough = boost::shared_ptr<LookThrough>( new LookThrough( this ) ); m_grid = boost::shared_ptr<Grid>( new Grid( this ) ); m_gnomon = boost::shared_ptr<Gnomon>( new Gnomon( this ) ); m_shadingMode = boost::shared_ptr<ShadingMode>( new ShadingMode( this ) ); ////////////////////////////////////////////////////////////////////////// // add a preprocessor which monkeys with the scene before it is displayed. ////////////////////////////////////////////////////////////////////////// NodePtr preprocessor = new Node(); ScenePlugPtr preprocessorInput = new ScenePlug( "in" ); preprocessor->addChild( preprocessorInput ); // add a node for hiding things StandardAttributesPtr hide = new StandardAttributes( "hide" ); hide->attributesPlug()->getChild<ValuePlug>( "visibility" )->getChild<BoolPlug>( "enabled" )->setValue( true ); hide->attributesPlug()->getChild<ValuePlug>( "visibility" )->getChild<BoolPlug>( "value" )->setValue( false ); preprocessor->addChild( hide ); hide->inPlug()->setInput( preprocessorInput ); PathFilterPtr hideFilter = new PathFilter( "hideFilter" ); preprocessor->addChild( hideFilter ); hide->filterPlug()->setInput( hideFilter->outPlug() ); // add in the node from the ShadingMode preprocessor->addChild( m_shadingMode->preprocessor() ); m_shadingMode->preprocessor()->inPlug()->setInput( hide->outPlug() ); // make the output for the preprocessor ScenePlugPtr preprocessorOutput = new ScenePlug( "out", Plug::Out ); preprocessor->addChild( preprocessorOutput ); preprocessorOutput->setInput( m_shadingMode->preprocessor()->outPlug() ); setPreprocessor( preprocessor ); // connect up our scene gadget m_sceneGadget->setScene( preprocessedInPlug<ScenePlug>() ); }
ScenePath::ScenePath( ScenePlugPtr scene, Gaffer::ContextPtr context, const Names &names, const IECore::InternedString &root, Gaffer::PathFilterPtr filter ) : Path( names, root, filter ), m_node( scene->node() ), m_scene( scene ), m_context( context ) { }
ScenePath::ScenePath( ScenePlugPtr scene, Gaffer::ContextPtr context, const std::string &path, Gaffer::PathFilterPtr filter ) : Path( path, filter ), m_node( scene->node() ), m_scene( scene ), m_context( context ) { }
ScenePath::ScenePath( ScenePlugPtr scene, Gaffer::ContextPtr context, Gaffer::PathFilterPtr filter ) : Path( filter ), m_node( scene->node() ), m_scene( scene ), m_context( context ) { }
SceneView::SceneView( const std::string &name ) : View3D( name, new GafferScene::ScenePlug() ), m_renderableGadget( new RenderableGadget ) { // add plugs and signal handling for them storeIndexOfNextChild( g_firstPlugIndex ); addChild( new IntPlug( "minimumExpansionDepth", Plug::In, 0, 0, Imath::limits<int>::max(), Plug::Default & ~Plug::AcceptsInputs ) ); CompoundPlugPtr lookThrough = new CompoundPlug( "lookThrough", Plug::In, Plug::Default & ~Plug::AcceptsInputs ); lookThrough->addChild( new BoolPlug( "enabled", Plug::In, false, Plug::Default & ~Plug::AcceptsInputs ) ); lookThrough->addChild( new StringPlug( "camera", Plug::In, "", Plug::Default & ~Plug::AcceptsInputs ) ); addChild( lookThrough ); plugSetSignal().connect( boost::bind( &SceneView::plugSet, this, ::_1 ) ); // set up our gadgets viewportGadget()->setPrimaryChild( m_renderableGadget ); m_selectionChangedConnection = m_renderableGadget->selectionChangedSignal().connect( boost::bind( &SceneView::selectionChanged, this, ::_1 ) ); viewportGadget()->keyPressSignal().connect( boost::bind( &SceneView::keyPress, this, ::_1, ::_2 ) ); m_renderableGadget->baseState()->add( const_cast<IECoreGL::State *>( baseState() ) ); baseStateChangedSignal().connect( boost::bind( &SceneView::baseStateChanged, this ) ); m_grid = boost::shared_ptr<Grid>( new Grid( this ) ); ////////////////////////////////////////////////////////////////////////// // add a preprocessor which monkeys with the scene before it is displayed. ////////////////////////////////////////////////////////////////////////// NodePtr preprocessor = new Node(); ScenePlugPtr preprocessorInput = new ScenePlug( "in" ); preprocessor->addChild( preprocessorInput ); // remove motion blur, because the opengl renderer doesn't support it. StandardOptionsPtr standardOptions = new StandardOptions( "disableBlur" ); standardOptions->optionsPlug()->getChild<CompoundPlug>( "transformBlur" )->getChild<BoolPlug>( "enabled" )->setValue( true ); standardOptions->optionsPlug()->getChild<CompoundPlug>( "transformBlur" )->getChild<BoolPlug>( "value" )->setValue( false ); standardOptions->optionsPlug()->getChild<CompoundPlug>( "deformationBlur" )->getChild<BoolPlug>( "enabled" )->setValue( true ); standardOptions->optionsPlug()->getChild<CompoundPlug>( "deformationBlur" )->getChild<BoolPlug>( "value" )->setValue( false ); preprocessor->addChild( standardOptions ); standardOptions->inPlug()->setInput( preprocessorInput ); // add a node for hiding things StandardAttributesPtr hide = new StandardAttributes( "hide" ); hide->attributesPlug()->getChild<CompoundPlug>( "visibility" )->getChild<BoolPlug>( "enabled" )->setValue( true ); hide->attributesPlug()->getChild<CompoundPlug>( "visibility" )->getChild<BoolPlug>( "value" )->setValue( false ); preprocessor->addChild( hide ); hide->inPlug()->setInput( standardOptions->outPlug() ); PathFilterPtr hideFilter = new PathFilter( "hideFilter" ); preprocessor->addChild( hideFilter ); hide->filterPlug()->setInput( hideFilter->matchPlug() ); // make the output for the preprocessor ScenePlugPtr preprocessorOutput = new ScenePlug( "out", Plug::Out ); preprocessor->addChild( preprocessorOutput ); preprocessorOutput->setInput( hide->outPlug() ); setPreprocessor( preprocessor ); }