Coin3D is Free Software, published under the BSD 3-clause license. |
https://bitbucket.org/Coin3D/ http://www.kongsberg.com/kogt/ |
The SoNormalGenerator class is used to generate normals. More...
#include <include/Inventor/misc/SoNormalGenerator.h>
Public Member Functions | |
SoNormalGenerator (const SbBool ccw, const int approxVertices=64) | |
~SoNormalGenerator () | |
void | reset (const SbBool ccw) |
void | beginPolygon () |
void | polygonVertex (const SbVec3f &v) |
void | endPolygon () |
void | triangle (const SbVec3f &v0, const SbVec3f &v1, const SbVec3f &v2) |
void | quad (const SbVec3f &v0, const SbVec3f &v1, const SbVec3f &v2, const SbVec3f &v3) |
void | generate (const float creaseAngle, const int32_t *striplens=NULL, const int numstrips=0) |
void | generatePerStrip (const int32_t *striplens, const int numstrips) |
void | generatePerFace (void) |
void | generateOverall (void) |
int | getNumNormals () const |
void | setNumNormals (const int num) |
const SbVec3f * | getNormals () const |
const SbVec3f & | getNormal (const int32_t i) const |
void | setNormal (const int32_t index, const SbVec3f &normal) |
The SoNormalGenerator class is used to generate normals.
FIXME: document properly
SoNormalGenerator::SoNormalGenerator | ( | const SbBool | isccw, |
const int | approxVertices = 64 |
||
) |
Constructor with isccw indicating if polygons are specified in counter clockwise order. The approxVertices can be used to optimize normal generation.
SoNormalGenerator::~SoNormalGenerator | ( | ) |
Destructor.
void SoNormalGenerator::reset | ( | const SbBool | ccwarg | ) |
Resets the normal generator, making it possible to reuse it without allocating a new one.
This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.
void SoNormalGenerator::beginPolygon | ( | void | ) |
Signals the start of a new polygon.
void SoNormalGenerator::polygonVertex | ( | const SbVec3f & | v | ) |
Adds a vertex to the current polygon.
void SoNormalGenerator::endPolygon | ( | void | ) |
Signals the end of a polygon.
Convenience method for adding a triangle.
void SoNormalGenerator::quad | ( | const SbVec3f & | v0, |
const SbVec3f & | v1, | ||
const SbVec3f & | v2, | ||
const SbVec3f & | v3 | ||
) |
Convenience method for adding a quad
void SoNormalGenerator::generate | ( | const float | creaseAngle, |
const int32_t * | striplens = NULL , |
||
const int | numstrips = 0 |
||
) |
Triggers the normal generation. Normals are generated using creaseAngle to find which edges should be flat-shaded and which should be smooth-shaded.
If normals are generated for triangle strips, the striplens and numstrips must be supplied. See src/nodes/SoTriangleStripSet.cpp (generateDefaultNormals()) for an example on how you send triangle strip information to this generator. It's not trivial, since you have to know how OpenGL/Coin generate triangles from triangle strips.
void SoNormalGenerator::generatePerStrip | ( | const int32_t * | striplens, |
const int | numstrips | ||
) |
Generates one normal per strip by averaging face normals.
void SoNormalGenerator::generatePerFace | ( | void | ) |
Generates the normals per face. Use this when PER_FACE normal binding is needed. This method is not part of the OIV API.
void SoNormalGenerator::generateOverall | ( | void | ) |
Generates one overall normal by averaging all face normals. Use when normal binding is OVERALL. This method is not part of the OIV API.
int SoNormalGenerator::getNumNormals | ( | void | ) | const |
Returns the number of normals generated.
void SoNormalGenerator::setNumNormals | ( | const int | num | ) |
Sets the number of generated normals. This method is not supported in Coin, and is provided for API compatibility only.
const SbVec3f * SoNormalGenerator::getNormals | ( | void | ) | const |
Returns a pointer to the generated normals.
const SbVec3f & SoNormalGenerator::getNormal | ( | const int32_t | i | ) | const |
Returns the normal at index i.
void SoNormalGenerator::setNormal | ( | const int32_t | index, |
const SbVec3f & | normal | ||
) |
Sets the normal at index index to normal. This method is not supported in Coin, and is provided for API compatibility only.