SLProject
4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
|
SLRevolver is an SLMesh object built out of revolving points. More...
#include <SLRevolver.h>
Public Member Functions | |
SLRevolver (SLAssetManager *assetMgr, SLVVec3f revolvePoints, SLVec3f revolveAxis, SLuint slices=36, SLbool smoothFirst=false, SLbool smoothLast=false, SLstring name="revolver mesh", SLMaterial *mat=nullptr) | |
ctor for generic revolver mesh More... | |
SLRevolver (SLAssetManager *assetMgr, SLstring name) | |
ctor for derived revolver shapes More... | |
void | buildMesh (SLMaterial *mat=nullptr) |
SLuint | stacks () |
SLuint | slices () |
Public Member Functions inherited from SLMesh | |
SLMesh (SLAssetManager *assetMgr, const SLstring &name="Mesh") | |
Construct a new SLMesh::SLMesh object. More... | |
~SLMesh () override | |
The destructor deletes everything by calling deleteData. More... | |
virtual void | init (SLNode *node) |
SLMesh::shapeInit sets the transparency flag of the AABB. More... | |
virtual void | draw (SLSceneView *sv, SLNode *node, SLuint intances=0) |
void | drawIntoDepthBuffer (SLSceneView *sv, SLNode *node, SLMaterial *depthMat) |
Simplified drawing method for shadow map creation. More... | |
void | addStats (SLNodeStats &stats) |
virtual void | buildAABB (SLAABBox &aabb, const SLMat4f &wmNode) |
void | updateAccelStruct () |
SLbool | hit (SLRay *ray, SLNode *node) |
virtual void | preShade (SLRay *ray) |
virtual void | deleteData () |
SLMesh::deleteData deletes all mesh data and vbo's. More... | |
virtual void | deleteDataGpu () |
void | deleteSelected (SLNode *node) |
Deletes the rectangle selected vertices and the dependent triangles. More... | |
void | deleteUnused () |
Deletes unused vertices (= vertices that are not indexed in I16 or I32) More... | |
virtual void | calcMinMax () |
virtual void | calcNormals () |
SLMesh::calcNormals recalculates vertex normals for triangle meshes. More... | |
void | calcCenterRad (SLVec3f ¢er, SLfloat &radius) |
SLbool | hitTriangleOS (SLRay *ray, SLNode *node, SLuint iT) |
virtual void | generateVAO (SLGLVertexArray &vao) |
Generate the Vertex Array Object for a specific shader program. More... | |
void | computeHardEdgesIndices (float angleRAD, float epsilon) |
computes the hard edges and stores the vertex indexes separately More... | |
void | transformSkin (bool forceCPUSkinning, const std::function< void(SLMesh *)> &cbInformNodes) |
Transforms the vertex positions and normals with by joint weights. More... | |
void | deselectPartialSelection () |
SLMaterial * | mat () const |
SLMaterial * | matOut () const |
SLGLPrimitiveType | primitive () const |
const SLAnimSkeleton * | skeleton () const |
SLuint | numI () const |
SLGLVertexArray & | vao () |
SLbool | isSelected () const |
SLfloat | edgeAngleDEG () const |
SLfloat | edgeWidth () const |
SLCol4f | edgeColor () const |
SLVec3f | finalP (SLuint i) |
SLVec3f | finalN (SLuint i) |
SLbool | accelStructIsOutOfDate () |
void | mat (SLMaterial *m) |
void | matOut (SLMaterial *m) |
void | primitive (SLGLPrimitiveType pt) |
void | skeleton (SLAnimSkeleton *skel) |
void | isSelected (bool isSelected) |
void | edgeWidth (SLfloat ew) |
void | edgeAngleDEG (SLfloat ea) |
void | edgeColor (const SLCol4f &ec) |
void | vertexPosEpsilon (SLfloat eps) |
Public Member Functions inherited from SLObject | |
SLObject (const SLstring &Name="", const SLstring &url="") | |
virtual | ~SLObject () |
void | name (const SLstring &Name) |
void | url (const SLstring &url) |
const SLstring & | name () const |
const SLstring & | url () const |
Protected Attributes | |
SLVVec3f | _revPoints |
Array revolving points. More... | |
SLVec3f | _revAxis |
axis of revolution More... | |
SLuint | _stacks |
No. of stacks (mostly used) More... | |
SLuint | _slices |
NO. of slices. More... | |
SLbool | _smoothFirst |
flag if the normal of the first point is eqaual to -revAxis More... | |
SLbool | _smoothLast |
flag if the normal of the last point is eqaual to revAxis More... | |
Protected Attributes inherited from SLMesh | |
SLGLPrimitiveType | _primitive |
Primitive type (default triangles) More... | |
SLMaterial * | _mat |
Pointer to the inside material. More... | |
SLMaterial * | _matOut |
Pointer to the outside material. More... | |
SLGLVertexArray | _vao |
Main OpenGL Vertex Array Object for drawing. More... | |
SLGLVertexArrayExt | _vaoN |
OpenGL VAO for optional normal drawing. More... | |
SLGLVertexArrayExt | _vaoT |
OpenGL VAO for optional tangent drawing. More... | |
SLGLVertexArrayExt | _vaoS |
OpenGL VAO for optional selection drawing. More... | |
SLbool | _isSelected |
Flag if mesh is partially of fully selected. More... | |
SLfloat | _edgeAngleDEG |
Edge crease angle in degrees between face normals (30 deg. default) More... | |
SLfloat | _edgeWidth |
Line width for hard edge drawing. More... | |
SLCol4f | _edgeColor |
Color for hard edge drawing. More... | |
SLfloat | _vertexPosEpsilon |
Vertex position epsilon used in computeHardEdgesIndices. More... | |
SLbool | _isVolume |
Flag for RT if mesh is a closed volume. More... | |
SLAccelStruct * | _accelStruct |
KD-tree or uniform grid. More... | |
SLbool | _accelStructIsOutOfDate |
Flag if accel. struct needs update. More... | |
SLAnimSkeleton * | _skeleton |
The skeleton this mesh is bound to. More... | |
SLVMat4f | _jointMatrices |
Joint matrix vector for this mesh. More... | |
SLbool | _isCPUSkinned |
Flag if mesh has been skinned on CPU during update. More... | |
SLVVec3f * | _finalP |
Pointer to final vertex position vector. More... | |
SLVVec3f * | _finalN |
pointer to final vertex normal vector More... | |
Protected Attributes inherited from SLObject | |
SLstring | _name |
name of an object More... | |
SLstring | _url |
uniform resource locator More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from SLMesh | |
static void | calcTex3DMatrix (SLNode *node) |
Public Attributes inherited from SLMesh | |
SLVVec3f | P |
Vector for vertex positions layout (location = 0) More... | |
SLVVec3f | N |
Vector for vertex normals (opt.) layout (location = 1) More... | |
SLVVec2f | UV [2] |
Array of 2 Vectors for tex. coords. (opt.) layout (location = 2) More... | |
SLVCol4f | C |
Vector of vertex colors (opt.) layout (location = 4) More... | |
SLVVec4f | T |
Vector of vertex tangents (opt.) layout (location = 5) More... | |
SLVVuchar | Ji |
2D Vector of per vertex joint ids (opt.) layout (location = 6) More... | |
SLVVfloat | Jw |
2D Vector of per vertex joint weights (opt.) layout (location = 7) More... | |
SLVVec3f | skinnedP |
temp. vector for CPU skinned vertex positions More... | |
SLVVec3f | skinnedN |
temp. vector for CPU skinned vertex normals More... | |
SLVushort | I16 |
Vector of vertex indices 16 bit. More... | |
SLVuint | I32 |
Vector of vertex indices 32 bit. More... | |
SLVuint | IS32 |
Vector of rectangle selected vertex indices 32 bit. More... | |
SLVushort | IE16 |
Vector of hard edges vertex indices 16 bit (see computeHardEdgesIndices) More... | |
SLVuint | IE32 |
Vector of hard edges vertex indices 32 bit (see computeHardEdgesIndices) More... | |
SLVec3f | minP |
min. vertex in OS More... | |
SLVec3f | maxP |
max. vertex in OS More... | |
SLRevolver is an SLMesh object built out of revolving points.
SLRevolver is an SLMesh object that is built out of points that are revolved in slices around and axis. The surface will be outwards if the points in the array _revPoints increase towards the axis direction. If all points in the array _revPoints are different the normals will be smoothed. If two consecutive points are identical the normals will define a hard edge. Texture coords. are cylindrically mapped. See the online example Revolving Meshes with various revolver objects.
Definition at line 37 of file SLRevolver.h.
SLRevolver::SLRevolver | ( | SLAssetManager * | assetMgr, |
SLVVec3f | revolvePoints, | ||
SLVec3f | revolveAxis, | ||
SLuint | slices = 36 , |
||
SLbool | smoothFirst = false , |
||
SLbool | smoothLast = false , |
||
SLstring | name = "revolver mesh" , |
||
SLMaterial * | mat = nullptr |
||
) |
ctor for generic revolver mesh
SLRevolver::SLRevolver ctor for generic revolution object.
Definition at line 16 of file SLRevolver.cpp.
|
inline |
ctor for derived revolver shapes
Definition at line 51 of file SLRevolver.h.
void SLRevolver::buildMesh | ( | SLMaterial * | material = nullptr | ) |
SLRevolver::buildMesh builds the underlying mesh data structure
Definition at line 43 of file SLRevolver.cpp.
|
inline |
Definition at line 55 of file SLRevolver.h.
|
inline |
Definition at line 54 of file SLRevolver.h.
|
protected |
axis of revolution
Definition at line 59 of file SLRevolver.h.
|
protected |
Array revolving points.
Definition at line 58 of file SLRevolver.h.
|
protected |
NO. of slices.
Definition at line 61 of file SLRevolver.h.
|
protected |
flag if the normal of the first point is eqaual to -revAxis
Definition at line 64 of file SLRevolver.h.
|
protected |
flag if the normal of the last point is eqaual to revAxis
Definition at line 67 of file SLRevolver.h.
|
protected |
No. of stacks (mostly used)
Definition at line 60 of file SLRevolver.h.