~ubuntu-branches/ubuntu/trusty/openscenegraph/trusty

« back to all changes in this revision

Viewing changes to OpenSceneGraph/include/osgAnimation/RigTransformSoftware

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-11-12 02:21:14 UTC
  • mfrom: (31.1.3 trusty-proposed)
  • Revision ID: package-import@ubuntu.com-20131112022114-qaxfhdnhn88vnh10
Tags: 3.2.0~rc1-1ubuntu1
Fix deprecated url_feof.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*  -*-c++-*- 
 
1
/*  -*-c++-*-
2
2
 *  Copyright (C) 2009 Cedric Pinson <cedric.pinson@plopbyte.net>
3
3
 *
4
 
 * This library is open source and may be redistributed and/or modified under  
5
 
 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or 
 
4
 * This library is open source and may be redistributed and/or modified under
 
5
 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
6
6
 * (at your option) any later version.  The full license is in LICENSE file
7
7
 * included with this distribution, and on the openscenegraph.org website.
8
 
 * 
 
8
 *
9
9
 * This library is distributed in the hope that it will be useful,
10
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
12
 * OpenSceneGraph Public License for more details.
13
13
 */
14
14
 
21
21
#include <osgAnimation/VertexInfluence>
22
22
#include <osg/observer_ptr>
23
23
 
24
 
namespace osgAnimation 
 
24
namespace osgAnimation
25
25
{
26
26
 
27
27
    class RigGeometry;
33
33
 
34
34
        RigTransformSoftware();
35
35
        virtual void operator()(RigGeometry&);
36
 
    
37
 
 
38
 
        class BoneWeight 
 
36
 
 
37
 
 
38
        class BoneWeight
39
39
        {
40
40
        public:
41
41
            BoneWeight(Bone* bone, float weight) : _bone(bone), _weight(weight) {}
55
55
        public:
56
56
            BoneWeightList& getBones() { return _bones; }
57
57
            VertexList& getVertexes() { return _vertexes; }
58
 
            
59
 
            void resetMatrix() 
 
58
 
 
59
            void resetMatrix()
60
60
            {
61
61
                _result.set(0, 0, 0, 0,
62
62
                            0, 0, 0, 0,
122
122
        {
123
123
            // the result of matrix mult should be cached to be used for vertexes transform and normal transform and maybe other computation
124
124
            int size = _boneSetVertexSet.size();
125
 
            for (int i = 0; i < size; i++) 
 
125
            for (int i = 0; i < size; i++)
126
126
            {
127
127
                UniqBoneSetVertexSet& uniq = _boneSetVertexSet[i];
128
128
                uniq.computeMatrixForVertexSet();
142
142
        template <class V> void computeNormal(const osg::Matrix& transform, const osg::Matrix& invTransform, const V* src, V* dst)
143
143
        {
144
144
            int size = _boneSetVertexSet.size();
145
 
            for (int i = 0; i < size; i++) 
 
145
            for (int i = 0; i < size; i++)
146
146
            {
147
147
                UniqBoneSetVertexSet& uniq = _boneSetVertexSet[i];
148
148
                uniq.computeMatrixForVertexSet();
150
150
 
151
151
                const VertexList& vertexes = uniq.getVertexes();
152
152
                int vertexSize = vertexes.size();
153
 
                for (int j = 0; j < vertexSize; j++) 
 
153
                for (int j = 0; j < vertexSize; j++)
154
154
                {
155
155
                    int idx = vertexes[j];
156
156
                    dst[idx] = osg::Matrix::transform3x3(src[idx],matrix);