Coin
4.0.3
Coin3D core library
|
The SoNormalCache class is used to hold cached normals. More...
#include <Inventor/caches/SoNormalCache.h>
Additional Inherited Members | |
Protected Member Functions inherited from SoCache | |
virtual | ~SoCache () |
virtual void | destroy (SoState *state) |
The SoNormalCache class is used to hold cached normals.
As an extension to the original SGI Open Inventor v2.1 API, it is also possible to generate normals using this class.
It is more powerful and easier to use than the SoNormalGenerator class. It is possible to generate normals per vertex with indices (using much less memory than plain per vertex normals), and it contains special methods to generate normals for triangle strips and quads.
Constructor with state being the current state.
|
virtual |
Destructor
void SoNormalCache::generatePerFace | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int32_t * | cind, | ||
const int | nv, | ||
const SbBool | ccw ) |
Generates face normals for the faceset defined by coords and cind.
void SoNormalCache::generatePerFaceQuad | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int | vPerRow, | ||
const int | vPerColumn, | ||
const SbBool | ccw ) |
Generates per face normals for quad data.
void SoNormalCache::generatePerFaceStrip | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int32_t * | cind, | ||
const int | nv, | ||
const SbBool | ccw ) |
Generates face normals for triangle strips.
void SoNormalCache::generatePerRowQuad | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int | vPerRow, | ||
const int | vPerColumn, | ||
const SbBool | ccw ) |
Generates per row normals for quad data.
void SoNormalCache::generatePerStrip | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int32_t * | cind, | ||
const int | nv, | ||
const SbBool | ccw ) |
Generates one normal per triangle strips (averages all triangle normals).
void SoNormalCache::generatePerVertex | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int32_t * | vindex, | ||
const int | numvi, | ||
const float | crease_angle, | ||
const SbVec3f * | facenormals = NULL, | ||
const int | numfacenormals = -1, | ||
const SbBool | ccw = TRUE, | ||
const SbBool | tristrip = FALSE ) |
Generates normals for each vertex for each face. It is possible to specify face normals if these have been calculated somewhere else, otherwise the face normals will be calculated before the vertex normals are calculated. tristrip should be TRUE
if the geometry consists of triangle strips.
void SoNormalCache::generatePerVertexQuad | ( | const SbVec3f *const | coords, |
const unsigned int | numcoords, | ||
const int | vPerRow, | ||
const int | vPerColumn, | ||
const SbBool | ccw ) |
Generates PER_VERTEX normals for quad data.
Return a pointer to the normals in this cache.
int SoNormalCache::getNum | ( | void | ) | const |
Returns the number of normals in the cache.
int SoNormalCache::getNumIndices | ( | void | ) | const |
Returns the number of indices in this cache. Normals are generated with PER_VERTEX_INDEXED binding.
Sets an array of normals for this cache. The normals will not be deleted when the instance is deleted.
void SoNormalCache::set | ( | SoNormalGenerator * | generator | ) |
Uses a normal generator in this cache. The normal generator will be deleted when the cache is deleted or reset.