Changeset 3526
- Timestamp:
- 10/24/04 16:42:40 (9 years ago)
- Location:
- OpenSceneGraph/trunk/include/osgUtil
- Files:
-
- 5 modified
-
TangentSpaceGenerator (modified) (1 diff)
-
TransformAttributeFunctor (modified) (1 diff)
-
TriStripVisitor (modified) (2 diffs)
-
UpdateVisitor (modified) (5 diffs)
-
Version (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osgUtil/TangentSpaceGenerator
r3432 r3526 25 25 { 26 26 27 /**28 This class generates three arrays containing tangent-space basis vectors. It takes29 a texture-mapped Geometry object as input, traverses its primitive sets and computes30 Tangent, Normal and Binormal vectors for each vertex, storing them into arrays.31 The resulting arrays can be used as vertex program varying (per-vertex) parameters,32 enabling advanced effects like bump-mapping.33 To use this class, simply call the generate() method specifying the Geometry object34 you want to process and the texture unit that contains UV mapping for the normal map;35 then you can retrieve the TBN arrays by calling getTangentArray(), getNormalArray()36 and getBinormalArray() methods.37 */38 class OSGUTIL_EXPORT TangentSpaceGenerator: public osg::Referenced {39 public:40 TangentSpaceGenerator();41 TangentSpaceGenerator(const TangentSpaceGenerator ©, const osg::CopyOp ©op = osg::CopyOp::SHALLOW_COPY);27 /** 28 The TangentSpaceGenerator class generates three arrays containing tangent-space basis vectors. 29 It takes a texture-mapped Geometry object as input, traverses its primitive sets and computes 30 Tangent, Normal and Binormal vectors for each vertex, storing them into arrays. 31 The resulting arrays can be used as vertex program varying (per-vertex) parameters, 32 enabling advanced effects like bump-mapping. 33 To use this class, simply call the generate() method specifying the Geometry object 34 you want to process and the texture unit that contains UV mapping for the normal map; 35 then you can retrieve the TBN arrays by calling getTangentArray(), getNormalArray() 36 and getBinormalArray() methods. 37 */ 38 class OSGUTIL_EXPORT TangentSpaceGenerator: public osg::Referenced { 39 public: 40 TangentSpaceGenerator(); 41 TangentSpaceGenerator(const TangentSpaceGenerator ©, const osg::CopyOp ©op = osg::CopyOp::SHALLOW_COPY); 42 42 43 void generate(osg::Geometry *geo, int normal_map_tex_unit = 0);43 void generate(osg::Geometry *geo, int normal_map_tex_unit = 0); 44 44 45 inline osg::Vec4Array *getTangentArray() { return T_.get(); }46 inline const osg::Vec4Array *getTangentArray() const { return T_.get(); }47 inline void setTangentArray(osg::Vec4Array *array) { T_ = array; }45 inline osg::Vec4Array *getTangentArray() { return T_.get(); } 46 inline const osg::Vec4Array *getTangentArray() const { return T_.get(); } 47 inline void setTangentArray(osg::Vec4Array *array) { T_ = array; } 48 48 49 inline osg::Vec4Array *getNormalArray() { return N_.get(); }50 inline const osg::Vec4Array *getNormalArray() const { return N_.get(); }51 inline void setNormalArray(osg::Vec4Array *array) { N_ = array; }49 inline osg::Vec4Array *getNormalArray() { return N_.get(); } 50 inline const osg::Vec4Array *getNormalArray() const { return N_.get(); } 51 inline void setNormalArray(osg::Vec4Array *array) { N_ = array; } 52 52 53 inline osg::Vec4Array *getBinormalArray() { return B_.get(); }54 inline const osg::Vec4Array *getBinormalArray() const { return B_.get(); }55 inline void setBinormalArray(osg::Vec4Array *array) { B_ = array; }53 inline osg::Vec4Array *getBinormalArray() { return B_.get(); } 54 inline const osg::Vec4Array *getBinormalArray() const { return B_.get(); } 55 inline void setBinormalArray(osg::Vec4Array *array) { B_ = array; } 56 56 57 protected:58 virtual ~TangentSpaceGenerator() {}59 TangentSpaceGenerator &operator=(const TangentSpaceGenerator &) { return *this; }57 protected: 58 virtual ~TangentSpaceGenerator() {} 59 TangentSpaceGenerator &operator=(const TangentSpaceGenerator &) { return *this; } 60 60 61 void compute_basis_vectors(osg::PrimitiveSet *pset, const osg::Array *vx, const osg::Array *nx, const osg::Array *tx, int iA, int iB, int iC);61 void compute_basis_vectors(osg::PrimitiveSet *pset, const osg::Array *vx, const osg::Array *nx, const osg::Array *tx, int iA, int iB, int iC); 62 62 63 private:64 osg::ref_ptr<osg::Vec4Array> T_;65 osg::ref_ptr<osg::Vec4Array> B_;66 osg::ref_ptr<osg::Vec4Array> N_;67 };63 private: 64 osg::ref_ptr<osg::Vec4Array> T_; 65 osg::ref_ptr<osg::Vec4Array> B_; 66 osg::ref_ptr<osg::Vec4Array> N_; 67 }; 68 68 69 69 } -
OpenSceneGraph/trunk/include/osgUtil/TransformAttributeFunctor
r1984 r3526 28 28 public: 29 29 30 /** construct a functor to transform a drawable's vertex and normal attributes by specified matrix.*/30 /** Construct a functor to transform a drawable's vertex and normal attributes by specified matrix.*/ 31 31 TransformAttributeFunctor(const osg::Matrix& m); 32 32 33 33 virtual ~TransformAttributeFunctor(); 34 34 35 /** do the work of transforming vertex and normal attributes. */35 /** Do the work of transforming vertex and normal attributes. */ 36 36 virtual void apply(osg::Drawable::AttributeType type,unsigned int count,osg::Vec3* begin); 37 37 -
OpenSceneGraph/trunk/include/osgUtil/TriStripVisitor
r3432 r3526 26 26 27 27 /** A tri stripping visitor for converting Geometry surface primitives into tri strips. 28 * The current implemention is based up Tanguy Fautre's triangulation code.28 * The current implemention is based upon Tanguy Fautre's triangulation code. 29 29 */ 30 30 class OSGUTIL_EXPORT TriStripVisitor : public osg::NodeVisitor … … 46 46 void stripify(osg::Geometry& drawable); 47 47 48 /** Strip fythe accumulated list of Geometry drawables.*/48 /** Stripify (make into strips of tria or quads) the accumulated list of Geometry drawables.*/ 49 49 void stripify(); 50 50 51 /// accumulate the Geometry drawables to stripify51 /// Accumulate the Geometry drawables to make into strips. 52 52 virtual void apply(osg::Geode& geode); 53 53 -
OpenSceneGraph/trunk/include/osgUtil/UpdateVisitor
r3432 r3526 33 33 /** 34 34 * Basic UpdateVisitor implementation for animating a scene. 35 * This visitor traverses the scene graph, call each nodes appCallback if35 * This visitor traverses the scene graph, calling each nodes appCallback if 36 36 * it exists. 37 37 */ … … 45 45 virtual void reset(); 46 46 47 /** During traversal each type of node calls its callbacks and its children traversed. */ 47 48 virtual void apply(osg::Node& node) { handle_callbacks_and_traverse(node); } 48 49 … … 63 64 protected: 64 65 65 // /** prevent unwanted copy construction.*/66 // /** Prevent unwanted copy construction.*/ 66 67 // UpdateVisitor(const UpdateVisitor&):osg::NodeVisitor() {} 67 68 68 /** prevent unwanted copy operator.*/69 /** Prevent unwanted copy operator.*/ 69 70 UpdateVisitor& operator = (const UpdateVisitor&) { return *this; } 70 71 … … 80 81 osg::NodeCallback* callback = node.getUpdateCallback(); 81 82 if (callback) (*callback)(&node,this); 82 /*else if (node.getNumChildrenRequiringUpdateTraversal()>0)*/ traverseGeode(node); 83 /*else if (node.getNumChildrenRequiringUpdateTraversal()>0)*/ 84 traverseGeode(node); 83 85 } 84 86 … … 87 89 traverse((osg::Node&)geode); 88 90 89 // call the app callbacks on the drawables.91 // Call the app callbacks on the drawables. 90 92 for(unsigned int i=0;i<geode.getNumDrawables();++i) 91 93 { -
OpenSceneGraph/trunk/include/osgUtil/Version
r1529 r3526 21 21 22 22 /** 23 * getVersion_osgUtil() returns the library version number.24 * Numbering convention : osg_src-0.8-31 will return 0.8.31 from getVersion_osgUtil.23 * osgUtilGetVersion() returns the library version number. 24 * Numbering convention : osg_src-0.8-31 will return 0.8.31 from osgUtilGetVersion. 25 25 * 26 26 * This C function can be also used to check for the existence of the OpenSceneGraph … … 39 39 40 40 /** 41 * getLibraryName_osgUtil() returns the library name in human friendly form.42 */41 * osgUtilGetLibraryName() returns the library name in human friendly form. 42 */ 43 43 extern OSGUTIL_EXPORT const char* osgUtilGetLibraryName(); 44 44
