Home | Download | Screen shots | Discussion | Documentation |
---|
A window-system specific subclass needs to redefine the pure virtual methods.
Public Types | |
enum | { max_lights = 8 } |
enum | light_type { light_unused, light_directional, light_positional } |
Light type. More... | |
enum | event_type { event_key_down, event_mouse_move, event_mouse_click, event_mouse_drag, event_mouse_release } |
Event type. More... | |
enum | { key_home, key_left, key_up, key_right, key_down, key_page_up, key_page_down } |
Public Member Functions | |
viewer () | |
Construct a viewer for the specified browser. | |
virtual | ~viewer () throw () |
Destroy. | |
virtual rendering_mode | mode () |
Rendering mode. | |
virtual double | frame_rate () |
Frame rate. | |
virtual void | reset_user_navigation () |
Reset the user view to the position and orientation of the currently bound Viewpoint node. | |
virtual object_t | begin_object (const char *id, bool retain) |
Begin a display list. | |
virtual void | end_object () |
End of group scope. | |
virtual object_t | insert_background (const std::vector< float > &groundAngle, const std::vector< color > &groundColor, const std::vector< float > &skyAngle, const std::vector< color > &skyColor, const image &front, const image &back, const image &left, const image &right, const image &top, const image &bottom) |
Insert a background into a display list. | |
virtual object_t | insert_box (const vec3f &size) |
Insert a box into a display list. | |
virtual object_t | insert_cone (float height, float radius, bool bottom, bool side) |
Insert a cone into a display list. | |
virtual object_t | insert_cylinder (float height, float radius, bool bottom, bool side, bool top) |
Insert a cylinder into a display list. | |
virtual object_t | insert_elevation_grid (unsigned int mask, const std::vector< float > &height, int32 xDimension, int32 zDimension, float xSpacing, float zSpacing, const std::vector< color > &color, const std::vector< vec3f > &normal, const std::vector< vec2f > &texCoord) |
Insert an elevation grid into a display list. | |
virtual object_t | insert_extrusion (unsigned int, const std::vector< vec3f > &spine, const std::vector< vec2f > &crossSection, const std::vector< openvrml::rotation > &orientation, const std::vector< vec2f > &scale) |
virtual object_t | insert_line_set (const std::vector< vec3f > &coord, const std::vector< int32 > &coordIndex, bool colorPerVertex, const std::vector< color > &color, const std::vector< int32 > &colorIndex) |
Insert a line set into a display list. | |
virtual object_t | insert_point_set (const std::vector< vec3f > &coord, const std::vector< color > &color) |
Insert a point set into a display list. | |
virtual object_t | insert_shell (unsigned int mask, const std::vector< vec3f > &coord, const std::vector< int32 > &coordIndex, const std::vector< color > &color, const std::vector< int32 > &colorIndex, const std::vector< vec3f > &normal, const std::vector< int32 > &normalIndex, const std::vector< vec2f > &texCoord, const std::vector< int32 > &texCoordIndex) |
Insert a shell into a display list. | |
virtual object_t | insert_sphere (float radius) |
Insert a sphere into a display list. | |
virtual object_t | insert_dir_light (float ambientIntensity, float intensity, const color &color, const vec3f &direction) |
Insert a directional light into a display list. | |
virtual object_t | insert_point_light (float ambientIntensity, const vec3f &attenuation, const color &color, float intensity, const vec3f &location, float radius) |
Insert a point light into a display list. | |
virtual object_t | insert_spot_light (float ambientIntensity, const vec3f &attenuation, float beamWidth, const color &color, float cutOffAngle, const vec3f &direction, float intensity, const vec3f &location, float radius) |
Insert a point light into a display list. | |
virtual object_t | insert_reference (object_t existing_object) |
Insert a reference to an existing object into a display list. | |
virtual void | remove_object (object_t ref) |
Remove an object from the display list. | |
virtual void | enable_lighting (bool) |
Enable/disable lighting. | |
virtual void | set_color (const color &rgb, float a=1.0) |
Set the color. | |
virtual void | set_fog (const color &color, float visibilityRange, const char *type) |
Set the fog. | |
virtual void | set_material (float ambientIntensity, const color &diffuseColor, const color &emissiveColor, float shininess, const color &specularColor, float transparency) |
Set the material. | |
virtual void | set_material_mode (size_t tex_components, bool geometry_color) |
Set the material mode. | |
virtual void | set_sensitive (node *object) |
Indicate that a node should be sensitive to the pointing device. | |
virtual texture_object_t | insert_texture (const image &img, bool repeat_s, bool repeat_t, bool retainHint=false) |
Create a texture object. | |
virtual void | insert_texture_reference (texture_object_t ref, size_t components) |
Insert a texture into the display list from an existing handle. | |
virtual void | remove_texture_object (texture_object_t) |
Remove a texture from the display list. | |
virtual void | set_texture_transform (const vec2f ¢er, float rotation, const vec2f &scale, const vec2f &translation) |
Set the texture transform. | |
virtual void | set_viewpoint (const vec3f &position, const openvrml::rotation &orientation, float fieldOfView, float avatarSize, float visibilityLimit) |
Set the viewpoint. | |
virtual void | transform (const mat4f &mat) |
Multiply the current modelview matrix by mat . | |
virtual void | transform_points (size_t nPoints, vec3f *point) const |
Transform points by the current modelview matrix. | |
virtual void | draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection) |
Draw a bounding sphere. | |
void | update (double time=0.0) |
Update the scene. | |
virtual void | redraw () |
Redraw the scene. | |
void | resize (size_t width, size_t height) |
Resize the viewport. | |
void | input (event_info *e) |
Handle an event generated from user input. | |
Protected Types | |
enum | cursor_style { cursor_inherit, cursor_info, cursor_cycle, cursor_up_down, cursor_crosshair } |
Cursor style. More... | |
enum | { maxsensitive = 1000 } |
Protected Member Functions | |
virtual void | post_redraw ()=0 |
Called to indicate to the windowing system that a redraw is necessary. | |
virtual void | set_cursor (cursor_style c)=0 |
Called to set the cursor style. | |
virtual void | swap_buffers ()=0 |
Called to indicate to the windowing system that the front and back buffers should be swapped. | |
virtual void | set_timer (double interval)=0 |
Set a delay. | |
void | initialize () |
Initialize. | |
void | begin_geometry () |
Reset per-geometry attributes. | |
void | end_geometry () |
Reset attributes changed during geometry insertion. | |
void | step (float, float, float) |
Translate the user view. | |
void | zoom (float) |
Zoom. | |
void | rotate (const openvrml::rotation &rot) throw () |
Rotate the user view. | |
void | handleKey (int) |
Handle keypresses. | |
void | handleButton (event_info *e) |
Handle mouse button up/down. | |
void | handleMouseDrag (int, int) |
Handle mouse dragging. | |
bool | checkSensitive (int x, int y, event_type event) |
Protected Attributes | |
modelview_matrix_stack | modelview_matrix_stack_ |
Modelview matrix stack. | |
bool | gl_initialized |
Indicate whether OpenGL has been initialized for rendering. | |
bool | blend |
Indicate whether alpha blending is enabled. | |
bool | lit |
Indicate whether lighting is enabled. | |
bool | texture |
Indicate whether texture mapping is enabled. | |
bool | wireframe |
Indicate whether wireframe mode is enabled. | |
size_t | win_width |
Window width. | |
size_t | win_height |
Window height. | |
color | background |
Background color. | |
size_t | objects |
Number of objects. | |
size_t | nested_objects |
Number of nested objects. | |
GLUtesselator * | tesselator |
GLU tesselation object. | |
size_t | sensitive |
Count of sensitive nodes. | |
size_t | active_sensitive |
Count of active sensitive nodes. | |
size_t | over_sensitive |
Count of sensitive nodes the mouse is over. | |
node * | sensitive_object [maxsensitive] |
Sensitive nodes. | |
bool | select_mode |
Indicate whether the renderer is in select mode. | |
double | select_z |
Window z-coordinate of last selection. | |
light_info | light_info_ [max_lights] |
light_info for the lights in the scene. | |
int | beginx |
Mouse drag start x-coordinate. | |
int | beginy |
Mouse drag start y-coordinate. | |
bool | rotating |
Whether the viewer is in the process of rotating. | |
bool | scaling |
Whether the viewer is in the process of scaling. | |
bool | translating |
Whether the viewer is in the process of translating. | |
bool | draw_bounding_spheres |
Whether to draw bounding spheres. | |
double | render_time |
Updated at the end of redraw with the time redraw took to execute. | |
double | render_time1 |
Rendering time for the previous cycle. | |
Classes | |
struct | event_info |
Input event. More... | |
struct | light_info |
Light information. More... | |
class | modelview_matrix_stack |
Encapsulates an extended modelview matrix stack. More... |
|
Reimplemented from openvrml::viewer. |
|
Light type.
|
|
Event type.
|
|
Cursor style.
|
|
|
|
Construct a viewer for the specified browser.
Reimplemented from openvrml::viewer. |
|
Destroy.
Implements openvrml::viewer. |
|
Called to indicate to the windowing system that a redraw is necessary.
|
|
Called to set the cursor style.
|
|
Called to indicate to the windowing system that the front and back buffers should be swapped.
|
|
Set a delay.
|
|
Initialize.
|
|
Reset per-geometry attributes. Called after the appearance/material has been set. |
|
Reset attributes changed during geometry insertion.
|
|
Translate the user view.
|
|
Zoom.
|
|
Rotate the user view.
|
|
Handle keypresses.
|
|
Handle mouse button up/down.
|
|
Handle mouse dragging.
|
|
Check for pickable objects. |
|
Rendering mode.
Implements openvrml::viewer. |
|
Frame rate.
Implements openvrml::viewer. |
|
Reset the user view to the position and orientation of the currently bound Viewpoint node.
Implements openvrml::viewer. |
|
Begin a display list. begin_object/end_object should correspond to grouping_nodes. Group-level scoping for directional lights, anchors, sensors are handled here. Display lists can optionally be created (but the retain flag is just a hint, not guaranteed). Retained objects can be referred to later to avoid duplicating geometry. OpenGL doesn't allow nested objects. The top-down approach of putting entire groups in display lists is faster for static scenes but uses more memory and means that if anything is changed, the whole object must be tossed. The bottom-up model wraps each piece of geometry in a dlist but requires traversal of the entire scene graph to reference each dlist. The decision about what groups to stuff in an object is punted to the object itself, as it can decide whether it is mutable. The OpenGL viewer never puts objects in display lists, so the retain hint is ignored.
Implements openvrml::viewer. |
|
End of group scope.
Implements openvrml::viewer. |
|
Insert a background into a display list.
Implements openvrml::viewer. |
|
Insert a box into a display list.
Implements openvrml::viewer. |
|
Insert a cone into a display list.
Implements openvrml::viewer. |
|
Insert a cylinder into a display list.
Implements openvrml::viewer. |
|
Insert an elevation grid into a display list.
Implements openvrml::viewer. |
|
Insert a line set into a display list.
Implements openvrml::viewer. |
|
Insert a point set into a display list.
Implements openvrml::viewer. |
|
Insert a shell into a display list.
Implements openvrml::viewer. |
|
Insert a sphere into a display list.
Implements openvrml::viewer. |
|
Insert a directional light into a display list.
Implements openvrml::viewer. |
|
Insert a point light into a display list.
Implements openvrml::viewer. |
|
Insert a point light into a display list.
Implements openvrml::viewer. |
|
Insert a reference to an existing object into a display list.
|
|
Remove an object from the display list.
|
|
Enable/disable lighting.
Implements openvrml::viewer. |
|
Set the color.
Implements openvrml::viewer. |
|
Set the fog.
Implements openvrml::viewer. |
|
Set the material.
Implements openvrml::viewer. |
|
Set the material mode.
Implements openvrml::viewer. |
|
Indicate that a node should be sensitive to the pointing device.
Implements openvrml::viewer. |
|
Create a texture object.
Implements openvrml::viewer. |
|
Insert a texture into the display list from an existing handle.
|
|
Remove a texture from the display list.
|
|
Set the texture transform. Texture coordinate transform Tc' = -C x S x R x C x T x Tc
Implements openvrml::viewer. |
|
Set the viewpoint.
Implements openvrml::viewer. |
|
Multiply the current modelview matrix by
Implements openvrml::viewer. |
|
Transform
Implements openvrml::viewer. |
|
Draw a bounding sphere. Used for debugging view culling. Probably should be draw_bounding_volume and handle axis_aligned_bounding_boxes as well.
Implements openvrml::viewer. |
|
Update the scene. update is called from a timer callback and from checkSensitive.
|
|
Redraw the scene.
|
|
Resize the viewport.
|
|
Handle an event generated from user input.
|
|
Modelview matrix stack.
|
|
Indicate whether OpenGL has been initialized for rendering.
|
|
Indicate whether alpha blending is enabled.
|
|
Indicate whether lighting is enabled.
|
|
Indicate whether texture mapping is enabled.
|
|
Indicate whether wireframe mode is enabled.
|
|
Window width.
|
|
Window height.
|
|
Background color.
|
|
Number of objects.
|
|
Number of nested objects.
|
|
GLU tesselation object.
|
|
Count of sensitive nodes.
|
|
Count of active sensitive nodes.
|
|
Count of sensitive nodes the mouse is over.
|
|
Sensitive nodes.
|
|
Indicate whether the renderer is in select mode.
|
|
Window z-coordinate of last selection.
|
|
light_info for the lights in the scene.
|
|
Mouse drag start x-coordinate.
|
|
Mouse drag start y-coordinate.
|
|
Whether the viewer is in the process of rotating.
|
|
Whether the viewer is in the process of scaling.
|
|
Whether the viewer is in the process of translating.
|
|
Whether to draw bounding spheres.
|
|
Updated at the end of redraw with the time redraw took to execute.
|
|
Rendering time for the previous cycle.
|