From 0e8f0361c1068eb4c2f634dfcf4e1762d87f40d2 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Sat, 31 Mar 2012 16:44:02 +0100 Subject: implementing trap door --- morpher/src/morphmesh.cpp | 27 +++++++++++++++------------ morpher/src/morphmesh.h | 21 +++++++++++++++++++-- morpher/src/testApp.cpp | 5 ++++- 3 files changed, 38 insertions(+), 15 deletions(-) (limited to 'morpher/src') 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& targetBlend){ +void morphmesh::draw(const vector& targets, const vector& 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 #include +/* +Tim Redfern, March 2012 + +Loads meshes in Oak3D XML format + +Draws blended morph targets + +Multiple meshes are loaded as morph targets + +Coords are absolute + +TODO +draw(vector targets, vector weights); - m + +*/ + class morphmesh : public ofMesh { public: morphmesh(); + morphmesh(string filename); virtual ~morphmesh(); bool loadfile(string filename); void draw(int target); - void draw(const vector& targetBlend); + void draw(const vector& targets, const vector& weights); int getNumTargets(); protected: private: //vector < >targets; - vector< vector > targets; + vector< vector > morphs; }; #endif // MORPHMESH_H diff --git a/morpher/src/testApp.cpp b/morpher/src/testApp.cpp index 41b04eb..3b5779e 100644 --- a/morpher/src/testApp.cpp +++ b/morpher/src/testApp.cpp @@ -28,8 +28,11 @@ void testApp::update(){ void testApp::draw(){ //calculate morph targets float segment=(sin(ofGetElapsedTimef())*0.5)+0.5; + vector targets; vector weights; + targets.push_back(0); weights.push_back(segment); + targets.push_back(1); weights.push_back(1.0-segment); //printf("drawing %f %f\n",segment,1.0-segment); @@ -41,7 +44,7 @@ void testApp::draw(){ ofRotate(yr,1,0,0); ofRotate(180,1,0,0); ofScale(2.0,2.0,2.0); - mesh.draw(weights); + mesh.draw(targets,weights); ofPopMatrix(); unbindTexture(texture); -- cgit v1.2.3