Как убрать очки на основе их атрибутов в Гудини?
Я создал кривую с несколькими точками. Теперь я хочу удалить некоторые точки на основе одного из их атрибутов (will_be_removed).
[img] https://imgur.com/T9DLpk6 [/ img]
Как показано на рисунке выше, те точки с i@will_be_removed, установленным в 1, будут удалены.
Я попытался использовать код VEX ниже, но он сказал недопустимый индекс для типа: int.will_be_removed
if(@ptnum.will_be_removed == 1)
{
removepoint(0, @ptnum);
}
Как я могу правильно ссылаться на эти точки?
3 ответа
Я думаю, я найду способ сделать это. Вместо этого используйте @will_be_removed вместо @ptnum.will_be_removed:
if(@will_be_removed == 1)
{
removepoint(0, @ptnum);
}
Ошибка в этом коде
if(@ptnum.will_be_removed == 1)
{
removepoint(0, @ptnum);
}
это потому что @ptnum
является типом VEX int. @ptnum
также может быть написано i@ptnum
чтобы явно указать его тип, но так как это хорошо известный атрибут (см. документацию в ссылке), вы также можете написать его как @ptnum
,
int
типы являются числами и не содержат наборов других данных.
Что касается атрибутов, вы также должны иметь в виду, являются ли они атрибутами вершин, точек, примитивов или деталей.
Приоритет атрибута
Когда два компонента в одной и той же геометрии имеют атрибут с одинаковым именем, используется атрибут на "нижнем уровне" геометрии, поэтому:
Атрибуты вершины, которые переопределяют:
Атрибуты точек, которые переопределяют:
Примитивные атрибуты, которые переопределяют:
Атрибуты детали (всей геометрии)
или один лайнер будет
if (@will_be_deleted == 1) removepoint(0, @ptnum);