meshReorder/meshRemapCmd.h

meshReorder/meshRemapCmd.h
//-
// ==========================================================================
// Copyright 1995,2006,2008 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk
// license agreement provided at the time of installation or download,
// or which otherwise accompanies this software in either electronic
// or hard copy form.
// ==========================================================================
//+
//
// meshRemapCmd.h
//
// Description:
// Transfer the vertex/edge/face information from one mesh onto another.
// The meshes are traversed based on three user supplied CVs, for each
// mesh.
//
// The CV/edge/face information is mapped based on the traversal
// order within each mesh.
//
// Usage:
// meshRemap srcMesh.vtx[5] srcMesh.vtx[23] srcMesh.vtx[9] dstMesh.vtx[13] dstMesh.vtx[16] dstMesh.vtx[17]
//
// The vertices for each mesh must all be from a common face, be
// adjacent, and be in order, clockwise or counter-clockwise, around
// that face. For example, if the face has five vertices A, B, C, D
// and E, in clockwise order, then you could specify ABC, BCD, DEA,
// AED, DCB, etc. But ABD would be invalid because B and D are not
// adjacent, and BCA would be invalid because they are not in order.
//
// See Also:
// meshRemapTool.cpp : this context allows you to interactively pick
// vertices and invoke this command
//
#ifndef _MESH_REMAP_CMD_H_
#define _MESH_REMAP_CMD_H_
#include <maya/MPxCommand.h>
#include <maya/MDagPath.h>
#include <maya/MSelectionList.h>
#include <maya/MIntArray.h>
#include <maya/MFloatPointArray.h>
#include <maya/MStringArray.h>
#include <maya/MFnMesh.h>
class MArgList;
// MAIN CLASS DECLARATION FOR THE MEL COMMAND:
class meshRemapCommand : public MPxCommand
{
private:
int fFaceIdxSrc;
int fFaceIdxDst;
MIntArray fFaceVtxSrc;
MIntArray fFaceVtxDst;
MDagPath fDagPathSrc;
MDagPath fDagPathDst;
// For undo
MFloatPointArray fVertices;
MIntArray fPolygonCounts;
MIntArray fPolygonConnects;
// For Colors undo
MStringArray fColorSetNames;
MColorArray *fColorArrays;
bool *fClampedArray;
// For UVs undo
MStringArray fUVSetNames;
MFloatArray *fUArrays;
MFloatArray *fVArrays;
MIntArray *fUVCountsArrays;
MIntArray *fUVIdsArrays;
MStatus parseArgs(const MArgList&);
public:
meshRemapCommand();
virtual ~meshRemapCommand();
static void* creator();
bool isUndoable() const { return true; }
void reset();
};
#endif