• 如何了解该属性是否会触发MDagMessage::addWorldMatrixModifiedCallback事件


    有一个partner问我,他在使用 MDagMessage::addWorldMatrixModifiedCallback 这个事件,但是他想了解到底哪些属性的变化会触发这个事件,他们有一些特殊的需求需要单独处理那些不触发这个事件的属性。

    这个就涉及到属性之间相互影响的关系,查了下SDK,上面说“This method registers a callback that is called when a DAG node's worldMatrix changes.”,那也就说,要知道哪些属性变化会触发该事件,只要知道哪些属性会影响到worldMatrix 属性, 一开始,我建议用户使用 affects 命令或者如下命令来获取:
    MFnDependencyNode::getAffectedAttributes (const MObject &attr, MObjectArray &affectedAttributes),
    MFnDependencyNode::getAffectedByAttributes (const MObject &attr, MObjectArray &affectedByAttributes) const

    但这个似乎还是不完美,幸好,MFnAttribute::isAffectsWorldSpace()似乎提供了更好的解决方式。只需要对该接口属性做个判断,理论上,如果该属性会影响世界空间,那么也就会影响world Martrix属性。自己做了些小实验,查看那些触发addWorldMatrixModifiedCallback() 的属性是否会影响世界空间,结果验证了自己的想法。

  • 相关阅读:
    Java内存模型之重排序
    JAVA虚拟机:对象的创建过程
    单链表——基本操作
    new File()
    JVM回收方法区内存
    强软弱虚---强引用、软引用、弱引用、虚引用
    线性表(二)——链式存储
    JVM中判断对象是否存活的方法
    GC算法 垃圾收集器
    线性表(一)——顺序结构
  • 原文地址:https://www.cnblogs.com/johnonsoftware/p/3564665.html
Copyright © 2020-2023  润新知