diff options
| author | Tim Redfern <tim@eclectronics.org> | 2012-03-31 16:44:02 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2012-03-31 16:44:02 +0100 |
| commit | 0e8f0361c1068eb4c2f634dfcf4e1762d87f40d2 (patch) | |
| tree | 96a4eb154c1ac2dbe5ad4e04d4e33b281832e441 /morpher/src/morphmesh.cpp | |
| parent | 623e1924aeea83ea70c8ae7f645b067f17a293ea (diff) | |
implementing trap door
Diffstat (limited to 'morpher/src/morphmesh.cpp')
| -rw-r--r-- | morpher/src/morphmesh.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/morpher/src/morphmesh.cpp b/morpher/src/morphmesh.cpp index c617f6f..77cc8c9 100644 --- a/morpher/src/morphmesh.cpp +++ b/morpher/src/morphmesh.cpp @@ -1,8 +1,11 @@ #include "morphmesh.h" morphmesh::morphmesh() +{} + +morphmesh::morphmesh(string filename) { - //ctor + loadfile(filename); } morphmesh::~morphmesh() @@ -11,28 +14,28 @@ morphmesh::~morphmesh() } int morphmesh::getNumTargets(){ - return targets.size(); + return morphs.size(); } void morphmesh::draw(int target){ clearVertices(); - addVertices(targets[target]); + addVertices(morphs[target]); ofMesh::draw(); } -void morphmesh::draw(const vector<float>& targetBlend){ +void morphmesh::draw(const vector<int>& targets, const vector<float>& weights){ clearVertices(); //normalise weights - int weightsNum=min(targetBlend.size(),targets.size()); + int targetsNum=min(targets.size(),morphs.size()); float totalWeights=0; - for (int i=0;i<weightsNum;i++) totalWeights+=targetBlend[i]; + for (int i=0;i<targetsNum;i++) totalWeights+=weights[i]; float weightFactor=1.0/totalWeights; float bx,by,bz; - for (int j=0;j<targets[0].size();j++) { + for (int j=0;j<morphs[0].size();j++) { bx=by=bz=0; - for (int i=0;i<weightsNum;i++) { - bx+=targets[i][j].x*targetBlend[i]; - by+=targets[i][j].y*targetBlend[i]; - bz+=targets[i][j].z*targetBlend[i]; + for (int i=0;i<targetsNum;i++) { + bx+=morphs[targets[i]][j].x*weights[i]; + by+=morphs[targets[i]][j].y*weights[i]; + bz+=morphs[targets[i]][j].z*weights[i]; } addVertex(ofVec3f(bx*weightFactor,by*weightFactor,bz*weightFactor)); } @@ -61,7 +64,7 @@ bool morphmesh::loadfile(string filename){ for (int j=0;j<vstrings.size();j+=3) { verts.push_back(ofVec3f(ofToFloat(vstrings[j]),ofToFloat(vstrings[j+1]),ofToFloat(vstrings[j+2]))); } - targets.push_back(verts); + morphs.push_back(verts); if (i==0) { addVertices(verts); |
