Hi,
I would like to delete points based on an attribute I am transferring. I thought I had it correct with the expression on the delete node
if(points(“../grabAtt”, $PT, “burned”) > 0)
How would I delete points that have a value on an attribute greater then 0?
Deleting point based on attribute?
71540 19 6- tex1820
- Member
- 22 posts
- Joined: March 2011
- Offline
- tamte
- Member
- 8833 posts
- Joined: July 2007
- Offline
- circusmonkey
- Member
- 2624 posts
- Joined: Aug. 2006
- Offline
- grayOlorin
- Member
- 1799 posts
- Joined: Oct. 2010
- Offline
and also just for the sake of information, I believe your expression should be:
if(point(“../grabAtt”, $PT, “burned”, 0) > 0, 1, 0)
the if() function syntax is as such:
if(condition, true value, false value)
although in the case of the delete SOP, you do not need the if function. This would suffice:
point(“../grabAtt”, $PT, “burned”, 0) > 0
hope this helps!
if(point(“../grabAtt”, $PT, “burned”, 0) > 0, 1, 0)
the if() function syntax is as such:
if(condition, true value, false value)
although in the case of the delete SOP, you do not need the if function. This would suffice:
point(“../grabAtt”, $PT, “burned”, 0) > 0
hope this helps!
-G
- sanostol
- Member
- 577 posts
- Joined: Nov. 2005
- Offline
I recommend to avoid expressions as much as possible, they are the slowest way.
delete operation on a 5mill point cloud with point expression( point(“../node”, $PT, “value”,0) ) takes about 11 secs, using just a simple coparison ($VALUE > 0.5) takes about 3 secs.
the fastes way is with vops , just use vops to put the points into a group and delete them with that group (less than a second)
Martin
delete operation on a 5mill point cloud with point expression( point(“../node”, $PT, “value”,0) ) takes about 11 secs, using just a simple coparison ($VALUE > 0.5) takes about 3 secs.
the fastes way is with vops , just use vops to put the points into a group and delete them with that group (less than a second)
Martin
- tex1820
- Member
- 22 posts
- Joined: March 2011
- Offline
- pedro3145
- Member
- 41 posts
- Joined: Feb. 2014
- Offline
sanostol
I recommend to avoid expressions as much as possible, they are the slowest way.
delete operation on a 5mill point cloud with point expression( point(“../node”, $PT, “value”,0) ) takes about 11 secs, using just a simple coparison ($VALUE > 0.5) takes about 3 secs.
the fastes way is with vops , just use vops to put the points into a group and delete them with that group (less than a second)
Martin
Very useful, you just save 11+ seconds!!
- wlvl
- Member
- 23 posts
- Joined: July 2015
- Offline
sanostol
I recommend to avoid expressions as much as possible, they are the slowest way.
delete operation on a 5mill point cloud with point expression( point(“../node”, $PT, “value”,0) ) takes about 11 secs, using just a simple coparison ($VALUE > 0.5) takes about 3 secs.
the fastes way is with vops , just use vops to put the points into a group and delete them with that group (less than a second)
Martin
Hi Sanostol!
would you mind put an example hip of the delete using vop method?
thanks in advance!
- milesvignol
- Member
- 4 posts
- Joined: Nov. 2013
- Offline
- wlvl
- Member
- 23 posts
- Joined: July 2015
- Offline
- animatrix_
- Member
- 4730 posts
- Joined: Feb. 2012
- Offline
Set the Group parameter of the Wrangle node to your group.
Senior FX TD @ Industrial Light & Magic
Get to the NEXT level in Houdini & VEX with Pragmatic VEX! [www.pragmatic-vfx.com]
youtube.com/@pragmaticvfx | patreon.com/animatrix | pragmaticvfx.gumroad.com
Get to the NEXT level in Houdini & VEX with Pragmatic VEX! [www.pragmatic-vfx.com]
youtube.com/@pragmaticvfx | patreon.com/animatrix | pragmaticvfx.gumroad.com
- wlvl
- Member
- 23 posts
- Joined: July 2015
- Offline
- Lukas Stolarski
- Member
- 35 posts
- Joined: Jan. 2016
- Offline
Hi Sanostol!Thanks for all the answers but I would also love to see how to convert point attributes to group. To be able to delete given points or just use the groups for materials (I would love to learn both methods).
would you mind put an example hip of the delete using vop method?
thanks in advance!
Details:
What I'm trying to do (a complete noob in Houdini):
I'm learning how to create terrains in H15, I've watched all GoProcedural tutorials and masterclasses on that topic, but the problem I have:
I created a “grass” attribute like in this great tutorial:
https://vimeo.com/65747175 [vimeo.com]
So now I can control where I want to have grass/trees/other stuff. And here is the problem: I would love to be able to use a material/materials based on attributes like that. As far as I understand one can assign materials to different groups sooooooooo I have to convert an attribute to a group, right? How can I do that? The deleting-point-by-attributes route got me stuck as well.
Please help
- caesar
- Member
- 143 posts
- Joined: March 2014
- Offline
- Thomas_FX
- Member
- 12 posts
- Joined: Feb. 2018
- Offline
Hi,
I had this problem but deleting by attribute AND from a certain frame only.
Can I activate the Blast SOP from a certain frame, or do I need to use point wrangle and if yes, what kind a expression I can use ?
In my Blast SOP : @depth>0
In my PointWrangle which isn't working : if($F < 2) {
@active = ch(“/obj/fluidtank_initial/blast_outside”, 1);
} else {
@active = ch(“/obj/fluidtank_initial/blast_outside”, 0);
}
Thomas
I had this problem but deleting by attribute AND from a certain frame only.
Can I activate the Blast SOP from a certain frame, or do I need to use point wrangle and if yes, what kind a expression I can use ?
In my Blast SOP : @depth>0
In my PointWrangle which isn't working : if($F < 2) {
@active = ch(“/obj/fluidtank_initial/blast_outside”, 1);
} else {
@active = ch(“/obj/fluidtank_initial/blast_outside”, 0);
}
Thomas
- Olaf Finkbeiner
- Member
- 323 posts
- Joined: Jan. 2015
- Online
- sepu
- Member
- 461 posts
- Joined: Feb. 2012
- Offline
- Thomas_FX
- Member
- 12 posts
- Joined: Feb. 2018
- Offline
- tamte
- Member
- 8833 posts
- Joined: July 2007
- Offline
what are you trying to do in your VEX?
I highly doubt that you are really trying to sample channel at different than current time so already ch() function with 2 arguments is wrong
can you describe what if was supposed to do before frame 2?
setting @active to any value doesn't sound like deleting by an attribute
if you want to delete by an attribute and only before frame 2 it'd look like this
I highly doubt that you are really trying to sample channel at different than current time so already ch() function with 2 arguments is wrong
can you describe what if was supposed to do before frame 2?
setting @active to any value doesn't sound like deleting by an attribute
if you want to delete by an attribute and only before frame 2 it'd look like this
if (@Frame<2 && @P.x<0) removepoint(0, @ptnum);
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
- Arch
- Member
- 10 posts
- Joined: Nov. 2016
- Offline
Hi everyone !
I think that my question have connections with this thread. I want to delete some elements (cloth, rbd) depending on their active attribut.
From here, nothing difficult but I want to apply a “delay” on the delete. Like delete elements after an amount of time activation (similar to age for particles) AND with randomness in this delay.
I wonder if i can give float value to activation? Because now it's strictly 0 or 1. And maybe use that in wrangle:
if (@active > ch('threshold')){
removepoint(0,@ptnum);
}
Maybe wrong code, I'm pretty new with vex… and with that there isn't randomness too.
EDIT: stupid question about float value. I guess that an object can just be active or inactive. Maybe more on the way “age of activation”?
I think that my question have connections with this thread. I want to delete some elements (cloth, rbd) depending on their active attribut.
From here, nothing difficult but I want to apply a “delay” on the delete. Like delete elements after an amount of time activation (similar to age for particles) AND with randomness in this delay.
I wonder if i can give float value to activation? Because now it's strictly 0 or 1. And maybe use that in wrangle:
if (@active > ch('threshold')){
removepoint(0,@ptnum);
}
Maybe wrong code, I'm pretty new with vex… and with that there isn't randomness too.
EDIT: stupid question about float value. I guess that an object can just be active or inactive. Maybe more on the way “age of activation”?
Edited by Arch - May 16, 2018 09:51:41
-
- Quick Links