Real time facial animation package based on muscle model of the face. Includes basic scripting language, full API, animation compositing, tools for creating and exporting muscles in 3D studio max.
License
Qt Public License (QPL)Follow Expression Facial Animation System
Other Useful Business Software
Powering the best of the internet | Fastly
Ensure your websites, applications and services can effortlessly handle the demands of your users with Fastly. Fastly’s portfolio is designed to be highly performant, personalized and secure while seamlessly scaling to support your growth.
Rate This Project
Login To Rate This Project
User Reviews
-
I couldn't build it. ... g++ -DPACKAGE_NAME=\"EXPRESSION\" -DPACKAGE_TARNAME=\"expression\" -DPACKAGE_VERSION=\"0.1\" "-DPACKAGE_STRING=\"EXPRESSION 0.1\"" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DPACKAGE=\"EXPRESSION\" -DVERSION=\"0.1\" -I. -I. -I. -I../../../sdk/nvmathlib/inc/ -I../../../src/ -g -Wall -MT ExpHead.lo -MD -MP -MF .deps/ExpHead.Tpo -c ExpHead.cpp -fPIC -DPIC -DPIC -o ExpHead.o In file included from ExpHead.cpp:21:0: Exphead.h:25:0: warning: ignoring #pragma warning [-Wunknown-pragmas] #pragma warning (disable:4786) //MS VC++ doesn't like maps ^ In file included from ExpHead.cpp:31:0: ExpMeshAdapter.h:60:8: warning: extra tokens at end of #endif directive #endif EXPMESHADAPTER_H ^ In file included from ExpHead.cpp:21:0: Exphead.h:291:12: error: extra qualification 'ExpHead::' on member 'GetCurrentlySelectedMuscle' [-fpermissive] Muscle * ExpHead::GetCurrentlySelectedMuscle(); ^ Exphead.h:292:27: error: extra qualification 'ExpHead::' on member 'GetMuscleArray' [-fpermissive] std::vector<Muscle *> & ExpHead::GetMuscleArray(){return mMuscleData.mMuscles;} ^ ExpHead.cpp: In member function 'void EyelidGizmo::Activate(float)': ExpHead.cpp:107:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i=0; i < mTaglist.size(); i++) { ^ ExpHead.cpp: In member function 'void FacialLayer::InterpolateExpression(const Expression&, float)': ExpHead.cpp:124:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i=0; i < mOutput.m.size(); i++) { ^ ExpHead.cpp: In member function 'void ExpHead::InitLayers()': ExpHead.cpp:142:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < mLayers.size(); i++) ^ ExpHead.cpp: In destructor 'MuscleData::~MuscleData()': ExpHead.cpp:196:24: warning: deleting object of abstract class type 'Muscle' which has non-virtual destructor will cause undefined behaviour [-Wdelete-non-virtual-dtor] delete (mMuscles[i]); ^ ExpHead.cpp: In member function 'void ExpHead::ReadTags(const string&)': ExpHead.cpp:227:13: error: 'stderr' was not declared in this scope fprintf(stderr,"Opening error on file:%10s\n", FileName) ; ^ ExpHead.cpp:227:60: error: 'fprintf' was not declared in this scope fprintf(stderr,"Opening error on file:%10s\n", FileName) ; ^ ExpHead.cpp:237:38: error: 'fscanf' was not declared in this scope fscanf ( Infile, "%s", &tagname ) ; ^ ExpHead.cpp:274:17: error: 'fclose' was not declared in this scope fclose(Infile); ^ ExpHead.cpp: In member function 'void MuscleData::ReadMuscles(std::string, std::vector<Morpher*>*, ExpMeshAdapter*)': ExpHead.cpp:305:13: error: 'stderr' was not declared in this scope fprintf(stderr,"Opening error on file:%10s\n", FileName.c_str( ) ); ^ ExpHead.cpp:305:70: error: 'fprintf' was not declared in this scope fprintf(stderr,"Opening error on file:%10s\n", FileName.c_str( ) ); ^ ExpHead.cpp:308:43: error: 'fscanf' was not declared in this scope fscanf ( Infile, "%d", &numberofmuscles ) ; ^ ExpHead.cpp:426:16: error: 'fclose' was not declared in this scope fclose(Infile) ; ^ ExpHead.cpp: In member function 'void ExpHead::CreateMuscleMapping()': ExpHead.cpp:432:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i< NumMuscle(); i ++) { ^ ExpHead.cpp: In member function 'void ExpHead::ReadPrimitives(const string&)': ExpHead.cpp:477:15: error: 'stderr' was not declared in this scope fprintf ( stderr, "can't open input file: %s\n", FileName ) ; ^ ExpHead.cpp:477:63: error: 'fprintf' was not declared in this scope fprintf ( stderr, "can't open input file: %s\n", FileName ) ; ^ ExpHead.cpp:482:41: error: 'fscanf' was not declared in this scope fscanf ( InFile, "%d", &nexpressions ) ; ^ ExpHead.cpp:511:20: error: 'fclose' was not declared in this scope fclose ( InFile ) ; ^ ExpHead.cpp: In member function 'void ExpHead::ReadCompoundPrimitives(const string&)': ExpHead.cpp:566:15: error: 'stderr' was not declared in this scope fprintf ( stderr, "can't open input file: %s\n", FileName ) ; ^ ExpHead.cpp:566:63: error: 'fprintf' was not declared in this scope fprintf ( stderr, "can't open input file: %s\n", FileName ) ; ^ ExpHead.cpp:571:41: error: 'fscanf' was not declared in this scope fscanf ( InFile, "%d", &numofcompound ) ; ^ ExpHead.cpp:644:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (index >= mExpressions.size()){ ^ ExpHead.cpp:672:19: error: 'fclose' was not declared in this scope fclose ( InFile ) ; ^ ExpHead.cpp:558:12: warning: unused variable 'face' [-Wunused-variable] ExpHead *face =this; ^ ExpHead.cpp: In member function 'void ExpHead::PrintCurrentExpression()': ExpHead.cpp:721:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (i=0; i < NumMuscle(); i++){ ^ ExpHead.cpp: In member function 'void ExpHead::OverlayExpression(Expression*, const Expression&, const Expression&)': ExpHead.cpp:764:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i=0; i< res->m.size(); i++) ^ ExpHead.cpp: In member function 'void FacialLayer::InterpolateKeyframes(const Sequence&, float)': ExpHead.cpp:787:7: warning: unused variable 'nkeys' [-Wunused-variable] int nkeys = keylist.keyframes.size(); ^ ExpHead.cpp: In member function 'void ExpHead::ActivateCurrentState()': ExpHead.cpp:830:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i = 0; i < mLayers.size(); i++) ^ ExpHead.cpp:852:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (i=0; i < NumMuscle(); i++) ^ ExpHead.cpp: In member function 'void ExpHead::DrawMuscles(const MatQ&)': ExpHead.cpp:888:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i=0; i<NumMuscle(); i++ ) { ^ ExpHead.cpp: In member function 'void ExpHead::ProcessEvent(float)': ExpHead.cpp:1027:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < mLayers.size(); i++) ^ ExpHead.cpp: In member function 'bool ExpHead::ProcessEvent(ExpEvent*, int)': ExpHead.cpp:1055:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (current->message >= mExpressions.size()) { ^ ExpHead.cpp:1046:10: warning: enumeration value 'playbackSingle' not handled in switch [-Wswitch] switch (current->type) { ^ ExpHead.cpp:1046:10: warning: enumeration value 'nextExp' not handled in switch [-Wswitch] ExpHead.cpp: In member function 'void ExpHead::SelectNextMuscle()': ExpHead.cpp:1132:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (current_muscle >= (NumMuscle())){ ^ ExpHead.cpp: In member function 'const string ExpHead::GetCurrentlySelectedMuscleName()': ExpHead.cpp:1153:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (current_muscle < (NumMuscle()) && current_muscle >= 0){ ^ ExpHead.cpp: In member function 'Muscle* ExpHead::GetCurrentlySelectedMuscle()': ExpHead.cpp:1162:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (current_muscle < (NumMuscle()) && current_muscle >= 0){ ^ ExpHead.cpp: In member function 'const Expression& ExpHead::GetExpression(const string&)': ExpHead.cpp:1206:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(ret!= -1) ^ Makefile:287: recipe for target 'ExpHead.lo' failed make[3]: *** [ExpHead.lo] Error 1 make[3]: Leaving directory '/home/stephane/devel/expression/ExpDemo1.2_linux/src/expression/ExpressionLib' Makefile:176: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory '/home/stephane/devel/expression/ExpDemo1.2_linux/src/expression' Makefile:176: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/stephane/devel/expression/ExpDemo1.2_linux/src' Makefile:190: recipe for target 'all-recursive' failed make: *** [all-recursive] Error 1