#include <maya/MIOStream.h>
#include <maya/MPxDeformerNode.h>
#include <maya/MItGeometry.h>
#include <maya/MFnPlugin.h>
#include <maya/MDataBlock.h>
#include <maya/MDataHandle.h>
#include <maya/MPoint.h>
#include <maya/MTimer.h>
#include <maya/MFnMesh.h>
#include <maya/MPointArray.h>
#include <maya/MFnTypedAttribute.h>
#include <maya/MFnMeshData.h>
#include <maya/MMeshIntersector.h>
#include <maya/MThreadUtils.h>
#define MCheckStatus(status,message) \
if( MStatus::kSuccess != status ) { \
cerr << message << "\n"; \
return status; \
}
{
public:
splatDeformer();
virtual ~splatDeformer();
static void* creator();
public:
private:
};
MTypeId splatDeformer::id( 0x8104D );
MObject splatDeformer::deformingMesh;
splatDeformer::splatDeformer() {}
splatDeformer::~splatDeformer() {}
void* splatDeformer::creator()
{
return new splatDeformer();
}
MStatus splatDeformer::initialize()
{
status = addAttribute( deformingMesh );
MCheckStatus(status, "ERROR in addAttribute\n");
status = attributeAffects( deformingMesh, outputGeom );
MCheckStatus(status, "ERROR in attributeAffects\n");
}
{
return status;
}
MObject thisNode = this->thisMObject();
MPlug inPlug(thisNode,input);
inPlug.selectAncestorLogicalIndex(index,input);
MCheckStatus(status, "ERROR getting input mesh\n");
printf("Incorrect input geometry type\n");
}
unsigned int groupId = hGroup.
asLong();
MCheckStatus(status, "ERROR getting deforming mesh\n");
printf(
"Incorrect deformer geometry type %d\n", deformData.
type());
}
outputData.
copy(inputData);
printf("Incorrect output mesh type\n");
}
iter.allPositions(verts);
bool failed = false;
#ifdef _OPENMP
#pragma omp parallel for
#endif
for(int i=0; i<nPoints; i++) {
if(failed) continue;
failed = true;
continue;
}
}
iter.setAllPositions(verts);
if(failed) {
printf("Closest point failed\n");
}
return status;
}
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"1.0",
"Any");
result = plugin.registerNode( "splatDeformer", splatDeformer::id, splatDeformer::creator,
return result;
}
{
result = plugin.deregisterNode( splatDeformer::id );
return result;
}