本文整理汇总了C++中MDagPath::transform方法的典型用法代码示例。如果您正苦于以下问题:C++ MDagPath::transform方法的具体用法?C++ MDagPath::transform怎么用?C++ MDagPath::transform使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MDagPath
的用法示例。
在下文中一共展示了MDagPath::transform方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printTransformData
void RadiosityRenderer::printTransformData(const MDagPath& dagPath)
{
printf("got");
//This method simply determines the transformation information on the DAG node and prints it out.
MStatus status;
MObject transformNode = dagPath.transform(&status);
// This node has no transform - i.e., it’s the world node
if (!status && status.statusCode () == MStatus::kInvalidParameter)
return;
MFnDagNode transform (transformNode, &status);
if (!status) {
status.perror("MFnDagNode constructor");
return;
}
MTransformationMatrix matrix (transform.transformationMatrix());
//cout << " translation: " << matrix.translation(MSpace::kWorld)
//<< endl;
double threeDoubles[3];
MTransformationMatrix::RotationOrder rOrder;
matrix.getRotation (threeDoubles, rOrder, MSpace::kWorld);
cout << " rotation: ["
<< threeDoubles[0] << ", "
<< threeDoubles[1] << ", "
<< threeDoubles[2] << "]\n";
matrix.getScale (threeDoubles, MSpace::kWorld);
cout << " scale: ["
<< threeDoubles[0] << ", "
<< threeDoubles[1] << ", "
<< threeDoubles[2] << "]\n";
}
示例2: userDAGGenericCB
void userDAGGenericCB(MDagMessage::DagMessage msg, MDagPath &child,
MDagPath &parent, void *)
{
MString dagStr("DAG Changed - ");
switch (msg) {
case MDagMessage::kParentAdded:
dagStr += "Parent Added: ";
break;
case MDagMessage::kParentRemoved:
dagStr += "Parent Removed: ";
break;
case MDagMessage::kChildAdded:
dagStr += "Child Added: ";
break;
case MDagMessage::kChildRemoved:
dagStr += "Child Removed: ";
break;
case MDagMessage::kChildReordered:
dagStr += "Child Reordered: ";
break;
default:
dagStr += "Unknown Type: ";
break;
}
dagStr += "child = ";
dagStr += child.fullPathName();
dagStr += ", parent = ";
dagStr += parent.fullPathName();
// Check to see if the parent is the world object.
//
MStatus pStat;
parent.transform(&pStat);
if (MS::kInvalidParameter == pStat) {
dagStr += "(WORLD)";
}
// Install callbacks if node is not in the model.
// Callback is for node added to model.
bool incomplete = false;
if ( dagNotInModel( child ) ) {
installNodeAddedCallback( child );
incomplete = true;
}
if ( dagNotInModel( parent ) ) {
installNodeAddedCallback( parent);
incomplete = true;
}
// Warn user that dag path info may be
// incomplete
if (incomplete)
dagStr += "\t// May be incomplete!";
MGlobal::displayInfo(dagStr);
}
示例3: doIt
MStatus setupRGBShaders::doIt( const MArgList & args )
{
unsigned int FIndex = args.flagIndex( "fp", "folderPath" );
unsigned int fIndex = args.flagIndex( "fn", "fileName" );
if( FIndex == MArgList::kInvalidArgIndex || fIndex == MArgList::kInvalidArgIndex ) {
MGlobal::displayError( "Error specifying flag or flag values. \n-fp, -folderPath <folder_path> \t -fn, -fileName <file_name>" );
return MS::kFailure;
}
folderPath = args.asString( FIndex );
fileName = args.asString( fIndex );
MItDag meshIt( MItDag::kDepthFirst, MFn::kMesh );
for( ; !meshIt.isDone(); meshIt.next() ) {
MDagPath dagPath;
meshIt.getPath( dagPath );
meshObjs.append( dagPath.transform() );
}
MItDag camIt( MItDag::kDepthFirst, MFn::kCamera );
for( ; !camIt.isDone(); camIt.next() ) {
MDagPath dagPath;
camIt.getPath( dagPath );
MFnDependencyNode camFn( dagPath.node() );
bool isRenderable;
camFn.findPlug( "renderable" ).getValue( isRenderable );
if( isRenderable )
camObjs.append( dagPath.transform() );
}
MGlobal::executeCommand( "setAttr miDefaultFramebuffer.datatype 5" );
return redoIt();
}
示例4: hash
size_t
UsdMayaGLBatchRenderer::_ShapeHash(
const UsdPrim& usdPrim,
const SdfPathVector& excludePrimPaths,
const MDagPath& objPath )
{
size_t hash( MObjectHandle(objPath.transform()).hashCode() );
boost::hash_combine( hash, usdPrim );
boost::hash_combine( hash, excludePrimPaths );
return hash;
}
示例5:
MStatus CreateCurves::Curve::create(CreateCurves & instance) {
MStatus status;
MFnNurbsCurve curve;
MObject curveObject = curve.create(points, knots, instance.m_degree, isLoop ? MFnNurbsCurve::kClosed : MFnNurbsCurve::kOpen, false, false, MObject::kNullObj, &status);
if (!status) {
status.perror("MFnNurbsCurve::create");
return status;
}
MDagPath path;
if (!(status = curve.getPath(path))) {
status.perror("MFnNurbsCurve::getPath");
return status;
}
instance.m_curves.append(path.transform());
return MStatus::kSuccess;
}
示例6: userNodeAddedCB
// Node added to model callback.
static void userNodeAddedCB(MObject& node,void *clientData)
{
MStatus status;
if (! node.isNull()) {
bool doDisplay = true;
MDagPath path;
status = MDagPath::getAPathTo(node,path);
if ( status.error() ) {
doDisplay = false;
MGlobal::displayInfo("Error: failed to get dag path to node.");
}
if ( doDisplay ) {
MString s = path.fullPathName();
MString info("DAG Model - Node added: ");
info+= s;
path.transform(&status);
if (MS::kInvalidParameter == status) {
info += "(WORLD)";
}
MGlobal::displayInfo(info);
}
}
// remove the callback
MCallbackId id = MMessage::currentCallbackId();
MMessage::removeCallback(id);
// listen for removal message
/* MCallbackId id = */ MModelMessage::addNodeRemovedFromModelCallback( node, userNodeRemovedCB, 0, &status );
if ( status.error() ) {
MGlobal::displayError("Failed to install node removed from model callback.\n");
return;
}
}
示例7: doIt
// Set keyframes to move selected object in a spiral
MStatus spiralAnimCurve::doIt( const MArgList& )
{
// Get the Active Selection List
//
MStatus status;
MSelectionList sList;
MGlobal::getActiveSelectionList( sList );
// Create an iterator for the selection list
//
MItSelectionList iter( sList, MFn::kDagNode, &status );
if ( MS::kSuccess != status ) {
cerr << "Failure in plugin setup";
return MS::kFailure;
}
MDagPath mObject;
MObject mComponent;
for ( ; !iter.isDone(); iter.next() ) {
status = iter.getDagPath( mObject, mComponent );
// Check if there was an error
//
if ( MS::kSuccess != status ) continue;
// We don't handle components
//
if ( !mComponent.isNull() ) continue;
// Create the function set
//
MFnDagNode fnSet( mObject, &status );
if ( MS::kSuccess != status ) {
cerr << "Failure to create function set\n";
continue;
}
// Get the plug for the X-translation channel
//
MString attrName( "translateX" );
const MObject attrX = fnSet.attribute( attrName, &status );
if ( MS::kSuccess != status ) {
cerr << "Failure to find attribute\n";
}
MFnAnimCurve acFnSetX;
acFnSetX.create( mObject.transform(), attrX, NULL, &status );
if ( MS::kSuccess != status ) {
cerr << "Failure creating MFnAnimCurve function set (translateX)\n";
continue;
}
// Repeat for Y-translation
//
attrName.set( "translateZ" );
const MObject attrZ = fnSet.attribute( attrName, &status );
if ( MS::kSuccess != status ) {
cerr << "Failure to find attribute\n";
}
MFnAnimCurve acFnSetZ;
acFnSetZ.create( mObject.transform(), attrZ, NULL, &status );
if ( MS::kSuccess != status ) {
cerr << "Failure creating MFnAnimCurve function set (translateZ)\n";
continue;
}
// Build spiral animation
//
for( int i = 1; i <= NUM_FRAMES; i++ ) {
// Build the keyframe at frame i
//
double x = sin( (double)i * RADIAL_VELOCITY ) *
( (double)i * OUTWARD_VELOCITY );
double z = cos( (double)i * RADIAL_VELOCITY ) *
( (double)i * OUTWARD_VELOCITY );
// cerr << "Setting keys - frame: " << i << " x: " << x << " z: " << z << endl;
MTime tm( (double)i, MTime::kFilm );
if ( ( MS::kSuccess != acFnSetX.addKeyframe( tm, x ) ) ||
( MS::kSuccess != acFnSetZ.addKeyframe( tm, z ) ) ) {
cerr << "Error setting the keyframe\n";
}
}
}
return status;
}
示例8: create
// ------------------------------------------------------------
bool SceneGraph::create ( bool selectionOnly )
{
// The flag, if just the selected elements should be exported.
mExportSelectedOnly = selectionOnly;
// Add all the animation expressions
MItDependencyNodes depIter ( MFn::kExpression );
for ( ; !depIter.isDone(); depIter.next() )
{
MObject item = depIter.item();
if ( item.hasFn ( MFn::kExpression ) )
{
mAnimationExpressions.append ( item );
}
}
// Push all nodes from root down to all meshes which have to be exported in a list.
findForcedNodes ();
// Fills the list with all root targets to export.
bool success = retrieveExportNodes ();
// Create a selection list containing only the root nodes (implies export all!)
uint length = mTargets.length();
for ( uint i=0; i<mTargets.length(); ++i )
{
MDagPath dagPath;
MStatus status = mTargets.getDagPath ( i, dagPath );
if ( status != MStatus::kSuccess ) return false;
// This node has no transform - i.e., it's the world node
MObject transformNode = dagPath.transform ( &status );
if ( !status && status.statusCode () == MStatus::kInvalidParameter ) continue;
// Check if it is a valid transform node
MFnDagNode transform ( transformNode, &status );
if ( !status )
{
status.perror ( "MFnDagNode constructor" );
return false;
}
// Create a new scene element
SceneElement* sceneElement = createSceneElement ( dagPath );
// Push the root nodes into the tree.
// If the root node is instanced, push it at the beginning (no instance on root!).
if ( dagPath.isInstanced () )
mExportNodesTree.insert ( mExportNodesTree.begin (), sceneElement );
else
mExportNodesTree.push_back ( sceneElement );
// Create the child elements
//if ( sceneElement->getIsExportNode() )
{
createChildSceneElements ( sceneElement );
}
}
return true;
}
示例9: readLight
MStatus getLight::readLight(yafaray::yafrayInterface_t &yI)
{
MStatus stat;
bool hasYafLight=0;
MString listPoint("ls -type yafPointLight");
MStringArray pointResult;
MGlobal::executeCommand(listPoint, pointResult);
if(pointResult.length()>0)
{
hasYafLight=1;
for(unsigned int i=0;i<pointResult.length();i++)
{
//test output
cout<<pointResult[i].asChar()<<endl;
MSelectionList list;
MGlobal::getSelectionListByName(pointResult[i],list);
for(unsigned int index=0;index<list.length();index++)
{
MDagPath pointPath;
list.getDagPath(index,pointPath);
MObject pointTransNode=pointPath.transform();
MFnTransform pointTrans(pointTransNode);
MGlobal::displayInfo(pointTrans.name());
MVector transP=pointTrans.getTranslation(MSpace::kTransform);
//test output
//this is the position of the point light
cout<<"============test light==========="<<endl;
cout<<transP.x<<transP.y<<transP.z<<endl;
MObject pointDepNode;
list.getDependNode(index,pointDepNode);
MFnDependencyNode pointDepFn(pointDepNode);
yI.paramsClearAll();
yI.paramsSetString("type","pointlight");
yI.paramsSetPoint("from",transP.x,transP.y,transP.z);
MObject pointColor;
pointDepFn.findPlug("LightColor").getValue(pointColor);
MFnNumericData pointData(pointColor);
float pcR,pcG,pcB;
pointData.getData(pcR,pcG,pcB);
yI.paramsSetColor("color",pcR,pcG,pcB);
float pointPower;
pointDepFn.findPlug("Power").getValue(pointPower);
yI.paramsSetFloat("power",pointPower);
cout<<"================point light=============="<<endl;
cout<<pointDepFn.name().asChar()<<endl;
yI.createLight(pointDepFn.name().asChar());
}
}
}
//sphere light
MString listSphere("ls -type yafSphereLight");
MStringArray sphereResult;
MGlobal::executeCommand(listSphere, sphereResult);
if(sphereResult.length()>0)
{
hasYafLight=1;
for(unsigned int i=0;i<sphereResult.length();i++)
{
//test output
cout<<sphereResult[i].asChar()<<endl;
MSelectionList list;
MGlobal::getSelectionListByName(sphereResult[i],list);
for(unsigned int index=0;index<list.length();index++)
{
MDagPath spherePath;
list.getDagPath(index,spherePath);
MObject sphereTransNode=spherePath.transform();
MFnTransform sphereTrans(sphereTransNode);
MVector transP=sphereTrans.getTranslation(MSpace::kTransform);
MFnDagNode sphereFn(spherePath);
MObject sphereColor;
sphereFn.findPlug("LightColor").getValue(sphereColor);
MFnNumericData sphereData(sphereColor);
float sphereR,sphereG,sphereB;
sphereData.getData(sphereR,sphereG,sphereB);
float power;
sphereFn.findPlug("Power").getValue(power);
int samples;
sphereFn.findPlug("Samples").getValue(samples);
//.........这里部分代码省略.........