00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __TRIANGLESTRIPSET_H__
00030 #define __TRIANGLESTRIPSET_H__
00031
00032 #include "X3DComposedGeometryNode.h"
00033 #include "DependentNodeFields.h"
00034 #include "X3DCoordinateNode.h"
00035 #include "X3DColorNode.h"
00036 #include "CoordBoundField.h"
00037 #include "MFInt32.h"
00038
00039 namespace H3D {
00040
00068 class H3DAPI_API TriangleStripSet : public X3DComposedGeometryNode {
00069 public:
00070
00073 H3D_VALUE_EXCEPTION( int, NotEnoughColors );
00074
00077 H3D_VALUE_EXCEPTION( int, NotEnoughTextureCoordinates );
00078
00080 H3D_VALUE_EXCEPTION( int, InvalidStripCount );
00081
00083 typedef CoordBoundField SFBound;
00084
00091
00092 class H3DAPI_API AutoNormal:
00093 public TypedField< SFNormalNode,
00094 Types< SFBool, SFCoordinateNode, MFInt32, SFBool > > {
00097 virtual void update();
00098
00115 virtual X3DNormalNode *generateNormalsPerVertex(
00116 X3DCoordinateNode *coord,
00117 const vector< int > &index,
00118 bool ccw );
00119
00120
00137 virtual X3DNormalNode *generateNormalsPerFace(
00138 X3DCoordinateNode *coord,
00139 const vector< int > &index,
00140 bool ccw );
00141
00142 };
00143
00145 TriangleStripSet( Inst< SFNode > _metadata = 0,
00146 Inst< SFBound > _bound = 0,
00147 Inst< DisplayList > _displayList = 0,
00148 Inst< SFColorNode > _color = 0,
00149 Inst< SFCoordinateNode > _coord = 0,
00150 Inst< SFNormalNode > _normal = 0,
00151 Inst< SFTextureCoordinateNode > _texCoord = 0,
00152 Inst< SFBool > _ccw = 0,
00153 Inst< SFBool > _colorPerVertex = 0,
00154 Inst< SFBool > _normalPerVertex = 0,
00155 Inst< SFBool > _solid = 0,
00156 Inst< MFVertexAttributeNode > _attrib = 0,
00157 Inst< AutoNormal > _autoNormal = 0,
00158 Inst< MFInt32 > _stripCount = 0 );
00159
00160 #ifdef USE_HAPTICS
00163 virtual void traverseSG( TraverseInfo &ti );
00164 #endif
00165
00167 virtual void render();
00168
00173 auto_ptr< AutoNormal > autoNormal;
00174
00184 auto_ptr< MFInt32 > stripCount;
00185
00187 static H3DNodeDatabase database;
00188 };
00189 }
00190
00191 #endif