main class for organization and root for the graphical display More...
#include <scene.hh>
Data Structures | |
struct | SceneViewStackEntry |
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 Scene & | Instance () |
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 |
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.
void Add | ( | const GfxNodeP & | go, | |
bool | redraw = true | |||
) |
add graphical object to scene
void Apply | ( | GfxNodeVisitor & | v | ) | const |
apply node visitor to root node
void Apply | ( | const InputEvent & | ie, | |
bool | request_redraw = true | |||
) |
actual event handling for scene (internal use)
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 | ( | ) |
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 Autoslab | ( | bool | fast, | |
bool | ||||
) |
DEPRECATED, use Autoslab() and SetAutoslabMode(int).
void Autoslab | ( | bool | fast | ) |
DEPRECATED, use Autoslab() and SetAutoslabMode(int).
void AutoslabMax | ( | ) |
DEPRECATED, use SetAutoslabMode(2).
void BlurSnapshot | ( | ) |
experimental feature
void CenterOn | ( | const GfxObjP & | s | ) |
center given object
void CenterOn | ( | const String & | s | ) |
center on object of given name
void DetachObserver | ( | SceneObserver * | o | ) |
observer interface (internal use)
float ElapsedTime | ( | ) | const |
void Export | ( | Exporter * | ex | ) | const |
export scene via exporter
void Export | ( | const String & | fname, | |
bool | transparent = false | |||
) |
export snapshot of current scene
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, | |
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 (
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
bool GetAutoAutoslab | ( | ) | const [inline] |
int GetAutoslabMode | ( | ) | const [inline] |
Color GetBackground | ( | ) | const |
get background color
geom::AlignedCuboid GetBoundingBox | ( | const geom::Transform & | tf | ) | const |
return bounding box of with a given transform
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::Vec3 GetCenter | ( | ) | const |
retrieve center
float GetDefaultTextSize | ( | ) |
float GetFar | ( | ) | const |
get far clipping plane
bool GetFog | ( | ) | const |
check fog status
Color GetFogColor | ( | ) | const |
get the fog color
float GetFogFarOffset | ( | ) | const |
float GetFogNearOffset | ( | ) | const |
float GetFOV | ( | ) | const |
geom::Vec4 GetHemiParams | ( | ) | const [inline] |
geom::Mat4 GetInvertedProjection | ( | ) | const [inline] |
geom::Vec3 GetLightDir | ( | ) | const [inline] |
geom::Mat3 GetLightRot | ( | ) | const [inline] |
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] |
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
unsigned int GetStereoAlg | ( | ) | const [inline] |
Real GetStereoDistance | ( | ) | const [inline] |
bool GetStereoFlip | ( | ) | const [inline] |
Real GetStereoIOD | ( | ) | const [inline] |
int GetStereoView | ( | ) | const [inline] |
geom::Transform GetTransform | ( | ) | const |
get full underlying transformation
Viewport GetViewport | ( | ) | const |
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)
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 Remove | ( | const String & | name | ) |
remove graphical object from the scene
void Remove | ( | const GfxNodeP & | go | ) |
remove graphical object from scene remove graphical object from the scene
void RemoveAll | ( | ) |
remove all objects from the scene
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] |
void SetBackground | ( | const Bitmap & | bm | ) |
set background image
void SetBackground | ( | const Gradient & | g | ) |
set background gradient
void SetBackground | ( | const Color & | c | ) |
set background color
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] |
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 | ( | float | amb, | |
float | diff, | |||
float | spec | |||
) |
set ambient, diffuse and specular light intensity
set ambient, diffuse and specular light color
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 | |||
) |
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.
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
friend class impl::SceneFX [friend] |