How to make this dynamic growth effect

   897   3   2
User Avatar
Member
28 posts
Joined: Jan. 2014
Offline
The video starts at 23 seconds, growing crystals https://vimeo.com/238769372#t=23s [vimeo.com]
User Avatar
Member
1738 posts
Joined: May 2006
Offline
Attached hip isn't perfect, but should give you some ideas.

It's a few concepts linked together:

  • A way to animate random emission locations from a surface
  • Sticking particles to a surface with the vex minpos() function
  • Making particles avoid each other via grains, collide with the ground, and be slowed down with drag
  • Copying shapes to those particles, and making sure they're oriented correctly.
Edited by mestela - Nov. 23, 2023 16:07:35

Attachments:
crystal_growth.hip (714.2 KB)
crystals.mp4 (700.7 KB)

http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
28 posts
Joined: Jan. 2014
Offline
mestela
Attached hip isn't perfect, but should give you some ideas.

It's a few concepts linked together:

  • A way to animate random emission locations from a surface
  • Sticking particles to a surface with the vex minpos() function
  • Making particles avoid each other via grains, collide with the ground, and be slowed down with drag
  • Copying shapes to those particles, and making sure they're oriented correctly.

This is super helpful. Thank you for pushing me in the right direction.

Just to follow up on your setup, to remove the intersection between geometry, can you solve it in the grain node or do you need to calculate the distance between the crystals? Some crystals could have a random scale so it can't be uniform distance, but rather calculated for each object. Would you use forLoops to look into each individual object and calculate the distance for each of them?
Edited by dompla - Nov. 24, 2023 05:12:38
User Avatar
Member
1738 posts
Joined: May 2006
Offline
this setup is doing randomized scale if you look closely, but its uniform randomized scale, ie it can do big crystals, small crystals, but it can't do crystals which are wide on x and skinny on z for example.

its also deintersecting, but only for the particles at the root of each crystal. if it were all on a flat surface with short crystals that'd be ok, but because its uneven ground and the crystals are tall, even if the base of the crystals aren't colliding, the tops will likely collide.

was chatting with others, if you want a more accurate solution, you'd probably want to move to emitted rbd's, but that's a different level of complexity. I have some examples you could play with on my site, but its not as straighforward as this pops setup.

https://www.tokeru.com/cgwiki/HoudiniDops.html#emit_packed_prims_into_rbd_sim [www.tokeru.com]
https://www.tokeru.com/cgwiki/HoudiniDops.html#rbd_deintersect_the_easy_way [www.tokeru.com]
https://www.tokeru.com/cgwiki/ConstraintNetworks3.html#constrained_deintersect [www.tokeru.com]

someone also pointed out an entagma tutorial along similar lines, but you can see it also assumes for circular cross sections:

https://www.youtube.com/watch?v=OkiwsuFo_gA [www.youtube.com]
Edited by mestela - Nov. 24, 2023 08:37:05
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
  • Quick Links