openvrml::viewer Class Reference

Map the scene graph to the underlying graphics library. More...

#include <openvrml/viewer.h>

Inheritance diagram for openvrml::viewer:

Public Types

enum  rendering_mode {
  draw_mode,
  pick_mode
}
 The rendering mode. More...

Public Member Functions

virtual ~viewer ()=0 throw ()
 Destroy.
rendering_mode mode ()
 Get the rendering mode.
double frame_rate ()
 Get the frame rate.
void reset_user_navigation ()
 Return view to the last bound Viewpoint.
void begin_object (const char *id, bool retain=false)
 Begin a display list.
void end_object ()
 End a display list.
void insert_background (const background_node &n)
 Insert a background into a display list.
void insert_box (const geometry_node &n, const vec3f &size)
 Insert a box into a display list.
void insert_cone (const geometry_node &n, float height, float radius, bool bottom, bool side)
 Insert a cone into a display list.
void insert_cylinder (const geometry_node &n, float height, float radius, bool bottom, bool side, bool top)
 Insert a cylinder into a display list.
void insert_elevation_grid (const geometry_node &n, unsigned int mask, const std::vector< float > &height, int32 x_dimension, int32 z_dimension, float x_spacing, float z_spacing, const std::vector< color > &color, const std::vector< vec3f > &normal, const std::vector< vec2f > &tex_coord)
 Insert an elevation grid into a display list.
void insert_extrusion (const geometry_node &n, unsigned int mask, const std::vector< vec3f > &spine, const std::vector< vec2f > &cross_section, const std::vector< rotation > &orientation, const std::vector< vec2f > &scale)
 Insert an extrusion into a display list.
void insert_line_set (const geometry_node &n, const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, bool color_per_vertex, const std::vector< color > &color, const std::vector< int32 > &color_index)
 Insert a line set into a display list.
void insert_point_set (const geometry_node &n, const std::vector< vec3f > &coord, const std::vector< color > &color)
 Insert a point set into a display list.
void insert_shell (const geometry_node &n, unsigned int mask, const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, const std::vector< color > &color, const std::vector< int32 > &color_index, const std::vector< vec3f > &normal, const std::vector< int32 > &normal_index, const std::vector< vec2f > &tex_coord, const std::vector< int32 > &tex_coord_index)
 Insert a shell into a display list.
void insert_sphere (const geometry_node &n, float radius)
 Insert a sphere into a display list.
void insert_dir_light (float ambient_intensity, float intensity, const color &color, const vec3f &direction)
 Insert a directional light into a display list.
void insert_point_light (float ambient_intensity, const vec3f &attenuation, const color &color, float intensity, const vec3f &location, float radius)
 Insert a point light into a display list.
void insert_spot_light (float ambient_intensity, const vec3f &attenuation, float beam_width, const color &color, float cut_off_angle, const vec3f &direction, float intensity, const vec3f &location, float radius)
 Insert a point light into a display list.
void remove_object (const node &n)
 Remove an object from the display list.
void enable_lighting (bool val)
 Enable/disable lighting.
void set_fog (const color &color, float visibility_range, const char *type)
 Set the fog.
void set_color (const color &rgb, float a=1.0)
 Set the color.
void set_material (float ambient_intensity, const color &diffuse_color, const color &emissive_color, float shininess, const color &specular_color, float transparency)
 Set the material.
void set_material_mode (size_t tex_components, bool geometry_color)
 Set the material mode.
void set_sensitive (node *object)
 Indicate that a node should be sensitive to the pointing device.
void insert_texture (const texture_node &n, bool retainHint=false)
 Create a texture object.
void remove_texture_object (const texture_node &n)
 Remove a texture from the display list.
void set_texture_transform (const vec2f &center, float rotation, const vec2f &scale, const vec2f &translation)
 Set the texture transform.
void set_frustum (float field_of_view, float avatar_size, float visibility_limit)
 Set the frustum.
void set_viewpoint (const vec3f &position, const rotation &orientation, float avatar_size, float visibility_limit)
 Set the viewpoint.
void transform (const mat4f &mat)
 Transform the modelview.
void transform_points (size_t nPoints, vec3f *point) const
 Transform points by the current modelview matrix.
const openvrml::frustumfrustum () const
 The frustum.
void frustum (const openvrml::frustum &f)
 Set the frustum.
bounding_volume::intersection intersect_view_volume (const bounding_volume &bvolume) const
 Intersect the given bounding volume with the view volume.
void draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection)
 Draw a bounding sphere.

Protected Member Functions

 viewer () throw ()
 Construct.
virtual
bounding_volume::intersection 
do_intersect_view_volume (const bounding_volume &bvolume) const
 Intersect the given bounding volume with the view volume.
virtual const openvrml::frustumdo_frustum () const
virtual void do_frustum (const openvrml::frustum &f)
 Set the frustum.

Protected Attributes

openvrml::frustum frustum_
 The frustum.

Private Member Functions

virtual rendering_mode do_mode ()=0
 Get the rendering mode.
virtual double do_frame_rate ()=0
 Get the frame rate.
virtual void do_reset_user_navigation ()=0
 Return view to the last bound Viewpoint.
virtual void do_begin_object (const char *id, bool retain=false)=0
 Begin a display list.
virtual void do_end_object ()=0
 End a display list.
virtual void do_insert_background (const background_node &n)=0
 Insert a background into a display list.
virtual void do_insert_box (const geometry_node &n, const vec3f &size)=0
 Insert a box into a display list.
virtual void do_insert_cone (const geometry_node &n, float height, float radius, bool bottom, bool side)=0
 Insert a cone into a display list.
virtual void do_insert_cylinder (const geometry_node &n, float height, float radius, bool bottom, bool side, bool top)=0
 Insert a cylinder into a display list.
virtual void do_insert_elevation_grid (const geometry_node &n, unsigned int mask, const std::vector< float > &height, int32 x_dimension, int32 z_dimension, float x_spacing, float z_spacing, const std::vector< color > &color, const std::vector< vec3f > &normal, const std::vector< vec2f > &tex_coord)=0
 Insert an elevation grid into a display list.
virtual void do_insert_extrusion (const geometry_node &n, unsigned int mask, const std::vector< vec3f > &spine, const std::vector< vec2f > &cross_section, const std::vector< rotation > &orientation, const std::vector< vec2f > &scale)=0
 Insert an extrusion into a display list.
virtual void do_insert_line_set (const geometry_node &n, const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, bool color_per_vertex, const std::vector< color > &color, const std::vector< int32 > &color_index)=0
 Insert a line set into a display list.
virtual void do_insert_point_set (const geometry_node &n, const std::vector< vec3f > &coord, const std::vector< color > &color)=0
 Insert a point set into a display list.
virtual void do_insert_shell (const geometry_node &n, unsigned int mask, const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, const std::vector< color > &color, const std::vector< int32 > &color_index, const std::vector< vec3f > &normal, const std::vector< int32 > &normal_index, const std::vector< vec2f > &tex_coord, const std::vector< int32 > &tex_coord_index)=0
 Insert a shell into a display list.
virtual void do_insert_sphere (const geometry_node &n, float radius)=0
 Insert a sphere into a display list.
virtual void do_insert_dir_light (float ambient_intensity, float intensity, const color &color, const vec3f &direction)=0
 Insert a directional light into a display list.
virtual void do_insert_point_light (float ambient_intensity, const vec3f &attenuation, const color &color, float intensity, const vec3f &location, float radius)=0
 Insert a point light into a display list.
virtual void do_insert_spot_light (float ambient_intensity, const vec3f &attenuation, float beam_width, const color &color, float cut_off_angle, const vec3f &direction, float intensity, const vec3f &location, float radius)=0
 Insert a point light into a display list.
virtual void do_remove_object (const node &ref)=0
 Remove an object from the display list.
virtual void do_enable_lighting (bool val)=0
 Enable/disable lighting.
virtual void do_set_fog (const color &color, float visibility_range, const char *type)=0
 Set the fog.
virtual void do_set_color (const color &rgb, float a=1.0)=0
 Set the color.
virtual void do_set_material (float ambient_intensity, const color &diffuse_color, const color &emissive_color, float shininess, const color &specular_color, float transparency)=0
 Set the material.
virtual void do_set_material_mode (size_t tex_components, bool geometry_color)=0
 Set the material mode.
virtual void do_set_sensitive (node *object)=0
 Indicate that a node should be sensitive to the pointing device.
virtual void do_insert_texture (const texture_node &n, bool retainHint)=0
 Create a texture object.
virtual void do_remove_texture_object (const texture_node &ref)=0
 Remove a texture from the display list.
virtual void do_set_texture_transform (const vec2f &center, float rotation, const vec2f &scale, const vec2f &translation)=0
 Set the texture transform.
virtual void do_set_frustum (float field_of_view, float avatar_size, float visibility_limit)=0
 Set the frustum.
virtual void do_set_viewpoint (const vec3f &position, const rotation &orientation, float avatar_size, float visibility_limit)=0
 Set the viewpoint.
virtual void do_transform (const mat4f &mat)=0
 Transform the modelview.
virtual void do_transform_points (size_t nPoints, vec3f *point) const =0
 Transform points by the current modelview matrix.
virtual void do_draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection)=0
 Draw a bounding sphere.

Private Attributes

openvrml::browserbrowser_
 A pointer to the browser with which the viewer is currently associated.

Detailed Description

Map the scene graph to the underlying graphics library.

Member Enumeration Documentation

The rendering mode.

Enumerator:
draw_mode 

Draw mode.

pick_mode 

Pick mode.

Constructor & Destructor Documentation

openvrml::viewer::~viewer ( ) throw ()
pure virtual

Destroy.

Implemented in openvrml::gl::viewer.

openvrml::viewer::viewer ( ) throw ()
protected

Construct.

Reimplemented in openvrml::gl::viewer.

Member Function Documentation

openvrml::viewer::rendering_mode openvrml::viewer::mode ( )

Get the rendering mode.

This function delegates to viewer::do_mode.

Returns
the rendering mode.
double openvrml::viewer::frame_rate ( )

Get the frame rate.

This function delegates to viewer::do_frame_rate.

Returns
the frame rate.
void openvrml::viewer::reset_user_navigation ( )

Return view to the last bound Viewpoint.

This function delegates to viewer::do_reset_user_navigation.

void openvrml::viewer::begin_object ( const char *  id,
bool  retain = false 
)

Begin a display list.

Parameters
[in]idobject identifier.
[in]retainwhether the object should be retained for reuse.

This function delegates to viewer::do_begin_object.

void openvrml::viewer::end_object ( )

End a display list.

This function delegates to viewer::do_end_object.

void openvrml::viewer::insert_background ( const background_node n)

Insert a background into a display list.

This function delegates to viewer::do_insert_background.

Parameters
[in]na background_node.
void openvrml::viewer::insert_box ( const geometry_node n,
const vec3f size 
)

Insert a box into a display list.

This function delegates to viewer::do_insert_box.

Parameters
[in]nthe geometry_node corresponding to the box.
[in]sizebox dimensions.
void openvrml::viewer::insert_cone ( const geometry_node n,
float  height,
float  radius,
bool  bottom,
bool  side 
)

Insert a cone into a display list.

This function delegates to viewer::do_insert_cone.

Parameters
[in]nthe geometry_node corresponding to the cone.
[in]heightheight.
[in]radiusradius at base.
[in]bottomshow the bottom.
[in]sideshow the side.
void openvrml::viewer::insert_cylinder ( const geometry_node n,
float  height,
float  radius,
bool  bottom,
bool  side,
bool  top 
)

Insert a cylinder into a display list.

This function delegates to viewer::do_insert_cylinder.

Parameters
[in]nthe geometry_node corresponding to the cylinder.
[in]heightheight.
[in]radiusradius.
[in]bottomshow the bottom.
[in]sideshow the side.
[in]topshow the top.
void openvrml::viewer::insert_elevation_grid ( const geometry_node n,
unsigned int  mask,
const std::vector< float > &  height,
int32  x_dimension,
int32  z_dimension,
float  x_spacing,
float  z_spacing,
const std::vector< color > &  color,
const std::vector< vec3f > &  normal,
const std::vector< vec2f > &  tex_coord 
)

Insert an elevation grid into a display list.

This function delegates to viewer::do_insert_elevation_grid.

Parameters
[in]nthe geometry_node corresponding to the elevation grid.
[in]mask
[in]heightheight field.
[in]x_dimensionvertices in the x direction.
[in]z_dimensionvertices in the z direction.
[in]x_spacingdistance between vertices in the x direction.
[in]z_spacingdistance between vertices in the z direction.
[in]colorcolors.
[in]normalnormals.
[in]tex_coordtexture coordinates.
void openvrml::viewer::insert_extrusion ( const geometry_node n,
unsigned int  mask,
const std::vector< vec3f > &  spine,
const std::vector< vec2f > &  cross_section,
const std::vector< rotation > &  orientation,
const std::vector< vec2f > &  scale 
)

Insert an extrusion into a display list.

This function delegates to viewer::do_insert_extrusion.

Parameters
[in]nthe geometry_node corresponding to the extrusion.
[in]mask
[in]spinespine points.
[in]cross_sectioncross-sections.
[in]orientationcross-section orientations.
[in]scalecross-section scales.
void openvrml::viewer::insert_line_set ( const geometry_node n,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
bool  color_per_vertex,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index 
)

Insert a line set into a display list.

This function delegates to viewer::do_insert_line_set.

Parameters
[in]nthe geometry_node corresponding to the line set.
[in]coordcoordinates.
[in]coord_indexcoordinate indices.
[in]color_per_vertexwhether colors are applied per-vertex or per-face.
[in]colorcolors.
[in]color_indexcolor indices.
void openvrml::viewer::insert_point_set ( const geometry_node n,
const std::vector< vec3f > &  coord,
const std::vector< color > &  color 
)

Insert a point set into a display list.

This function delegates to viewer::insert_point_set.

Parameters
[in]nthe geometry_node corresponding to the point set.
[in]coordpoints.
[in]colorcolors.
void openvrml::viewer::insert_shell ( const geometry_node n,
unsigned int  mask,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index,
const std::vector< vec3f > &  normal,
const std::vector< int32 > &  normal_index,
const std::vector< vec2f > &  tex_coord,
const std::vector< int32 > &  tex_coord_index 
)

Insert a shell into a display list.

This function delegates to viewer::do_insert_shell.

Parameters
[in]nthe geometry_node corresponding to the shell.
[in]mask
[in]coordcoordinates.
[in]coord_indexcoordinate indices.
[in]colorcolors.
[in]color_indexcolor indices.
[in]normalnormals.
[in]normal_indexnormal indices.
[in]tex_coordtexture coordinates.
[in]tex_coord_indextexture coordinate indices.
void openvrml::viewer::insert_sphere ( const geometry_node n,
float  radius 
)

Insert a sphere into a display list.

This function delegates to viewer::do_insert_sphere.

Parameters
[in]nthe geometry_node corresponding to the sphere.
[in]radiussphere radius.
void openvrml::viewer::insert_dir_light ( float  ambient_intensity,
float  intensity,
const color color,
const vec3f direction 
)

Insert a directional light into a display list.

This function delegates to viewer::do_insert_dir_light.

Parameters
[in]ambient_intensityambient intensity.
[in]intensityintensity.
[in]colorcolor.
[in]directiondirection.
void openvrml::viewer::insert_point_light ( float  ambient_intensity,
const vec3f attenuation,
const color color,
float  intensity,
const vec3f location,
float  radius 
)

Insert a point light into a display list.

This function delegates to viewer::do_insert_point_light.

Parameters
[in]ambient_intensityambient intensity.
[in]attenuationattenuation.
[in]colorcolor.
[in]intensityintensity.
[in]locationlocation.
[in]radiusradius.
void openvrml::viewer::insert_spot_light ( float  ambient_intensity,
const vec3f attenuation,
float  beam_width,
const color color,
float  cut_off_angle,
const vec3f direction,
float  intensity,
const vec3f location,
float  radius 
)

Insert a point light into a display list.

This function delegates to viewer::do_insert_spot_light.

Parameters
[in]ambient_intensityambient intensity.
[in]attenuationattenuation.
[in]beam_widthbeam width.
[in]colorcolor.
[in]cut_off_anglecut-off angle.
[in]directiondirection.
[in]intensityintensity.
[in]locationlocation.
[in]radiusradius.
void openvrml::viewer::remove_object ( const node ref)

Remove an object from the display list.

This function delegates to viewer::do_remove_object.

Parameters
[in]refobject handle.
void openvrml::viewer::enable_lighting ( bool  val)

Enable/disable lighting.

This function delegates to viewer::do_enable_lighting.

Parameters
[in]valwhether lighting should be enabled.
void openvrml::viewer::set_fog ( const color color,
float  visibility_range,
const char *  type 
)

Set the fog.

This function delegates to viewer::do_set_fog.

Parameters
[in]colorfog color.
[in]visibility_rangethe distance at which objects are fully obscured by fog.
[in]typefog type.
void openvrml::viewer::set_color ( const color rgb,
float  a = 1.0 
)

Set the color.

This function delegates to viewer::do_set_color.

Parameters
[in]rgbred, green, and blue components.
[in]aalpha (transparency) component.
void openvrml::viewer::set_material ( float  ambient_intensity,
const color diffuse_color,
const color emissive_color,
float  shininess,
const color specular_color,
float  transparency 
)

Set the material.

This function delegates to viewer::do_set_material.

Parameters
[in]ambient_intensityambient intensity.
[in]diffuse_colordiffuse color.
[in]emissive_coloremissive color.
[in]shininessshininess.
[in]specular_colorspecular color.
[in]transparencytransparency.
void openvrml::viewer::set_material_mode ( size_t  tex_components,
bool  geometry_color 
)

Set the material mode.

This function delegates to viewer::do_set_material_mode.

Parameters
[in]tex_componentstexture components.
[in]geometry_colorgeometry color.
void openvrml::viewer::set_sensitive ( node object)

Indicate that a node should be sensitive to the pointing device.

This function delegates to viewer::do_set_sensitive.

Parameters
[in]objecta node.
void openvrml::viewer::insert_texture ( const texture_node n,
bool  retainHint = false 
)

Create a texture object.

This function delegates to viewer::do_insert_texture.

Parameters
[in]na texture_node.
[in]retainHintwhether the texture is likely to be reused.
void openvrml::viewer::remove_texture_object ( const texture_node ref)

Remove a texture from the display list.

This function delegates to viewer::do_remove_texture_object.

Parameters
[in]reftexture handle.
void openvrml::viewer::set_texture_transform ( const vec2f center,
float  rotation,
const vec2f scale,
const vec2f translation 
)

Set the texture transform.

This function delegates to viewer::do_set_texture_transform.

Parameters
[in]centercenter.
[in]rotationrotation.
[in]scalescale.
[in]translationtranslation.
void openvrml::viewer::set_frustum ( float  field_of_view,
float  avatar_size,
float  visibility_limit 
)

Set the frustum.

This function delegates to viewer::do_set_frustum.

Parameters
[in]field_of_viewfield of view.
[in]avatar_sizeavatar size.
[in]visibility_limitvisibility limit.
void openvrml::viewer::set_viewpoint ( const vec3f position,
const rotation orientation,
float  avatar_size,
float  visibility_limit 
)

Set the viewpoint.

This function delegates to viewer::do_set_viewpoint.

Parameters
[in]positionposition.
[in]orientationorientation.
[in]avatar_sizeavatar size.
[in]visibility_limitvisiblity limit.
void openvrml::viewer::transform ( const mat4f mat)

Transform the modelview.

Make the modelview matrix the result of multiplying mat by the current modelview matrix.

This function delegates to viewer::do_transform.

Parameters
[in]mattransformation matrix.
void openvrml::viewer::transform_points ( size_t  nPoints,
vec3f point 
) const

Transform points by the current modelview matrix.

This function delegates to viewer::do_transform_points.

Parameters
[in]nPointsnumber of points.
[in]pointpointer to the first point in an array.
const openvrml::frustum & openvrml::viewer::frustum ( ) const

The frustum.

This function delegates to viewer::do_frustum.

Returns
the frustum.
void openvrml::viewer::frustum ( const openvrml::frustum f)

Set the frustum.

This function delegates to viewer::do_frustum(const openvrml::frustum &).

Parameters
[in]fnew frustum value.
openvrml::bounding_volume::intersection openvrml::viewer::intersect_view_volume ( const bounding_volume bvolume) const

Intersect the given bounding volume with the view volume.

This function delegates to viewer::do_intersect_view_volume.

Parameters
[in]bvolumethe bounding volume to intersect with the view volume.
Returns
bounding_volume::inside, bounding_volume::outside, or bounding_volume::partial.
void openvrml::viewer::draw_bounding_sphere ( const bounding_sphere bs,
bounding_volume::intersection  intersection 
)

Draw a bounding sphere.

Used for debugging view culling. Probably should be draw_bounding_volume and handle axis_aligned_bounding_boxes as well.

This function delegates to viewer::do_draw_bounding_sphere.

Parameters
[in]bsa bounding sphere; if max, will not be drawn
[in]intersectionone of the bvolume intersection test constants, or 4 to draw in unique way. (useful for debugging)
openvrml::bounding_volume::intersection openvrml::viewer::do_intersect_view_volume ( const bounding_volume bvolume) const
protectedvirtual

Intersect the given bounding volume with the view volume.

This goes into the viewer to provide a hook for systems that use nonstandard view volumes. Most subclasses should be able to use the default implementation provided here. If your view volume is so strange that there's no way to cull to it, then reimplement to return bounding_volume::inside always.

Parameters
[in]bvolumethe bounding volume to intersect with the view volume.
Returns
bounding_volume::inside, bounding_volume::outside, or bounding_volume::partial.
const openvrml::frustum & openvrml::viewer::do_frustum ( ) const
protectedvirtual
Returns
the frustum.
void openvrml::viewer::do_frustum ( const openvrml::frustum f)
protectedvirtual

Set the frustum.

Parameters
[in]fnew frustum value.
openvrml::viewer::rendering_mode openvrml::viewer::do_mode ( )
privatepure virtual

Get the rendering mode.

Returns
the rendering mode.
double openvrml::viewer::do_frame_rate ( )
privatepure virtual

Get the frame rate.

Returns
the frame rate.
void openvrml::viewer::do_reset_user_navigation ( )
privatepure virtual

Return view to the last bound Viewpoint.

void openvrml::viewer::do_begin_object ( const char *  id,
bool  retain = false 
)
privatepure virtual

Begin a display list.

Parameters
[in]idobject identifier.
[in]retainwhether the object should be retained for reuse.
void openvrml::viewer::do_end_object ( )
privatepure virtual

End a display list.

void openvrml::viewer::do_insert_background ( const background_node n)
privatepure virtual

Insert a background into a display list.

Parameters
[in]na background_node.
void openvrml::viewer::do_insert_box ( const geometry_node n,
const vec3f size 
)
privatepure virtual

Insert a box into a display list.

Parameters
[in]nthe geometry_node corresponding to the box.
[in]sizebox dimensions.
void openvrml::viewer::do_insert_cone ( const geometry_node n,
float  height,
float  radius,
bool  bottom,
bool  side 
)
privatepure virtual

Insert a cone into a display list.

Parameters
[in]nthe geometry_node corresponding to the cone.
[in]heightheight.
[in]radiusradius at base.
[in]bottomshow the bottom.
[in]sideshow the side.
void openvrml::viewer::do_insert_cylinder ( const geometry_node n,
float  height,
float  radius,
bool  bottom,
bool  side,
bool  top 
)
privatepure virtual

Insert a cylinder into a display list.

Parameters
[in]nthe geometry_node corresponding to the cylinder.
[in]heightheight.
[in]radiusradius.
[in]bottomshow the bottom.
[in]sideshow the side.
[in]topshow the top.
void openvrml::viewer::do_insert_elevation_grid ( const geometry_node n,
unsigned int  mask,
const std::vector< float > &  height,
int32  x_dimension,
int32  z_dimension,
float  x_spacing,
float  z_spacing,
const std::vector< color > &  color,
const std::vector< vec3f > &  normal,
const std::vector< vec2f > &  tex_coord 
)
privatepure virtual

Insert an elevation grid into a display list.

Parameters
[in]nthe geometry_node corresponding to the elevation grid.
[in]mask
[in]heightheight field.
[in]x_dimensionvertices in the x direction.
[in]z_dimensionvertices in the z direction.
[in]x_spacingdistance between vertices in the x direction.
[in]z_spacingdistance between vertices in the z direction.
[in]colorcolors.
[in]normalnormals.
[in]tex_coordtexture coordinates.
void openvrml::viewer::do_insert_extrusion ( const geometry_node n,
unsigned int  mask,
const std::vector< vec3f > &  spine,
const std::vector< vec2f > &  cross_section,
const std::vector< rotation > &  orientation,
const std::vector< vec2f > &  scale 
)
privatepure virtual

Insert an extrusion into a display list.

Parameters
[in]nthe geometry_node corresponding to the extrusion.
[in]mask
[in]spinespine points.
[in]cross_sectioncross-sections.
[in]orientationcross-section orientations.
[in]scalecross-section scales.
void openvrml::viewer::do_insert_line_set ( const geometry_node n,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
bool  color_per_vertex,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index 
)
privatepure virtual

Insert a line set into a display list.

Parameters
[in]nthe geometry_node corresponding to the line set.
[in]coordcoordinates.
[in]coord_indexcoordinate indices.
[in]color_per_vertexwhether colors are applied per-vertex or per-face.
[in]colorcolors.
[in]color_indexcolor indices.
void openvrml::viewer::do_insert_point_set ( const geometry_node n,
const std::vector< vec3f > &  coord,
const std::vector< color > &  color 
)
privatepure virtual

Insert a point set into a display list.

Parameters
[in]nthe geometry_node corresponding to the point set.
[in]coordpoints.
[in]colorcolors.
void openvrml::viewer::do_insert_shell ( const geometry_node n,
unsigned int  mask,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index,
const std::vector< vec3f > &  normal,
const std::vector< int32 > &  normal_index,
const std::vector< vec2f > &  tex_coord,
const std::vector< int32 > &  tex_coord_index 
)
privatepure virtual

Insert a shell into a display list.

Parameters
[in]nthe geometry_node corresponding to the shell.
[in]mask
[in]coordcoordinates.
[in]coord_indexcoordinate indices.
[in]colorcolors.
[in]color_indexcolor indices.
[in]normalnormals.
[in]normal_indexnormal indices.
[in]tex_coordtexture coordinates.
[in]tex_coord_indextexture coordinate indices.
void openvrml::viewer::do_insert_sphere ( const geometry_node n,
float  radius 
)
privatepure virtual

Insert a sphere into a display list.

Parameters
[in]nthe geometry_node corresponding to the sphere.
[in]radiussphere radius.
void openvrml::viewer::do_insert_dir_light ( float  ambient_intensity,
float  intensity,
const color color,
const vec3f direction 
)
privatepure virtual

Insert a directional light into a display list.

Parameters
[in]ambient_intensityambient intensity.
[in]intensityintensity.
[in]colorcolor.
[in]directiondirection.
void openvrml::viewer::do_insert_point_light ( float  ambient_intensity,
const vec3f attenuation,
const color color,
float  intensity,
const vec3f location,
float  radius 
)
privatepure virtual

Insert a point light into a display list.

Parameters
[in]ambient_intensityambient intensity.
[in]attenuationattenuation.
[in]colorcolor.
[in]intensityintensity.
[in]locationlocation.
[in]radiusradius.
void openvrml::viewer::do_insert_spot_light ( float  ambient_intensity,
const vec3f attenuation,
float  beam_width,
const color color,
float  cut_off_angle,
const vec3f direction,
float  intensity,
const vec3f location,
float  radius 
)
privatepure virtual

Insert a point light into a display list.

Parameters
[in]ambient_intensityambient intensity.
[in]attenuationattenuation.
[in]beam_widthbeam width.
[in]colorcolor.
[in]cut_off_anglecut-off angle.
[in]directiondirection.
[in]intensityintensity.
[in]locationlocation.
[in]radiusradius.
void openvrml::viewer::do_remove_object ( const node ref)
privatepure virtual

Remove an object from the display list.

Parameters
[in]refobject handle.
void openvrml::viewer::do_enable_lighting ( bool  val)
privatepure virtual

Enable/disable lighting.

Parameters
[in]valwhether lighting should be enabled.
void openvrml::viewer::do_set_fog ( const color color,
float  visibility_range,
const char *  type 
)
privatepure virtual

Set the fog.

Parameters
[in]colorfog color.
[in]visibility_rangethe distance at which objects are fully obscured by fog.
[in]typefog type.
void openvrml::viewer::do_set_color ( const color rgb,
float  a = 1.0 
)
privatepure virtual

Set the color.

Parameters
[in]rgbred, green, and blue components.
[in]aalpha (transparency) component.
void openvrml::viewer::do_set_material ( float  ambient_intensity,
const color diffuse_color,
const color emissive_color,
float  shininess,
const color specular_color,
float  transparency 
)
privatepure virtual

Set the material.

Parameters
[in]ambient_intensityambient intensity.
[in]diffuse_colordiffuse color.
[in]emissive_coloremissive color.
[in]shininessshininess.
[in]specular_colorspecular color.
[in]transparencytransparency.
void openvrml::viewer::do_set_material_mode ( size_t  tex_components,
bool  geometry_color 
)
privatepure virtual

Set the material mode.

Parameters
[in]tex_componentstexture components.
[in]geometry_colorgeometry color.
void openvrml::viewer::do_set_sensitive ( node object)
privatepure virtual

Indicate that a node should be sensitive to the pointing device.

Parameters
[in]objecta node.
void openvrml::viewer::do_insert_texture ( const texture_node n,
bool  retainHint 
)
privatepure virtual

Create a texture object.

Parameters
[in]na texture_node.
[in]retainHintwhether the texture is likely to be reused.
void openvrml::viewer::do_remove_texture_object ( const texture_node ref)
privatepure virtual

Remove a texture from the display list.

Parameters
[in]refa texture_node.
void openvrml::viewer::do_set_texture_transform ( const vec2f center,
float  rotation,
const vec2f scale,
const vec2f translation 
)
privatepure virtual

Set the texture transform.

Parameters
[in]centercenter.
[in]rotationrotation.
[in]scalescale.
[in]translationtranslation.
void openvrml::viewer::do_set_frustum ( float  field_of_view,
float  avatar_size,
float  visibility_limit 
)
privatepure virtual

Set the frustum.

Parameters
[in]field_of_viewfield of view.
[in]avatar_sizeavatar size.
[in]visibility_limitvisibility limit.
void openvrml::viewer::do_set_viewpoint ( const vec3f position,
const rotation orientation,
float  avatar_size,
float  visibility_limit 
)
privatepure virtual

Set the viewpoint.

Parameters
[in]positionposition.
[in]orientationorientation.
[in]avatar_sizeavatar size.
[in]visibility_limitvisiblity limit.
void openvrml::viewer::do_transform ( const mat4f mat)
privatepure virtual

Transform the modelview.

Make the modelview matrix the result of multiplying mat by the current modelview matrix.

Parameters
[in]mattransformation matrix.
void openvrml::viewer::do_transform_points ( size_t  nPoints,
vec3f point 
) const
privatepure virtual

Transform points by the current modelview matrix.

Parameters
[in]nPointsnumber of points.
[in]pointpointer to the first point in an array.
void openvrml::viewer::do_draw_bounding_sphere ( const bounding_sphere bs,
bounding_volume::intersection  intersection 
)
privatepure virtual

Draw a bounding sphere.

Used for debugging view culling. Probably should be draw_bounding_volume and handle axis_aligned_bounding_boxes as well.

Parameters
[in]bsa bounding sphere; if max, will not be drawn
[in]intersectionone of the bvolume intersection test constants, or 4 to draw in unique way. (useful for debugging)

Member Data Documentation

openvrml::browser * openvrml::viewer::browser_
private

A pointer to the browser with which the viewer is currently associated.

openvrml::frustum openvrml::viewer::frustum_
protected

The frustum.