Maya API中的计算WorldMatrix
Computing worldMatrix in maya API
我在自定义DG节点上有一个问题。我在C 中使用Maya的API。
这是以下设置:
- 我有一个inputworldmatrix属性
- 我有outputtranslationx,y和z属性
现在,我的目标是创建相同的影响,例如domomposematrix
i将转换(obja)的WorldMatrix插入我的传统插入的InputWorldMatrix attrix,然后将其outputTranslationx,y,z连接到另一个转换的(objb)TX,Ty,ty,tz attr。
问题是,在我完成所有连接之后,变换节点objb不受影响无论如何。在我的计算功能中,当我cout<<translation.x<<端它向我表明它正在变得肮脏(应该什么),并且该值没有改变。
我的问题:问题在哪里?
这是计算函数的代码:
mstatus worldmatrix :: compute(const mplug& plug,mdatablock& data){
MStatus status;
if((plug == aOutTranslationX) || (plug == aOutTranslationY) || (plug == aOutTranslationZ))
{
//get worldMatrix dataHandle
MDataHandle hInputMatrix = data.inputValue(aWorldMatrix, &status);
CHECK_MSTATUS_AND_RETURN_IT(status);
//get the worldMatrix and the translation
MMatrix mInputMatrix = hInputMatrix.asMatrix();
MTransformationMatrix mTransMat(mInputMatrix);
MVector translation = mTransMat.getTranslation(MSpace::kWorld);
cout << translation.x << translation.y << translation. z << endl;
//get outMatrixX data
MDataHandle hOutMatrixX = data.outputValue(aOutTranslationX, &status);
CHECK_MSTATUS_AND_RETURN_IT(status);
//get outMatrixY data
MDataHandle hOutMatrixY = data.outputValue(aOutTranslationY, &status);
CHECK_MSTATUS_AND_RETURN_IT(status);
//get outMatrixZ data
MDataHandle hOutMatrixZ = data.outputValue(aOutTranslationZ, &status);
CHECK_MSTATUS_AND_RETURN_IT(status);
float outX = translation.x;//do some compute stuff
float outY = translation.y;//do some compute stuff
float outZ = translation.z;//do some compute stuff
//set outMatrixX with outX value
hOutMatrixX.setFloat(outX);
//set outMatrixY with outY value
hOutMatrixY.setFloat(outY);
//set outMatrixZ with outZ value
hOutMatrixZ.setFloat(outZ);
data.setClean(plug);
return MS::kSuccess;
}
else
{
return MS::kUnknownParameter;
}
}
我的aworldmatrix属性是由mfnmatrixattribute创建的,并将其设置为Mfnmatrixattribute :: kfloat在Initialize函数中
当然,它会影响outputTranslationx,y,z属性。我想我还需要将矢量转换为浮点(对于setFloat),但不知道如何。如果有人可以帮助我,那将很棒。预先感谢!
Cheerio土耳其工程师
这是一般的Maya Thing dirtying 不会使事情计算。而是通知玛雅人可能需要计算。如果场景中没有任何物品是最后一行,形状或需要该值的GUI项目,那么Maya将不会为您计算它。因此,问题不在计算中,它在现场或情感网络中。
因此,如果您的插头与像孩子一样形状的变换等变换等。*,您会看到Maya反应。玛雅人只是将您优化为多余。如果这不起作用,那么您的属性影响是错误的。
由于您未显示属性的代码会影响部分,因此除此之外,不可能说什么(除了声称还可以,但我想这仍然是有问题的)。因此,要给出一个更好的答案,我们需要了解您的影响网络。
因此,您提供的代码不能用于调试情况,因此大多数用户都会忽略您。
* No it is not enough to connect to a node. The node needs to be one
that updates the graphics state somehow.
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 在C++中如何在没有pow的情况下进行基础计算
- 计算平均值,不包括上次得分
- Maya API中的计算WorldMatrix