本文整理汇总了C++中MDagPath::getAPathTo方法的典型用法代码示例。如果您正苦于以下问题:C++ MDagPath::getAPathTo方法的具体用法?C++ MDagPath::getAPathTo怎么用?C++ MDagPath::getAPathTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MDagPath
的用法示例。
在下文中一共展示了MDagPath::getAPathTo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeData
MStatus sgBDataCmd_key::writeData( bool exportByMatrix )
{
MStatus status;
double dTime = MAnimControl::currentTime().value();
if( exportByMatrix )
{
for( unsigned int i=0; i<m_pathArrExport.length(); i++ )
{
m_objectKeyDatasExport[i].lengthTime++;
m_objectKeyDatasExport[i].dArrTime.append( dTime );
MFnDependencyNode fnNode( m_objectKeyDatasExport[i].oTargetNode );
if( m_objectKeyDatasExport[i].numAttr == 0 )
{
continue;
}
if( m_objectKeyDatasExport[i].numAttr == 1 )
{
MPlug plug = fnNode.findPlug( m_objectKeyDatasExport[i].namesAttribute[0] );
m_objectKeyDatasExport[i].dArrValuesArray.append( plug.asDouble() );
}
else
{
if( m_objectKeyDatasExport[i].numAttr == 10 )
{
MPlug plug = fnNode.findPlug( m_objectKeyDatasExport[i].namesAttribute[0] );
m_objectKeyDatasExport[i].dArrValuesArray.append( plug.asDouble() );
}
MDagPath dagPath;
dagPath.getAPathTo( m_objectKeyDatasExport[i].oTargetNode, dagPath );
MTransformationMatrix trMtx = dagPath.inclusiveMatrix() * dagPath.exclusiveMatrixInverse();
MVector trans = trMtx.translation( MSpace::kTransform );
double rotValues[3] ={0,0,0};
MTransformationMatrix::RotationOrder order = MTransformationMatrix::kZXY;
trMtx.getRotation( rotValues, order, MSpace::kTransform );
double scales[3];
trMtx.getScale( scales, MSpace::kTransform );
m_objectKeyDatasExport[i].dArrValuesArray.append( trans.x );
m_objectKeyDatasExport[i].dArrValuesArray.append( trans.y );
m_objectKeyDatasExport[i].dArrValuesArray.append( trans.z );
m_objectKeyDatasExport[i].dArrValuesArray.append( rotValues[0] );
m_objectKeyDatasExport[i].dArrValuesArray.append( rotValues[1] );
m_objectKeyDatasExport[i].dArrValuesArray.append( rotValues[2] );
m_objectKeyDatasExport[i].dArrValuesArray.append( scales[0] );
m_objectKeyDatasExport[i].dArrValuesArray.append( scales[1] );
m_objectKeyDatasExport[i].dArrValuesArray.append( scales[2] );
}
}
}
else
{
for( unsigned int i=0; i<m_pathArrExport.length(); i++ )
{
m_objectKeyDatasExport[i].lengthTime++;
m_objectKeyDatasExport[i].dArrTime.append( dTime );
MFnDependencyNode fnNode( m_objectKeyDatasExport[i].oTargetNode );
for( unsigned int j=0; j< m_objectKeyDatasExport[i].numAttr; j++ )
{
MPlug plug = fnNode.findPlug( m_objectKeyDatasExport[i].namesAttribute[j] );
m_objectKeyDatasExport[i].dArrValuesArray.append( plug.asDouble() );
}
}
}
return MS::kSuccess;
}
示例2: OutputTextures
void OutputTextures(MSelectionList selected){
MString temp;
MString affich;
int MatExists=0;
for(int i=0;i<selected.length();i++){
MDagPath path;
MObject obj;
selected.getDagPath(i,path);
obj=path.child(0);
MFnMesh fn(path);
obj=fn.parent(0);
path.getAPathTo(fn.parent(0));
MFnMesh fna(path);
unsigned int instancenumbers;
MObjectArray shaders;
MIntArray indices;
fna.getConnectedShaders(instancenumbers,shaders,indices);
switch(shaders.length()) {
// if no shader applied to the mesh instance
case 0:
{
//***************Affich("pas de matériaux");
}
break;
// if all faces use the same material
// if more than one material is used, write out the face indices the materials
// are applied to.
default:
{
//************************Affich("trouvé plusieurs matériaux");
//write_int(shaders.length());
// now write each material and the face indices that use them
for(int j=0;j < shaders.length();++j)
{
for(int matest=0;matest<Matid.length();matest++){
//**************************Affich(Matid[matest].asChar());
//*****************************Affich(GetShaderName( shaders[j] ).asChar());
if(Matid[matest]== GetShaderName( shaders[j] )){
MatExists = 1;
}//fin if matid
}// fin for matest
if(MatExists != 1){
//*****************************Affich("matériau absent de la liste, enregistrement");
Matid.append(GetShaderName( shaders[j] ).asChar());
nb_Tex_by_Brush.append(0);
writeTexture(shaders[j],"color");
//Affich(temp);
}else {
//************************************* Affich("matériau existe dans la liste");
}// fin if matexists
MatExists = 0;
}//fin for j shaders
}// fin case default
break;
}//fin switches
}//fin for selected
Matid.clear();
}// fin output textures
示例3: redoIt
MStatus MayaRenderView::redoIt()
{
MStatus retStatus;
//get the camera
MDagPath camera;
if(_camera != std::string("")){
MObject node = getNode(MString(_camera.c_str()),&retStatus);
camera.getAPathTo(node);
}
else
{
M3dView view = M3dView::active3dView(&retStatus);
CHECKERR(retStatus,"M3dView::active3dView");
retStatus = view.getCamera(camera);
CHECKERR(retStatus,"M3dView::active3dView");
}
MString integrator;
MFnDependencyNode globals(raytraceGlobalsNode::get());
getCustomAttribute(integrator, "integrator", globals);
cout << "Integrator: " << integrator.asChar() << endl;
MString intersector;
getCustomAttribute(intersector, "intersector", globals);
cout << "Intersector: " << intersector.asChar() << endl;
MString sampler;
getCustomAttribute(sampler, "sampler", globals);
cout << "Sampler: " << sampler.asChar() << endl;
//set the renderview
retStatus = MRenderView::setCurrentCamera (camera );
CHECKERR(retStatus,"MRenderView::setCurrentCamera (camera )");
cout << "Camera: " << camera.fullPathName().asChar() << endl;
int xSize = _resolution.x(),ySize = _resolution.y();
// raytrace things
MayaSceneReader* mayaReader(new MayaSceneReader());
boost::shared_ptr<Raytrace::ISceneReader> sceneReader(mayaReader);
mayaReader->SetResolution(_resolution);
mayaReader->SetCamera(camera);
Raytrace::Output output = Raytrace::CreateCustomOutput(sceneReader,"mayaOutput");
RV_PIXEL* pixels = new RV_PIXEL[xSize*ySize];
MRenderView::startRender ( xSize, ySize, true, true );
output->SetIntegrator(integrator.asChar());
output->SetIntersector(intersector.asChar());
output->SetSampler(sampler.asChar());
output->SetOutputSurface(pixels, sizeof(RV_PIXEL)*xSize*ySize, xSize, ySize, Raytrace::IOutput::FORMAT_RGBA_F32);
output->Refresh();
std::cout << "Begin Rendering" << std::endl;
Raytrace::String status;
while(true)
{
if(output->GetLastFrameInfo(status) == Raytrace::Result::RenderingComplete)
break;
std::cout << "Update Output : " << status << std::endl;
output->UpdateOutput();
MRenderView::updatePixels(0,xSize-1,0,ySize-1, pixels,true);
MRenderView::refresh(0,xSize-1,0,ySize-1);
Sleep(1000);
}
std::cout << "Complete Rendering: " << status << std::endl;
output->UpdateOutput();
MRenderView::updatePixels(0,xSize-1,0,ySize-1, pixels,true);
MRenderView::endRender();
return MS::kSuccess;
}