Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

RayGina::CORE::RobGeometry Class Reference

The Abstract base class for all renderable objects in rayGina. More...

#include <RobGeometry.hxx>

Inheritance diagram for RayGina::CORE::RobGeometry:

RayGina::CORE::RobBase RayGina::CORE::RObject RayGina::CORE::RobAABB RayGina::CORE::RobMeshTriangle RayGina::CORE::RobSphere RayGina::CORE::RobTriangle RayGina::CORE::RobMeshNormalsTriangle RayGina::CORE::RobMeshNormalsUVTriangle List of all members.

Public Member Functions

virtual ~RobGeometry ()
virtual const RBool intersect (RRay *ray)=0
 Methode to calc the intersection of an object with a single ray.
virtual const RBool occlude (const RRay *ray)=0
 Method to calc the intersection of an object with a single shadow ray.
virtual const RVec3r getNormal (RRay *ray)=0
 get the normal from the object according to the given ray
virtual const RVec2r getUV (RRay *ray)=0
 get the uv from the object according to the given ray
virtual const RStatus setVolumeShader (RvsBase *newShader)=0
 This methods sets the volume shader for the object that will be used when a valid intersection is found with this object.
virtual RvsBasegetVolumeShader () const
 Method to get the volume shader used for rendering the object.
virtual const RStatus setSurfaceShader (RssBase *newShader)=0
 This methods sets the surface shader for the object that will be used when a valid intersection is found with this object.
virtual RssBasegetSurfaceShader () const =0
 Method to get the shader used for rendering the object.
virtual const RBool intersectAABB (RobAABB *voxel) const =0
 Check for intersections of the object with a given axis-aligned-box.
virtual const RBool getRenderObjects (RobAccelerator *renderlist)=0
 adds several objects to the list that describe the geometry or the instance itself on simple objects
virtual const RStatus getBoundingAABB (RobAABB *boundingBox) const =0

Detailed Description

The Abstract base class for all renderable objects in rayGina.

This abstract class provides the interface to be implemented by a renderable rayGina object.

Author:
rayGina::CORE Developers

Definition at line 22 of file RobGeometry.hxx.


Constructor & Destructor Documentation

virtual RayGina::CORE::RobGeometry::~RobGeometry  )  [inline, virtual]
 

Definition at line 25 of file RobGeometry.hxx.


Member Function Documentation

virtual const RStatus RayGina::CORE::RobGeometry::getBoundingAABB RobAABB boundingBox  )  const [pure virtual]
 

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RVec3r RayGina::CORE::RobGeometry::getNormal RRay ray  )  [pure virtual]
 

get the normal from the object according to the given ray

returns the normal from the surface according to the last intersection tes with the given ray THE GIVEN RAY MUST BE THE SAME LIKE THE ONE YOU PERFORMED THE LAST INTESECTION TEST WITH THE OBJECT!!

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshNormalsTriangle, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RBool RayGina::CORE::RobGeometry::getRenderObjects RobAccelerator renderlist  )  [pure virtual]
 

adds several objects to the list that describe the geometry or the instance itself on simple objects

This method is for complex objects, compound objects or objects that needs a tesselation for efficient rayTracing It adds a representation of the object in the list by using one or more other geometries. Example: A tessalation of a NURBS-patch could add lots of triangles which approximate the NURBS-patch

Implements RayGina::CORE::RobBase.

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual RssBase* RayGina::CORE::RobGeometry::getSurfaceShader  )  const [pure virtual]
 

Method to get the shader used for rendering the object.

Every object can use a separate shader, so you can use this method to get the stored shader for this object and so you can use it for shading calculations.

Returns:
The pointer to the used shader; if there is no shader available the return value is NULL

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RVec2r RayGina::CORE::RobGeometry::getUV RRay ray  )  [pure virtual]
 

get the uv from the object according to the given ray

returns the uv from the surface according to the last intersection tes with the given ray THE GIVEN RAY MUST BE THE SAME LIKE THE ONE YOU PERFORMED THE LAST INTESECTION TEST WITH THE OBJECT!!

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshNormalsUVTriangle, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual RvsBase* RayGina::CORE::RobGeometry::getVolumeShader  )  const [inline, virtual]
 

Method to get the volume shader used for rendering the object.

Every object can use a separate volume shader, so you can use this method to get the stored shader for this object and so you can use it for shading ray while it is travling through the object.

Returns:
The pointer to the used shader; if there is no shader available the return value is NULL

Reimplemented in RayGina::CORE::RobMeshTriangle.

Definition at line 59 of file RobGeometry.hxx.

virtual const RBool RayGina::CORE::RobGeometry::intersect RRay ray  )  [pure virtual]
 

Methode to calc the intersection of an object with a single ray.

Parameters:
ray a pointer to the ray used for intersection calculation
Return values:
true if the ray intersects the objeect and stores infos about intersection point within the ray
false if there is no intersection between the ray and the object => no raydata is been modified

Implements RayGina::CORE::RobBase.

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RBool RayGina::CORE::RobGeometry::intersectAABB RobAABB voxel  )  const [pure virtual]
 

Check for intersections of the object with a given axis-aligned-box.

Performs a intersection test with a axis-aligned bounding-volume Needed for generation of acceleration strcutures

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RBool RayGina::CORE::RobGeometry::occlude const RRay ray  )  [pure virtual]
 

Method to calc the intersection of an object with a single shadow ray.

returns true if there is an intersection with the object and the given ray but NO other information like distance are saved in the ray

Implements RayGina::CORE::RobBase.

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RStatus RayGina::CORE::RobGeometry::setSurfaceShader RssBase newShader  )  [pure virtual]
 

This methods sets the surface shader for the object that will be used when a valid intersection is found with this object.

attach a shader to the object, the previous one will be overwritten (BUT NOT DELETED!) (ONLY 1 shader per object)

Parameters:
newShader DESCRIPTION!!!

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.

virtual const RStatus RayGina::CORE::RobGeometry::setVolumeShader RvsBase newShader  )  [pure virtual]
 

This methods sets the volume shader for the object that will be used when a valid intersection is found with this object.

attach a shader to the object, the previous one will be overwritten (BUT NOT DELETED!) (ONLY 1 shader per object)

Parameters:
newShader DESCRIPTION!!!

Implemented in RayGina::CORE::RobAABB, RayGina::CORE::RobMeshTriangle, RayGina::CORE::RobSphere, and RayGina::CORE::RobTriangle.


The documentation for this class was generated from the following file:
Generated on Sun Dec 2 17:01:11 2007 for rayGina by  doxygen 1.3.9.1