OpenStructure
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Data Structures | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends
Scene Class Reference

#include <scene.hh>

Public Member Functions

void SetFog (bool f)
 
bool GetFog () const
 
void SetFogColor (const Color &c)
 
Color GetFogColor () const
 
void SetShadow (bool f)
 
bool GetShadow () const
 
void SetShadowQuality (int q)
 
int GetShadowQuality () const
 
void SetShadowWeight (float w)
 
float GetShadowWeight () const
 
void SetDepthDarkening (bool f)
 
void SetDepthDarkeningWeight (float f)
 
void SetAmbientOcclusion (bool f)
 
bool GetAmbientOcclusion () const
 
void SetAmbientOcclusionWeight (float f)
 
float GetAmbientOcclusionWeight () const
 
void SetAmbientOcclusionMode (uint m)
 
uint GetAmbientOcclusionMode () const
 
void SetAmbientOcclusionQuality (uint q)
 
uint GetAmbientOcclusionQuality () const
 
void SetAmbientOcclusionSize (float f)
 
float GetAmbientOcclusionSize () const
 
void SetHemiParams (const geom::Vec4 &)
 
geom::Vec4 GetHemiParams () const
 
void SetShadingMode (const std::string &smode)
 
geom::Mat4 GetProjection () const
 
geom::Mat4 GetInvertedProjection () const
 
void SetStereoMode (unsigned int mode)
 
int GetStereoMode () const
 
void SetStereoFlip (bool f)
 
bool GetStereoFlip () const
 
void SetStereoView (int)
 
int GetStereoView () const
 
void SetStereoIOD (Real)
 
Real GetStereoIOD () const
 
void SetStereoDistance (Real)
 
Real GetStereoDistance () const
 
void SetStereoAlg (unsigned int)
 
unsigned int GetStereoAlg () const
 
void SetLightDir (const geom::Vec3 &dir)
 
void SetLightProp (const Color &amb, const Color &diff, const Color &spec)
 
void SetLightProp (float amb, float diff, float spec)
 
geom::Vec3 GetLightDir () const
 
geom::Mat3 GetLightRot () const
 
void SetSelectionMode (uint m)
 
uint GetSelectionMode () const
 
void Export (const String &fname, unsigned int w, unsigned int h, bool transparent=false)
 
void Export (const String &fname, unsigned int w, unsigned int h, int max_samples, bool transparent=false)
 
void Export (const String &fname, bool transparent=false)
 
void ExportPov (const std::string &fname, const std::string &wdir=".")
 
void Export (Exporter *ex) const
 
void OnInput (const InputEvent &e)
 
void InitGL (bool full=true)
 
void Resize (int w, int h)
 
void Pick (int mx, int my, int mask)
 
float GetDefaultTextSize ()
 
std::pair< GfxObjP,
mol::AtomHandle
PickAtom (int mx, int my)
 
void RenderGL ()
 
void RequestRedraw ()
 
void StatusMessage (const String &s)
 
void SetViewport (int w, int h)
 
void SetBackground (const Color &c)
 
void SetBackground (const Gradient &g)
 
void SetBackground (const Bitmap &bm)
 
Color GetBackground () const
 
void SetBackgroundStereoMode (bool)
 
bool GetBackgroundStereoMode () const
 
void SetBackgroundStereoOffset (float)
 
float GetBackgroundStereoOffset () const
 
void SetCenter (const geom::Vec3 &cen)
 
geom::Vec3 GetCenter () const
 
void CenterOn (const String &s)
 
void CenterOn (const GfxObjP &s)
 
geom::Vec3 Project (const geom::Vec3 &v, bool ignore_vp=false) const
 
geom::Vec3 UnProject (const geom::Vec3 &v, bool ignore_vp=false) const
 
geom::AlignedCuboid GetBoundingBox (bool use_tf=true) const
 
geom::AlignedCuboid GetBoundingBox (const geom::Transform &tf) const
 
geom::Transform GetTransform () const
 
void SetTransform (const geom::Transform &t)
 
geom::Mat4 GetRTC () const
 
void SetRTC (const geom::Mat4 &rtc)
 
void PushView ()
 
void PopView ()
 
void ResetProjection ()
 
void Register (GLWinBase *win)
 
void Unregister (GLWinBase *win)
 
void AttachObserver (SceneObserver *o)
 
void DetachObserver (SceneObserver *o)
 
bool InOffscreenMode () const
 
void SetTestMode (bool t)
 
float ElapsedTime () const
 
Viewport GetViewport () const
 
bool StartOffscreenMode (unsigned int w, unsigned int h, int max_samples)
 
bool StartOffscreenMode (unsigned int w, unsigned int h)
 
void StopOffscreenMode ()
 
void SetShowCenter (bool f)
 
bool GetShowCenter () const
 
void SetFixCenter (bool f)
 
bool GetFixCenter () const
 
void SetBlur (uint n)
 
void BlurSnapshot ()
 
void RenderText (const TextPrim &t)
 
void SetBeacon (int wx, int wy)
 
void SetBeaconOff ()
 
void SetExportAspect (float a)
 
float GetExportAspect () const
 
void SetShowExportAspect (bool f)
 
bool GetShowExportAspect () const
 
bool HasMultisample () const
 
clipping planes, fog and field-of-view
float GetNear () const
 
void SetNear (float n)
 
float GetFar () const
 
void SetFar (float f)
 
void SetNearFar (float n, float f)
 
void SetFOV (float f)
 
float GetFOV () const
 
float GetAspect () const
 
void SetFogNearOffset (float o)
 
float GetFogNearOffset () const
 
void SetFogFarOffset (float o)
 
float GetFogFarOffset () const
 
void SetFogOffsets (float no, float fo)
 
void Autoslab (bool fast)
 
void Autoslab (bool fast, bool)
 
void AutoslabMax ()
 
void Autoslab ()
 
void SetAutoslabMode (int mode)
 
int GetAutoslabMode () const
 
void AutoAutoslab (bool f)
 
bool GetAutoAutoslab () const
 
scene graph
void Add (const GfxNodeP &go, bool redraw=true)
 
void Remove (const GfxNodeP &go)
 
void Remove (const String &name)
 
void RemoveAll ()
 
bool Rename (const String &old_name, const String &new_name)
 
GfxObjP operator[] (const String &name)
 
bool HasNode (const String &name) const
 
void Apply (const InputEvent &ie, bool request_redraw=true)
 
void Apply (GfxNodeVisitor &v) const
 
size_t GetNodeCount () const
 
GfxNodeP GetRootNode () const
 

Static Public Member Functions

static SceneInstance ()
 

Protected Member Functions

void ObjectChanged (const String &name)
 
void SelectionChanged (const String &name, const mol::EntityView &sel)
 
void NodeTransformed (const GfxObjP &object)
 
void NodeAdded (const GfxNodeP &node)
 
void RenderModeChanged (const String &name)
 

Friends

class impl::SceneFX
 
class GfxObj
 
class GfxNode
 
class Entity
 

Detailed Description

main class for organization and root for the graphical display

The scene manages graphical objects for rendering. Typical graphical objects include entities, isocontoured maps, density slabs, molecular surfaces, or primitives such as cuboids, quads and lines. The nodes are organized in a tree-like structure whose root can obtained with GetRootNode().

The center of the eye is controlled with SetCenter() and CenterOn().

By default, the near and far clipping planes are adjusted such that they contain all visible objects in the scene. This behaviour can be turned of by disabling the AutoAutoslab(). The near and far clipping plane can then be adjusted manually.

Definition at line 81 of file scene.hh.

Member Function Documentation

void Add ( const GfxNodeP go,
bool  redraw = true 
)

add graphical object to scene

void Apply ( const InputEvent ie,
bool  request_redraw = true 
)

actual event handling for scene (internal use)

void Apply ( GfxNodeVisitor v) const

apply node visitor to root node

void AttachObserver ( SceneObserver o)

observer interface (internal use)

void AutoAutoslab ( bool  f)

turn automatic autoslab'bing on or off for each scene update

the current autoslab mode is honored SetAutoslabMode(int)

void Autoslab ( bool  fast)

DEPRECATED, use Autoslab() and SetAutoslabMode(int)

void Autoslab ( bool  fast,
bool   
)

DEPRECATED, use Autoslab() and SetAutoslabMode(int)

void Autoslab ( )

adjust near and far clipping plane to fit visible objects

Use autoslab mode to calculate near and far clipping places; this does not need to be called explicitely if AutoAutoslab is active. Uses the mode set by SetAutoslabMode

void AutoslabMax ( )

DEPRECATED, use SetAutoslabMode(2)

void BlurSnapshot ( )

experimental feature

void CenterOn ( const String s)

center on object of given name

void CenterOn ( const GfxObjP s)

center given object

void DetachObserver ( SceneObserver o)

observer interface (internal use)

float ElapsedTime ( ) const
void Export ( const String fname,
unsigned int  w,
unsigned int  h,
bool  transparent = false 
)

export scene into a bitmap, rendering into offscreen of given size if a main offscreen buffer is active (

See Also
StartOffscreenMode), then the dimensions here are ignored
void Export ( const String fname,
unsigned int  w,
unsigned int  h,
int  max_samples,
bool  transparent = false 
)

export into bitmap, using multisample anti-aliasing

void Export ( const String fname,
bool  transparent = false 
)

export snapshot of current scene

void Export ( Exporter ex) const

export scene via exporter

void ExportPov ( const std::string &  fname,
const std::string &  wdir = "." 
)

export scene into povray files named fname.pov and fname.inc

bool GetAmbientOcclusion ( ) const

experimental feature

uint GetAmbientOcclusionMode ( ) const

experimental feature

uint GetAmbientOcclusionQuality ( ) const

experimental feature

float GetAmbientOcclusionSize ( ) const

experimental feature

float GetAmbientOcclusionWeight ( ) const

experimental feature

float GetAspect ( ) const
inline

Definition at line 180 of file scene.hh.

bool GetAutoAutoslab ( ) const
inline

get current state of automatic autoslab'bing

Definition at line 239 of file scene.hh.

int GetAutoslabMode ( ) const
inline

return current autoslab mode

Definition at line 227 of file scene.hh.

Color GetBackground ( ) const

get background color

bool GetBackgroundStereoMode ( ) const
inline

Definition at line 358 of file scene.hh.

float GetBackgroundStereoOffset ( ) const
inline

Definition at line 362 of file scene.hh.

geom::AlignedCuboid GetBoundingBox ( bool  use_tf = true) const

return bounding box of scene

the sole boolean parameter determines whether or not the scene transformation is applied to calculate the bounding box. Since in most cases it should be used, the default value is true.

geom::AlignedCuboid GetBoundingBox ( const geom::Transform tf) const

return bounding box of with a given transform

geom::Vec3 GetCenter ( ) const

retrieve center

float GetDefaultTextSize ( )
float GetExportAspect ( ) const
inline

Definition at line 523 of file scene.hh.

float GetFar ( ) const

get far clipping plane

bool GetFixCenter ( ) const
inline

return flag

Definition at line 507 of file scene.hh.

bool GetFog ( ) const

check fog status

Color GetFogColor ( ) const

get the fog color

float GetFogFarOffset ( ) const
See Also
SetFogFarOffset
float GetFogNearOffset ( ) const
float GetFOV ( ) const
geom::Vec4 GetHemiParams ( ) const
inline

Definition at line 148 of file scene.hh.

geom::Mat4 GetInvertedProjection ( ) const
inline

Definition at line 155 of file scene.hh.

geom::Vec3 GetLightDir ( ) const
inline

get main light direction

Definition at line 282 of file scene.hh.

geom::Mat3 GetLightRot ( ) const
inline

get main light orientation (internal debugging use)

Definition at line 284 of file scene.hh.

float GetNear ( ) const

get near clipping plane

size_t GetNodeCount ( ) const

get total number of nodes in scene

To obtain the number of top-level nodes, use GfxNode::GetChildCount() of the root node

geom::Mat4 GetProjection ( ) const
inline

Definition at line 154 of file scene.hh.

GfxNodeP GetRootNode ( ) const

get root node of scene graph

geom::Mat4 GetRTC ( ) const

returns a compact, internal representation of the scene orientation

uint GetSelectionMode ( ) const
bool GetShadow ( ) const

get shadow mapping status

int GetShadowQuality ( ) const

get shadow quality

float GetShadowWeight ( ) const

get shadow strength

bool GetShowCenter ( ) const
inline

Definition at line 501 of file scene.hh.

bool GetShowExportAspect ( ) const
inline

Definition at line 525 of file scene.hh.

unsigned int GetStereoAlg ( ) const
inline

return current stereo algorithm

Definition at line 273 of file scene.hh.

Real GetStereoDistance ( ) const
inline

return current stereo distance offset from COR

Definition at line 267 of file scene.hh.

bool GetStereoFlip ( ) const
inline

return invert flag for stereo

Definition at line 251 of file scene.hh.

Real GetStereoIOD ( ) const
inline

return current stereo eye distance

Definition at line 262 of file scene.hh.

int GetStereoMode ( ) const
inline

Definition at line 246 of file scene.hh.

int GetStereoView ( ) const
inline

return current stereo view mode

Definition at line 257 of file scene.hh.

geom::Transform GetTransform ( ) const

get full underlying transformation

Viewport GetViewport ( ) const
bool HasMultisample ( ) const
inline

Definition at line 527 of file scene.hh.

bool HasNode ( const String name) const

whether the scene contains a node of the given name

void InitGL ( bool  full = true)

initialize OpenGL after context has been setup (internal use)

bool InOffscreenMode ( ) const
static Scene& Instance ( )
static
void NodeAdded ( const GfxNodeP node)
protected
void NodeTransformed ( const GfxObjP object)
protected
void ObjectChanged ( const String name)
protected
void OnInput ( const InputEvent e)

entry point for gui events (internal use)

GfxObjP operator[] ( const String name)

retrieve gfx object by name

void Pick ( int  mx,
int  my,
int  mask 
)

pick at given mouse coords

std::pair<GfxObjP, mol::AtomHandle> PickAtom ( int  mx,
int  my 
)

pick atom at given mouse coord

void PopView ( )

retrieve a previously pushed orientation

geom::Vec3 Project ( const geom::Vec3 v,
bool  ignore_vp = false 
) const

calculate projection of a point into the scene

void PushView ( )

push the current orientation onto a stack

void Register ( GLWinBase win)

gui glue interface (internal use)

void Remove ( const GfxNodeP go)

remove graphical object from scene remove graphical object from the scene

void Remove ( const String name)

remove graphical object from the scene

void RemoveAll ( )

remove all objects from the scene

bool Rename ( const String old_name,
const String new_name 
)

rename an existing graphical object defunct for now

void RenderGL ( )

render all gl objects (internal use)

void RenderModeChanged ( const String name)
protected
void RenderText ( const TextPrim t)

internal use

void RequestRedraw ( )

request redraw of gl scene

void ResetProjection ( )

brief re-generates the projection matrix (internal use)

void Resize ( int  w,
int  h 
)

handle new viewport size (internal use)

void SelectionChanged ( const String name,
const mol::EntityView sel 
)
protected
void SetAmbientOcclusion ( bool  f)

experimental feature

void SetAmbientOcclusionMode ( uint  m)

experimental feature

void SetAmbientOcclusionQuality ( uint  q)

experimental feature

void SetAmbientOcclusionSize ( float  f)

experimental feature

void SetAmbientOcclusionWeight ( float  f)

experimental feature

void SetAutoslabMode ( int  mode)
inline

set autoslab mode

0: fast (default), using only the bounding box 1: precise, using each graphical element (not implemented) 2: max, using maximal extent upon rotation

Definition at line 222 of file scene.hh.

void SetBackground ( const Color c)

set background color

void SetBackground ( const Gradient g)

set background gradient

void SetBackground ( const Bitmap bm)

set background image

void SetBackgroundStereoMode ( bool  )

use bg bitmap for stereo mode this tiles the background bitmap at the far plane

void SetBackgroundStereoOffset ( float  )

background tile left/right offset

void SetBeacon ( int  wx,
int  wy 
)

experimental feature

void SetBeaconOff ( )

experimental feature

void SetBlur ( uint  n)

experimental feature

void SetCenter ( const geom::Vec3 cen)

center rotation on the given point

void SetDepthDarkening ( bool  f)

experimental feature

void SetDepthDarkeningWeight ( float  f)

experimental feature

void SetExportAspect ( float  a)
void SetFar ( float  f)

set far clipping plane

void SetFixCenter ( bool  f)
inline

if true fix center of rotation upon input induced shift

Definition at line 504 of file scene.hh.

void SetFog ( bool  f)

turn fog on or off

void SetFogColor ( const Color c)

set the fog color

void SetFogFarOffset ( float  o)

offset between far clipping plane and end of fog

void SetFogNearOffset ( float  o)

offset between near clipping plane and start of fog

void SetFogOffsets ( float  no,
float  fo 
)

convenciene function to set fog near and far offset

void SetFOV ( float  f)

set field of view angle

void SetHemiParams ( const geom::Vec4 )
void SetLightDir ( const geom::Vec3 dir)

set main light direction

void SetLightProp ( const Color amb,
const Color diff,
const Color spec 
)

set ambient, diffuse and specular light color

void SetLightProp ( float  amb,
float  diff,
float  spec 
)

set ambient, diffuse and specular light intensity

void SetNear ( float  n)

set near clipping plane

void SetNearFar ( float  n,
float  f 
)

set near and far clipping plane at once

void SetRTC ( const geom::Mat4 rtc)

sets a previously retrieved orientation

void SetSelectionMode ( uint  m)

set the selection mode

void SetShadingMode ( const std::string &  smode)

select shading mode one of fallback, basic, default, hf, toon1, toon2

void SetShadow ( bool  f)

turn shadow mapping on and off

void SetShadowQuality ( int  q)

shadow quality from 0 (low) to 3 (high), default=1

void SetShadowWeight ( float  w)

multiplier for shadow strength

void SetShowCenter ( bool  f)

show center of rotation of true

void SetShowExportAspect ( bool  f)
void SetStereoAlg ( unsigned  int)

set stereo algorithm one of 0 (default) or 1

void SetStereoDistance ( Real  )

set stereo distance offset from COR

void SetStereoFlip ( bool  f)

invert stereo eyes for stereo mode=0

void SetStereoIOD ( Real  )

set stereo eye distance

void SetStereoMode ( unsigned int  mode)

set stereo mode one of 0 (off), 1 (quad-buffered) 2 (interlaced (for special monitors))

void SetStereoView ( int  )

stereo view mode one of 0 (center), -1 (left), 1 (right)

void SetTestMode ( bool  t)

switch into test mode (internal use)

void SetTransform ( const geom::Transform t)

set transform

void SetViewport ( int  w,
int  h 
)

set the viewport; the mapping to the visible window (internal use)

bool StartOffscreenMode ( unsigned int  w,
unsigned int  h,
int  max_samples 
)

This method has two different tasks.

During interactive rendering, it facilitates export into an offscreen buffer with Scene::Export(file,width,height) by avoiding repeated initializations of the GL state, e.g. during animation rendering.

During batch mode, this is the only way to get meaningful functionality with the gfx module

Returns true upon success and false upon failure

You can ask for multisampling to be enabled by giving the max_samples a value larger than zero; in this case, the framebuffer with at most this many samplebuffers will be used. The recommended value here is 4; going to 8 or 16 may give you higher export times with usually no marked increase in quality.

bool StartOffscreenMode ( unsigned int  w,
unsigned int  h 
)
void StatusMessage ( const String s)

send status message to gui

void StopOffscreenMode ( )

stops offline rendering in interactive mode

geom::Vec3 UnProject ( const geom::Vec3 v,
bool  ignore_vp = false 
) const

calculate unprojected point out of the scene

void Unregister ( GLWinBase win)

gui glue interface (internal use)

Friends And Related Function Documentation

friend class Entity
friend

Definition at line 533 of file scene.hh.

friend class GfxNode
friend

Definition at line 530 of file scene.hh.

friend class GfxObj
friend

Definition at line 529 of file scene.hh.

friend class impl::SceneFX
friend

Definition at line 82 of file scene.hh.


The documentation for this class was generated from the following file: