【问题标题】:How to remove points based on their attributes in Houdini?如何根据Houdini中的属性删除点?
【发布时间】:2019-12-13 19:18:54
【问题描述】:

我创建了一条带有多个点的曲线。现在我想根据其中一个属性(will_be_removed)删除一些点。

如上图所示,那些i@will_be_removed设置为1的点将被删除。

我尝试使用下面的 VEX 代码,但它表示类型的下标无效:int.will_be_removed

if(@ptnum.will_be_removed == 1)
{
    removepoint(0, @ptnum);
}

如何正确参考这些点?

【问题讨论】:

    标签: houdini vex


    【解决方案1】:

    这段代码的错误

    if(@ptnum.will_be_removed == 1)
    {
        removepoint(0, @ptnum);
    }
    

    是因为@ptnumVEX type int@ptnum 也可以写成 i@ptnum 以明确指出它的类型,但由于它是一个众所周知的属性(请参阅链接中的文档),您也可以将其简写为 @ptnum

    int 类型是数字,不包含其他数据的集合。

    关于属性,你还要记住它们是否是vertex, point, primitive, or detail attributes

    属性优先级

    当同一几何图形中的两个组件具有同名的属性时, 使用几何“较低级别”的属性,因此:

    顶点属性,覆盖:

         点属性,覆盖:

             基元属性,覆盖:

                    细节(整个几何)属性

    【讨论】:

    • 哇!谢谢你的详细回答。
    【解决方案2】:

    或者一个班轮牧马人将是

    if (@will_be_deleted == 1) removepoint(0, @ptnum);
    

    【讨论】:

      【解决方案3】:

      我想我想出了一个办法。使用@will_be_removed 代替@ptnum.will_be_removed:

      if(@will_be_removed == 1)
      {
          removepoint(0, @ptnum);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-06
        • 2016-10-11
        • 2017-07-11
        • 2013-10-22
        相关资源
        最近更新 更多