attribute interpolate with object merge

   3078   9   0
User Avatar
Member
37 posts
Joined: Jan. 2017
Offline
HI, so I'm trying to get spawning pop particles to follow the position of a deforming mesh that has been bought in through an object merge node. I am using attribinterpolate but it seems to ignore it. It works fine when I use a standard geo node or a .abc file. Is there something im doing wrong with the object merge?
User Avatar
Member
7762 posts
Joined: Sept. 2011
Online
It shouldn't be a problem unless the geometry is packed.
User Avatar
Member
37 posts
Joined: Jan. 2017
Offline
I have tried an unpack also.

the error is spitting out this
Error
Couldn't find float attribute for primitive (u,v,w).
Edited by lemmingsammy - Feb. 3, 2018 12:03:42

Attachments:
objectmerge.PNG (20.2 KB)
objectmerge.PNG (20.2 KB)

User Avatar
Member
37 posts
Joined: Jan. 2017
Offline
User Avatar
Member
7762 posts
Joined: Sept. 2011
Online
FYI, screenshots are useless. Post a scene file if you are expecting any further information.
User Avatar
Member
37 posts
Joined: Jan. 2017
Offline
Oh sorry. My apologies. I have attached the project file if anyone has time to take a look. I really appreciate the help

Thanks

Sam

Attachments:
ATTRIB_OBJECTMERGE_TEST.hip (2.1 MB)

User Avatar
Member
7762 posts
Joined: Sept. 2011
Online
The setup in your scene has numerous issues.

  1. The dop io node for importing the flip simulation is not configured to import anything, so no simulation data is copied back to your object ‘mesh’
  2. The attribute interpolate inside the node with the pop simulation has no attribute name set for the uvw value, and this is where the error arises from. The parametric uv is required for interpolating surface attributes.
  3. The setup as designed cannot work because a surface mesh created from a vdb is not a deforming mesh, it is unique topology from frame to frame. There is no surface from which to correlate uvw and prim number with as each frame presents a surface that is completely different from the frame before.

To achieve the effect you are after, an attribute interpolate is insufficient. A technique that may work for you is advecting(pop advect by volumes) the points by the velocity field created by the flip simulation, and then projecting the points onto to the surface(minpos() in pop wrangle). It won't be exact, but it will more or less stick the points to the moving surface.
User Avatar
Member
37 posts
Joined: Jan. 2017
Offline
Thank you ever so much for the reply, truly grateful! I have tried to implement your suggestions and i'm not being very successful.

So in my popnet I assigned a the popadvectvolume node, the advection type is set to update force as i only want to change the particle acceleration value, the velocity source is set to SOP (I think this is right)
Then directly below it i have added a popwrangle and added the vex code you suggested. minpos(). Im relatively new to Houdini and my vex knowledge is very very limited but realised that this will identify the closest point on my surface?

Anyways i have done all of this and nothing happens. I assume its my newbie knowledge that is letting me down here. is there a glaring embarrassing mess up that im doing here?
Edited by lemmingsammy - Feb. 8, 2018 12:23:11
User Avatar
Member
7762 posts
Joined: Sept. 2011
Online
The code example is just for a rough idea, you'll need to fill in the details.

http://www.sidefx.com/docs/houdini/nodes/vop/minpos.html [www.sidefx.com]
http://www.sidefx.com/docs/houdini/vex/functions/minpos.html [www.sidefx.com]

For the advection type, you'll want update position, as updating acceleration or velocity won't keep the particles in sync well enough. You don't want v to be non-zero either as that will make the particles fly off like sweat droplets.
User Avatar
Member
37 posts
Joined: Jan. 2017
Offline
jsmack, thank you so much for your guidance. I have managed to find a solution. Time to get deeper into learning vex
  • Quick Links