Main Page   Modules   Namespace List   Class Hierarchy   Compound List   Namespace Members   Compound Members   Related Pages  

openvrml::viewer Class Reference

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

Inheritance diagram for openvrml::viewer:

Inheritance graph
[legend]
Collaboration diagram for openvrml::viewer:

Collaboration graph
[legend]
List of all members.

Public Types

typedef long object_t
 An object handle.

typedef long texture_object_t
 An texture object handle.

enum  {
  mask_none = 0,
  mask_ccw = 1,
  mask_convex = 2,
  mask_solid = 4,
  mask_bottom = 8,
  mask_top = 16,
  mask_side = 32,
  mask_color_per_vertex = 64,
  mask_normal_per_vertex = 128
}
enum  rendering_mode {
  draw_mode,
  pick_mode
}
 The rendering mode. More...


Public Member Functions

virtual ~viewer ()=0
 Destroy.

virtual rendering_mode mode ()=0
 Get the rendering mode.

virtual double frame_rate ()=0
 Get the frame rate.

virtual void reset_user_navigation ()=0
 Return view to the last bound Viewpoint.

virtual object_t begin_object (const char *id, bool retain=false)=0
 Begin a display list.

virtual void end_object ()=0
 End a display list.

virtual object_t insert_background (const std::vector< float > &ground_angle, const std::vector< color > &ground_color, const std::vector< float > &sky_angle, const std::vector< color > &sky_color, size_t *whc=0, unsigned char **pixels=0)=0
 Insert a background into a display list.

virtual object_t insert_box (const vec3f &size)=0
 Insert a box into a display list.

virtual object_t insert_cone (float height, float radius, bool bottom, bool side)=0
 Insert a cone into a display list.

virtual object_t insert_cylinder (float height, float radius, bool bottom, bool side, bool top)=0
 Insert a cylinder into a display list.

virtual object_t insert_elevation_grid (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 object_t insert_extrusion (unsigned int, 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 object_t insert_line_set (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 object_t insert_point_set (const std::vector< vec3f > &coord, const std::vector< color > &color)=0
 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 > &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 object_t insert_sphere (float radius)=0
 Insert a sphere into a display list.

virtual object_t insert_dir_light (float ambient_intensity, float intensity, const color &color, const vec3f &direction)=0
 Insert a directional light into a display list.

virtual object_t 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 object_t 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 object_t insert_reference (object_t existing_object)=0
 Insert a reference to an existing object into a display list.

virtual void remove_object (object_t ref)=0
 Remove an object from the display list.

virtual void enable_lighting (bool val)=0
 Enable/disable lighting.

virtual void set_fog (const color &color, float visibility_range, const char *type)=0
 Set the fog.

virtual void set_color (const color &rgb, float a=1.0)=0
 Set the color.

virtual void 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 set_material_mode (size_t tex_components, bool geometry_color)=0
 Set the material mode.

virtual void set_sensitive (node *object)=0
 Indicate that a node should be sensitive to the pointing device.

virtual void scale_texture (size_t w, size_t h, size_t newW, size_t newH, size_t nc, unsigned char *pixels)=0
 Scale a texture.

virtual texture_object_t insert_texture (size_t w, size_t h, size_t nc, bool repeat_s, bool repeat_t, const unsigned char *pixels, bool retainHint=false)=0
 Create a texture object.

virtual void insert_texture_reference (texture_object_t ref, size_t components)=0
 Insert a texture into the display list from an existing handle.

virtual void remove_texture_object (texture_object_t ref)=0
 Remove a texture from the display list.

virtual void set_texture_transform (const vec2f &center, float rotation, const vec2f &scale, const vec2f &translation)=0
 Set the texture transform.

virtual void set_viewpoint (const vec3f &position, const rotation &orientation, float field_of_view, float avatar_size, float visibility_limit)=0
 Set the viewpoint.

virtual void transform (const mat4f &mat)=0
 Transform the modelview.

virtual void transform_points (size_t nPoints, vec3f *point) const=0
 Transform points by the current modelview matrix.

virtual const openvrml::frustum & frustum () const
virtual void frustum (const openvrml::frustum &f)
 Set the frustum.

virtual bounding_volume::intersection intersect_view_volume (const bounding_volume &bvolume) const
virtual void draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection)=0
 Draw a bounding sphere.


Public Attributes

openvrml::browser & browser
 The browser associated with the viewer.


Protected Member Functions

 viewer (openvrml::browser &browser)
 Construct.


Protected Attributes

openvrml::frustum frustum_
 The frustum.


Private Member Functions

 viewer (const viewer &)
 Not implemented.

viewer & operator= (const viewer &)
 Not implemented.


Detailed Description

Map the scene graph to the underlying graphics library.


Member Typedef Documentation

openvrml::viewer::object_t
 

An object handle.

openvrml::viewer::texture_object_t
 

An texture object handle.


Member Enumeration Documentation

enum openvrml::viewer::rendering_mode
 

The rendering mode.

Enumeration values:
draw_mode  Draw mode.

pick_mode  Pick mode.


Constructor & Destructor Documentation

openvrml::viewer::~viewer  )  [pure virtual]
 

Destroy.

Implemented in openvrml::gl::viewer.

openvrml::viewer::viewer openvrml::browser browser  )  [explicit, protected]
 

Construct.

Parameters:
browser a browser.

Reimplemented in openvrml::gl::viewer.

openvrml::viewer::viewer const viewer &   )  [private]
 

Not implemented.

viewer is not copyable.


Member Function Documentation

viewer::object_t openvrml::viewer::begin_object const char *  id,
bool  retain = false
[pure virtual]
 

Begin a display list.

Parameters:
id object identifier.
retain whether the object should be retained for reuse.
Returns:
the display object identifier.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::draw_bounding_sphere const bounding_sphere bs,
bounding_volume::intersection  intersection
[pure 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:
bs a bounding sphere; if max, will not be drawn
intersection one of the bvolume intersection test constants, or 4 to draw in unique way. (useful for debugging)

Implemented in openvrml::gl::viewer.

void openvrml::viewer::enable_lighting bool  val  )  [pure virtual]
 

Enable/disable lighting.

Parameters:
val whether lighting should be enabled.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::end_object  )  [pure virtual]
 

End a display list.

Implemented in openvrml::gl::viewer.

double openvrml::viewer::frame_rate  )  [pure virtual]
 

Get the frame rate.

Returns:
the frame rate.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::frustum const openvrml::frustum &  f  )  [virtual]
 

Set the frustum.

Parameters:
f new frustum value.

const frustum & openvrml::viewer::frustum  )  const [virtual]
 

Todo:
We're forcing everybody to carry around a frustum whether they want it or not. It shouldn't be used except for debugging and stuff since it might not be valid in some implementations
Returns:
the frustum.

viewer::object_t openvrml::viewer::insert_background const std::vector< float > &  ground_angle,
const std::vector< color > &  ground_color,
const std::vector< float > &  sky_angle,
const std::vector< color > &  sky_color,
size_t *  whc = 0,
unsigned char **  pixels = 0
[pure virtual]
 

Insert a background into a display list.

Parameters:
ground_angle ground angles.
ground_color ground colors.
sky_angle sky angles.
sky_color sky colors.
whc texture width, height, and number of components.
pixels texture pixel data.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_box const vec3f size  )  [pure virtual]
 

Insert a box into a display list.

Parameters:
size box dimensions.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_cone float  height,
float  radius,
bool  bottom,
bool  side
[pure virtual]
 

Insert a cone into a display list.

Parameters:
height height.
radius radius at base.
bottom show the bottom.
side show the side.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_cylinder float  height,
float  radius,
bool  bottom,
bool  side,
bool  top
[pure virtual]
 

Insert a cylinder into a display list.

Parameters:
height height.
radius radius.
bottom show the bottom.
side show the side.
top show the top.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_dir_light float  ambient_intensity,
float  intensity,
const color color,
const vec3f direction
[pure virtual]
 

Insert a directional light into a display list.

Parameters:
ambient_intensity ambient intensity.
intensity intensity.
color color.
direction direction.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_elevation_grid 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
[pure virtual]
 

Insert an elevation grid into a display list.

Parameters:
mask 
height height field.
x_dimension vertices in the x direction.
z_dimension vertices in the z direction.
x_spacing distance between vertices in the x direction.
z_spacing distance between vertices in the z direction.
color colors.
normal normals.
tex_coord texture coordinates.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_extrusion unsigned int  mask,
const std::vector< vec3f > &  spine,
const std::vector< vec2f > &  cross_section,
const std::vector< rotation > &  orientation,
const std::vector< vec2f > &  scale
[pure virtual]
 

Insert an extrusion into a display list.

Parameters:
mask 
spine spine points.
cross_section cross-sections.
orientation cross-section orientations.
scale cross-section scales.
Returns:
display object identifier.

viewer::object_t openvrml::viewer::insert_line_set 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
[pure virtual]
 

Insert a line set into a display list.

Parameters:
coord coordinates.
coord_index coordinate indices.
color_per_vertex whether colors are applied per-vertex or per-face.
color colors.
color_index color indices.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_point_light float  ambient_intensity,
const vec3f attenuation,
const color color,
float  intensity,
const vec3f location,
float  radius
[pure virtual]
 

Insert a point light into a display list.

Parameters:
ambient_intensity ambient intensity.
attenuation attenuation.
color color.
intensity intensity.
location location.
radius radius.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_point_set const std::vector< vec3f > &  coord,
const std::vector< color > &  color
[pure virtual]
 

Insert a point set into a display list.

Parameters:
coord points.
color colors.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_reference object_t  existing_object  )  [pure virtual]
 

Insert a reference to an existing object into a display list.

Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_shell 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
[pure virtual]
 

Insert a shell into a display list.

Parameters:
mask 
coord coordinates.
coord_index coordinate indices.
color colors.
color_index color indices.
normal normals.
normal_index normal indices.
tex_coord texture coordinates.
tex_coord_index texture coordinate indices.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t openvrml::viewer::insert_sphere float  radius  )  [pure virtual]
 

Insert a sphere into a display list.

Parameters:
radius sphere radius.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::object_t 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
[pure virtual]
 

Insert a point light into a display list.

Parameters:
ambient_intensity ambient intensity.
attenuation attenuation.
beam_width beam width.
color color.
cut_off_angle cut-off angle.
direction direction.
intensity intensity.
location location.
radius radius.
Returns:
display object identifier.

Implemented in openvrml::gl::viewer.

viewer::texture_object_t openvrml::viewer::insert_texture size_t  w,
size_t  h,
size_t  nc,
bool  repeat_s,
bool  repeat_t,
const unsigned char *  pixels,
bool  retainHint = false
[pure virtual]
 

Create a texture object.

Parameters:
w width.
h height.
nc number of components.
repeat_s repeat in the S direction.
repeat_t repeat in the T direction.
pixels pixel data.
retainHint whether the texture is likely to be reused.
Returns:
a handle to the inserted texture.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::insert_texture_reference texture_object_t  ref,
size_t  components
[pure virtual]
 

Insert a texture into the display list from an existing handle.

Parameters:
ref texture handle.
components number of components.

Implemented in openvrml::gl::viewer.

bounding_volume::intersection openvrml::viewer::intersect_view_volume const bounding_volume bvolume  )  const [virtual]
 

Intersect the given bounding volume with the view volume. This goes into the viewer to provide a hook for systems that use non-standard 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 is, then reimplement to always return bounding_volume::inside.

Parameters:
bvolume the bounding volume to intersect with the view volume.
Returns:
bounding_volume::inside, bounding_volume::outside, or bounding_volume::partial.

viewer::rendering_mode openvrml::viewer::mode  )  [pure virtual]
 

Get the rendering mode.

Returns:
the rendering mode.

Implemented in openvrml::gl::viewer.

viewer & openvrml::viewer::operator= const viewer &   )  [private]
 

Not implemented.

viewer is not copyable.

void openvrml::viewer::remove_object object_t  ref  )  [pure virtual]
 

Remove an object from the display list.

Parameters:
ref object handle.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::remove_texture_object texture_object_t  ref  )  [pure virtual]
 

Remove a texture from the display list.

Parameters:
ref texture handle.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::reset_user_navigation  )  [pure virtual]
 

Return view to the last bound Viewpoint.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::scale_texture size_t  w,
size_t  h,
size_t  newW,
size_t  newH,
size_t  nc,
unsigned char *  pixels
[pure virtual]
 

Scale a texture.

Parameters:
w current width.
h current height,
newW desired width.
newH desired height.
nc number of components.
pixels pixel data.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_color const color rgb,
float  a = 1.0
[pure virtual]
 

Set the color.

Parameters:
rgb red, green, and blue components.
a alpha (transparency) component.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_fog const color color,
float  visibility_range,
const char *  type
[pure virtual]
 

Set the fog.

Parameters:
color fog color.
visibility_range the distance at which objects are fully obscured by fog.
type fog type.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_material float  ambient_intensity,
const color diffuse_color,
const color emissive_color,
float  shininess,
const color specular_color,
float  transparency
[pure virtual]
 

Set the material.

Parameters:
ambient_intensity ambient intensity.
diffuse_color diffuse color.
emissive_color emissive color.
shininess shininess.
specular_color specular color.
transparency transparency.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_material_mode size_t  tex_components,
bool  geometry_color
[pure virtual]
 

Set the material mode.

Parameters:
tex_components texture components.
geometry_color geometry color.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_sensitive node object  )  [pure virtual]
 

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

Parameters:
object a node.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_texture_transform const vec2f center,
float  rotation,
const vec2f scale,
const vec2f translation
[pure virtual]
 

Set the texture transform.

Parameters:
center center.
rotation rotation.
scale scale.
translation translation.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::set_viewpoint const vec3f position,
const rotation orientation,
float  field_of_view,
float  avatar_size,
float  visibility_limit
[pure virtual]
 

Set the viewpoint.

Parameters:
position position.
orientation orientation.
field_of_view field of view.
avatar_size avatar size.
visibility_limit visiblity limit.

void openvrml::viewer::transform const mat4f mat  )  [pure virtual]
 

Transform the modelview.

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

Parameters:
mat transformation matrix.

Implemented in openvrml::gl::viewer.

void openvrml::viewer::transform_points size_t  nPoints,
vec3f point
const [pure virtual]
 

Transform points by the current modelview matrix.

Parameters:
nPoints number of points.
point pointer to the first point in an array.

Implemented in openvrml::gl::viewer.


Member Data Documentation

openvrml::browser & openvrml::viewer::browser
 

The browser associated with the viewer.

frustum openvrml::viewer::frustum_ [protected]
 

The frustum.