00001
00015 #ifndef ELASTICNODE_H
00016 #define ELASTICNODE_H
00017
00018 #include <maya/MPxNode.h>
00019 #include <maya/MFnNumericAttribute.h>
00020 #include <maya/MTypeId.h>
00021
00022 #include <maya/MPointArray.h>
00023 #include <maya/MIntArray.h>
00024 #include <maya/MFloatArray.h>
00025 #include <maya/MFloatVectorArray.h>
00026 #include <maya/MDoubleArray.h>
00027
00028 #include <iostream>
00029
00030 class elasticNode : public MPxNode
00031 {
00032 public:
00034
00035 static const MTypeId id ;
00037 static const MString typeName;
00038
00040
00041 virtual MStatus compute( const MPlug& plug, MDataBlock& data ) ;
00043 static void *creator() ;
00045 static MStatus initialize() ;
00046
00047
00048
00049 void totalForce() ;
00050
00051 private:
00053 void PDESolver( double b,double c,double d,
00054 double dens,double damp,
00055 MIntArray arrayDeformN,
00056 MIntArray arrayForceN,
00057 MIntArray arrayBoundaryN,
00058 MDoubleArray arrayU,
00059 MDoubleArray arrayV,
00060 int totalU,
00061 int totalV,
00062 double time, double dTime,
00063 MDoubleArray arrayPx,
00064 MDoubleArray arrayPy,
00065 MDoubleArray arrayPz,
00066 MObject &solvedMeshData,
00067 unsigned int numberDeformed,
00068 double su0, double su1,
00069 double sv0, double sv1);
00070
00072 void EqSolver( double b,double c,double d,
00073 double dens,double damp,
00074 double su0,double su1,
00075 double sv0,double sv1,
00076 double h,
00077 double arrayP[],
00078 int totalU,
00079 int totalV,
00080 int TotalNode,
00081 int Neq,
00082 double dTime,
00083 double forceComponentsArray[],
00084 double Vt[]) ;
00085
00087 int ciggj( double **a,
00088 int n,
00089 double b[]) ;
00090
00092
00093 static MObject inputMesh ;
00095 static MObject outputMesh;
00096
00098
00099 static MObject density ;
00101 static MObject damping ;
00103 static MObject ParameterB ;
00105 static MObject ParameterC ;
00107 static MObject ParameterD ;
00108
00110
00111 static MObject su0 ;
00113 static MObject su1 ;
00115 static MObject sv0 ;
00117 static MObject sv1 ;
00118
00120
00121 static MObject currentTime ;
00123 static MObject deltaTime ;
00125 static MObject startFrame ;
00126
00128
00129 static MObject inputForceComponents ;
00131 static MObject inputForceCenters ;
00133 static MObject deformationRadius ;
00135 static MObject forceRadius ;
00137 static MObject forceMag ;
00138
00140
00141 MIntArray arrayDeformN ;
00143 MIntArray arrayBoundaryN ;
00145 MIntArray arrayForceN ;
00147 MIntArray previousDefN ;
00148
00150
00151 MDoubleArray arrayU ;
00153 MDoubleArray arrayV ;
00154
00155
00157 MDoubleArray arrayPx ;
00159 MDoubleArray arrayPy ;
00161 MDoubleArray arrayPz ;
00162
00163
00165 MDoubleArray forceComponentsArrayX ;
00167 MDoubleArray forceComponentsArrayY ;
00169 MDoubleArray forceComponentsArrayZ ;
00170
00171
00173 MDoubleArray Vtx ;
00175 MDoubleArray Vty ;
00177 MDoubleArray Vtz ;
00179 MDoubleArray solvedVtx ;
00181 MDoubleArray solvedVty ;
00183 MDoubleArray solvedVtz ;
00184
00185
00187 MObject solvedMeshData ;
00189 MObject finalMeshData ;
00191 MObject inputMeshObject ;
00192 };
00193
00194 #endif
00195
00196