Trying to instance feather geometry onto animated lines.

   2469   5   1
User Avatar
Member
6 posts
Joined: May 2017
Offline
I've pieced a couple of projects online together, and one of them was for grass. They just have a few attribute vops animating some lines, and I'm having trouble getting the feather geometry to bend with it. I'm looking for a grassy waving effect, or a more realistic effect of a close up of feathers fluttering on a wing. Right now the feathers are instanced on the tips of the lines and I've tried copy attribute and copy stamping everywhere but can't get it to work. Any input is greatly appreciated.
Edited by jakehamill - Feb. 17, 2019 13:57:48

Attachments:
BirdFeathers_02.hipnc (757.5 KB)

User Avatar
Member
359 posts
Joined: April 2017
Offline
If you're going to use custom HDAs in your hip files, you should probably embed the definitions before sending them to anyone else.
Unlock the HDA, then in the asset manager select configuration > save definitions of unlocked assets to hip file.
MOPs (Motion Operators for Houdini): http://www.motionoperators.com [www.motionoperators.com]
User Avatar
Member
6 posts
Joined: May 2017
Offline
toadstorm
If you're going to use custom HDAs in your hip files, you should probably embed the definitions before sending them to anyone else.
Unlock the HDA, then in the asset manager select configuration > save definitions of unlocked assets to hip file.

Oh, I got yah! Ok, this one should work.

Attachments:
BirdFeathers_03.hipnc (2.3 MB)

User Avatar
Member
359 posts
Joined: April 2017
Offline
You can't deform geometry with the Copy SOP like this… not only are your feathers packed, which means you can't deform them without unpacking, but the Copy SOP only cares about point attributes on the template points, not the state of any other points connected to them.

What you probably want to do is copy a straightened version of your feathers onto the root points of straight lines, and use that as the “rest point lattice” state for a Point Deform SOP. Then use your Point VOP to deform the lines, and use that as the “Mesh to Deform.” You'll unfortunately need to unpack your feathers for this to work, which is going to result in a pretty serious performance hit, but you can't really deform packed instances unless you want to get weird with your displacement shaders and deform things there.

Your other option would be again to output a mostly straightened feather, then to pre-animate the full range of motion for a bend, and save that as a .bgeo sequence. Then load your feather back in as a Packed Disk Sequence, copy those feathers to points, and instead of deforming lines, you could use point attributes to drive the `frame` intrinsic attribute of the feathers, which would bend them according to their local orientations. Definitely not the most flexible solution, but it might work for feathers that are more in the background.
MOPs (Motion Operators for Houdini): http://www.motionoperators.com [www.motionoperators.com]
User Avatar
Member
6 posts
Joined: May 2017
Offline
toadstorm
You can't deform geometry with the Copy SOP like this… not only are your feathers packed, which means you can't deform them without unpacking, but the Copy SOP only cares about point attributes on the template points, not the state of any other points connected to them.

What you probably want to do is copy a straightened version of your feathers onto the root points of straight lines, and use that as the “rest point lattice” state for a Point Deform SOP. Then use your Point VOP to deform the lines, and use that as the “Mesh to Deform.” You'll unfortunately need to unpack your feathers for this to work, which is going to result in a pretty serious performance hit, but you can't really deform packed instances unless you want to get weird with your displacement shaders and deform things there.

Your other option would be again to output a mostly straightened feather, then to pre-animate the full range of motion for a bend, and save that as a .bgeo sequence. Then load your feather back in as a Packed Disk Sequence, copy those feathers to points, and instead of deforming lines, you could use point attributes to drive the `frame` intrinsic attribute of the feathers, which would bend them according to their local orientations. Definitely not the most flexible solution, but it might work for feathers that are more in the background.

Hi Toadstorm, I'm so sorry to bother again but you've been so much help! I've been working on your first suggestion of unpacking and using a point deform. Down to the point vop I'm getting some really nice fluttering on the barbs but it's kind of stretching it in the Y and not so much bending. I'm going to have a lot of feathers and render from a bird-eye view so it might not matter a ton. Whenever I enable the point to deform though it clumps the feathers together, and I can't seem to figure out why. Also, I know the resting point of the feather is still curved but I was hoping to focus on that once I get the bulk of the deformation working. I was hoping that you might be able to take a peak for some tips if that's possible. As a thank you I'd be happy to venmo you a few bucks for a meal or something as I really appreciate your help.

Attachments:
BirdFeathers_03_WeirdDeform.hipnc (661.1 KB)

User Avatar
Member
359 posts
Joined: April 2017
Offline
Check this out… I'm just straightening your feathers, then copying them to the same template points as I'm copying the straight lines. Then the lines are deformed. The straight lines are the “rest point lattice” for the Point Deform, the deformed lines are the deformed point lattice, and the unpacked feathers are the geometry to deform. You want the feathers and the rest point lattice to overlap at their rest position, so that the point capture doesn't “miss” the feather geometry (it's based on a radius). If your initial lines are bent to follow the same curve as your feather generator, that would work, too. Or have your generator HDA output a polyline that follows the exact bend of the feather; that's even better. Then you can just copy that line and use it as the lattice.
MOPs (Motion Operators for Houdini): http://www.motionoperators.com [www.motionoperators.com]
  • Quick Links