Changeset 9737

Show
Ignore:
Timestamp:
02/09/09 23:56:21 (6 years ago)
Author:
robert
Message:

From Fabien Lavignotte, "Here is some various small fixes i have done while playing with
osgAnimation.

  • Animation : removed the _name attribute that is never used.
  • BasicAnimationManager? : fix a crash on Windows with the example

osganimationviewer. The _lastUpdate attribute was not initialized when
using copy constructor.

Location:
OpenSceneGraph/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osganimationskinning/osganimationskinning.cpp

    r9531 r9737  
    253253    initVertexMap(root.get(), right0.get(), right1.get(), geom, src.get()); 
    254254 
    255     geom->buildVertexSet(); 
    256     geom->buildTransformer(skelroot.get()); 
    257  
    258255    // let's run ! 
    259256    viewer.setSceneData( scene ); 
  • OpenSceneGraph/trunk/include/osgAnimation/RigGeometry

    r9377 r9737  
    2828    public: 
    2929 
     30        RigGeometry(); 
     31        RigGeometry(const osg::Geometry& b); 
     32        RigGeometry(const RigGeometry& b, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); 
     33 
     34        META_Object(osgAnimation, RigGeometry); 
     35 
     36        void setInfluenceMap(osgAnimation::VertexInfluenceMap* vertexInfluenceMap) { _vertexInfluenceMap = vertexInfluenceMap; } 
     37        const osgAnimation::VertexInfluenceMap* getInfluenceMap() const { return _vertexInfluenceMap.get();} 
     38        osgAnimation::VertexInfluenceMap* getInfluenceMap() { return _vertexInfluenceMap.get();} 
     39  
     40        const Skeleton* getSkeleton() const; 
     41        Skeleton* getSkeleton(); 
     42         
     43        void setNeedToComputeMatrix(bool state) { _needToComputeMatrix = state;} 
     44        bool getNeedToComputeMatrix() const { return _needToComputeMatrix;} 
     45         
     46        void buildVertexSet(); 
     47        void buildTransformer(Skeleton* root); 
     48        void computeMatrixFromRootSkeleton(); 
     49 
     50        virtual void transformSoftwareMethod(); 
     51        const osgAnimation::VertexInfluenceSet& getVertexInfluenceSet() const { return _vertexInfluenceSet;} 
     52 
     53        const std::vector<osg::Vec3>& getPositionSource() const { return _positionSource;} 
     54        const std::vector<osg::Vec3>& getNormalSource() const { return _normalSource;} 
     55 
     56    protected: 
     57 
     58        std::vector<osg::Vec3> _positionSource; 
     59        std::vector<osg::Vec3> _normalSource; 
     60 
     61        osgAnimation::VertexInfluenceSet _vertexInfluenceSet; 
     62        osg::ref_ptr<osgAnimation::VertexInfluenceMap> _vertexInfluenceMap; 
     63        osgAnimation::TransformVertexFunctor _transformVertexes; 
     64 
     65        osg::Matrix _matrixFromSkeletonToGeometry; 
     66        osg::Matrix _invMatrixFromSkeletonToGeometry; 
     67        osg::observer_ptr<Skeleton> _root; 
     68        bool _needToComputeMatrix; 
     69 
     70  
    3071        struct FindNearestParentSkeleton : public osg::NodeVisitor 
    3172        { 
     
    74115         *  throw a subgraph.  
    75116         */ 
    76         struct BuildVertexTransformerVisitor : public osg::NodeVisitor  
     117        struct BuildVertexTransformerVisitor : public osg::NodeVisitor 
    77118        { 
    78119            osg::ref_ptr<Skeleton> _root; 
     
    95136        }; 
    96137 
    97  
    98         RigGeometry(); 
    99         RigGeometry(const osg::Geometry& b); 
    100         RigGeometry(const RigGeometry& b, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); 
    101  
    102         virtual osg::Object* cloneType() const { return new RigGeometry(); } 
    103         virtual osg::Object* clone(const osg::CopyOp& copyop) const { return new RigGeometry(*this,copyop); }         
    104         virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const RigGeometry*>(obj)!=NULL; } 
    105         virtual const char* libraryName() const { return "osgAnimation"; } 
    106         virtual const char* className() const { return "RigGeometry"; } 
    107  
    108  
    109         void setInfluenceMap(osgAnimation::VertexInfluenceMap* vertexInfluenceMap) { _vertexInfluenceMap = vertexInfluenceMap; } 
    110         const osgAnimation::VertexInfluenceMap* getInfluenceMap() const { return _vertexInfluenceMap.get();} 
    111         osgAnimation::VertexInfluenceMap* getInfluenceMap() { return _vertexInfluenceMap.get();} 
    112         void buildVertexSet(); 
    113         void buildTransformer(Skeleton* root); 
    114         void computeMatrixFromRootSkeleton(); 
    115  
    116         void setNeedToComputeMatrix(bool state) { _needToComputeMatrix = state;} 
    117         bool getNeedToComputeMatrix() const { return _needToComputeMatrix;} 
    118  
    119         const Skeleton* getSkeleton() const; 
    120         Skeleton* getSkeleton(); 
    121         virtual void transformSoftwareMethod(); 
    122         const osgAnimation::VertexInfluenceSet& getVertexInfluenceSet() const { return _vertexInfluenceSet;} 
    123  
    124         std::vector<osg::Vec3> _positionSource; 
    125         std::vector<osg::Vec3> _normalSource; 
    126  
    127         osgAnimation::VertexInfluenceSet _vertexInfluenceSet; 
    128         osg::ref_ptr<osgAnimation::VertexInfluenceMap> _vertexInfluenceMap; 
    129         osgAnimation::TransformVertexFunctor _transformVertexes; 
    130  
    131         osg::Matrix _matrixFromSkeletonToGeometry; 
    132         osg::Matrix _invMatrixFromSkeletonToGeometry; 
    133         osg::observer_ptr<Skeleton> _root; 
    134         bool _needToComputeMatrix; 
    135  
    136     }; 
     138   }; 
    137139 
    138140} 
  • OpenSceneGraph/trunk/include/osgAnimation/Timeline

    r9458 r9737  
    2828{ 
    2929 
    30     class Action : public virtual osg::Object 
    31     { 
    32     public: 
    33  
    34         class Callback : public virtual osg::Object 
     30    class Action : public osg::Object 
     31    { 
     32    public: 
     33 
     34        class Callback : public osg::Object 
    3535        { 
    3636        public: 
     
    163163 
    164164 
    165     class Timeline : public virtual osg::Object 
     165    class Timeline : public osg::Object 
    166166    { 
    167167    protected: 
  • OpenSceneGraph/trunk/src/osgWrappers/osgAnimation/RigGeometry.cpp

    r9402 r9737  
    1212 
    1313#include <osg/CopyOp> 
    14 #include <osg/Drawable> 
    15 #include <osg/Geode> 
    1614#include <osg/Geometry> 
    17 #include <osg/NodeVisitor> 
    1815#include <osg/Object> 
    19 #include <osg/Transform> 
     16#include <osg/Vec3> 
    2017#include <osgAnimation/RigGeometry> 
    2118#include <osgAnimation/Skeleton> 
     
    8582                  "", 
    8683                  ""); 
     84        I_Method0(const osgAnimation::Skeleton *, getSkeleton, 
     85                  Properties::NON_VIRTUAL, 
     86                  __C5_Skeleton_P1__getSkeleton, 
     87                  "", 
     88                  ""); 
     89        I_Method0(osgAnimation::Skeleton *, getSkeleton, 
     90                  Properties::NON_VIRTUAL, 
     91                  __Skeleton_P1__getSkeleton, 
     92                  "", 
     93                  ""); 
     94        I_Method1(void, setNeedToComputeMatrix, IN, bool, state, 
     95                  Properties::NON_VIRTUAL, 
     96                  __void__setNeedToComputeMatrix__bool, 
     97                  "", 
     98                  ""); 
     99        I_Method0(bool, getNeedToComputeMatrix, 
     100                  Properties::NON_VIRTUAL, 
     101                  __bool__getNeedToComputeMatrix, 
     102                  "", 
     103                  ""); 
    87104        I_Method0(void, buildVertexSet, 
    88105                  Properties::NON_VIRTUAL, 
     
    100117                  "", 
    101118                  ""); 
    102         I_Method1(void, setNeedToComputeMatrix, IN, bool, state, 
    103                   Properties::NON_VIRTUAL, 
    104                   __void__setNeedToComputeMatrix__bool, 
    105                   "", 
    106                   ""); 
    107         I_Method0(bool, getNeedToComputeMatrix, 
    108                   Properties::NON_VIRTUAL, 
    109                   __bool__getNeedToComputeMatrix, 
    110                   "", 
    111                   ""); 
    112         I_Method0(const osgAnimation::Skeleton *, getSkeleton, 
    113                   Properties::NON_VIRTUAL, 
    114                   __C5_Skeleton_P1__getSkeleton, 
    115                   "", 
    116                   ""); 
    117         I_Method0(osgAnimation::Skeleton *, getSkeleton, 
    118                   Properties::NON_VIRTUAL, 
    119                   __Skeleton_P1__getSkeleton, 
    120                   "", 
    121                   ""); 
    122119        I_Method0(void, transformSoftwareMethod, 
    123120                  Properties::VIRTUAL, 
     
    130127                  "", 
    131128                  ""); 
     129        I_Method0(const std::vector< osg::Vec3 > &, getPositionSource, 
     130                  Properties::NON_VIRTUAL, 
     131                  __C5_std_vectorT1_osg_Vec3__R1__getPositionSource, 
     132                  "", 
     133                  ""); 
     134        I_Method0(const std::vector< osg::Vec3 > &, getNormalSource, 
     135                  Properties::NON_VIRTUAL, 
     136                  __C5_std_vectorT1_osg_Vec3__R1__getNormalSource, 
     137                  "", 
     138                  ""); 
    132139        I_SimpleProperty(osgAnimation::VertexInfluenceMap *, InfluenceMap,  
    133140                         __osgAnimation_VertexInfluenceMap_P1__getInfluenceMap,  
     
    136143                         __bool__getNeedToComputeMatrix,  
    137144                         __void__setNeedToComputeMatrix__bool); 
     145        I_SimpleProperty(const std::vector< osg::Vec3 > &, NormalSource,  
     146                         __C5_std_vectorT1_osg_Vec3__R1__getNormalSource,  
     147                         0); 
     148        I_SimpleProperty(const std::vector< osg::Vec3 > &, PositionSource,  
     149                         __C5_std_vectorT1_osg_Vec3__R1__getPositionSource,  
     150                         0); 
    138151        I_SimpleProperty(osgAnimation::Skeleton *, Skeleton,  
    139152                         __Skeleton_P1__getSkeleton,  
     
    142155                         __C5_osgAnimation_VertexInfluenceSet_R1__getVertexInfluenceSet,  
    143156                         0); 
    144         I_PublicMemberProperty(std::vector< osg::Vec3 >, _positionSource); 
    145         I_PublicMemberProperty(std::vector< osg::Vec3 >, _normalSource); 
    146         I_PublicMemberProperty(osgAnimation::VertexInfluenceSet, _vertexInfluenceSet); 
    147         I_PublicMemberProperty(osg::ref_ptr< osgAnimation::VertexInfluenceMap >, _vertexInfluenceMap); 
    148         I_PublicMemberProperty(osgAnimation::TransformVertexFunctor, _transformVertexes); 
    149         I_PublicMemberProperty(osg::Matrix, _matrixFromSkeletonToGeometry); 
    150         I_PublicMemberProperty(osg::Matrix, _invMatrixFromSkeletonToGeometry); 
    151         I_PublicMemberProperty(osg::observer_ptr< osgAnimation::Skeleton >, _root); 
    152         I_PublicMemberProperty(bool, _needToComputeMatrix); 
    153157END_REFLECTOR 
    154158 
    155 BEGIN_OBJECT_REFLECTOR(osgAnimation::RigGeometry::BuildVertexTransformerVisitor) 
    156         I_DeclaringFile("osgAnimation/RigGeometry"); 
    157         I_BaseType(osg::NodeVisitor); 
    158         I_Constructor1(IN, osgAnimation::Skeleton *, root, 
    159                        Properties::NON_EXPLICIT, 
    160                        ____BuildVertexTransformerVisitor__Skeleton_P1, 
    161                        "", 
    162                        ""); 
    163         I_Method0(const char *, libraryName, 
    164                   Properties::VIRTUAL, 
    165                   __C5_char_P1__libraryName, 
    166                   "return the library name/namespapce of the visitor's. ", 
    167                   "Should be defined by derived classes. "); 
    168         I_Method0(const char *, className, 
    169                   Properties::VIRTUAL, 
    170                   __C5_char_P1__className, 
    171                   "return the name of the visitor's class type. ", 
    172                   "Should be defined by derived classes. "); 
    173         I_Method1(void, apply, IN, osg::Geode &, node, 
    174                   Properties::VIRTUAL, 
    175                   __void__apply__osg_Geode_R1, 
    176                   "", 
    177                   ""); 
    178         I_PublicMemberProperty(osg::ref_ptr< osgAnimation::Skeleton >, _root); 
    179 END_REFLECTOR 
    180  
    181 BEGIN_OBJECT_REFLECTOR(osgAnimation::RigGeometry::FindNearestParentSkeleton) 
    182         I_DeclaringFile("osgAnimation/RigGeometry"); 
    183         I_BaseType(osg::NodeVisitor); 
    184         I_Constructor0(____FindNearestParentSkeleton, 
    185                        "", 
    186                        ""); 
    187         I_Method1(void, apply, IN, osg::Transform &, node, 
    188                   Properties::VIRTUAL, 
    189                   __void__apply__osg_Transform_R1, 
    190                   "", 
    191                   ""); 
    192         I_PublicMemberProperty(osg::ref_ptr< osgAnimation::Skeleton >, _root); 
    193 END_REFLECTOR 
    194  
    195 BEGIN_OBJECT_REFLECTOR(osgAnimation::RigGeometry::UpdateVertex) 
    196         I_DeclaringFile("osgAnimation/RigGeometry"); 
    197         I_BaseType(osg::Drawable::UpdateCallback); 
    198         I_Constructor0(____UpdateVertex, 
    199                        "", 
    200                        ""); 
    201         I_Method2(void, update, IN, osg::NodeVisitor *, x, IN, osg::Drawable *, drw, 
    202                   Properties::VIRTUAL, 
    203                   __void__update__osg_NodeVisitor_P1__osg_Drawable_P1, 
    204                   "do customized update code. ", 
    205                   ""); 
    206 END_REFLECTOR 
    207  
  • OpenSceneGraph/trunk/src/osgWrappers/osgAnimation/Timeline.cpp

    r9461 r9737  
    2929BEGIN_OBJECT_REFLECTOR(osgAnimation::Action) 
    3030        I_DeclaringFile("osgAnimation/Timeline"); 
    31         I_VirtualBaseType(osg::Object); 
     31        I_BaseType(osg::Object); 
    3232        I_Method0(osg::Object *, cloneType, 
    3333                  Properties::VIRTUAL, 
     
    139139BEGIN_OBJECT_REFLECTOR(osgAnimation::Action::Callback) 
    140140        I_DeclaringFile("osgAnimation/Timeline"); 
    141         I_VirtualBaseType(osg::Object); 
     141        I_BaseType(osg::Object); 
    142142        I_Constructor0(____Callback, 
    143143                       "", 
     
    323323BEGIN_OBJECT_REFLECTOR(osgAnimation::Timeline) 
    324324        I_DeclaringFile("osgAnimation/Timeline"); 
    325         I_VirtualBaseType(osg::Object); 
     325        I_BaseType(osg::Object); 
    326326        I_Method0(osg::Object *, cloneType, 
    327327                  Properties::VIRTUAL,