Ivy simulation in VEX

My take on a classic - growing vines over arbitrary geometry.

input geo > scatter > VEX

Some observations from the outside world (picture by me):

  • Color is function of age
  • Size is a function of age
  • That stuff is pretty reflective

Basically, it's your standard infection-style wrangle that goes though all 'healthy' points, searches nearpoints() for an infected one and and if found, marks the healthy one as infected. As seen in the picture, some vines or different species do grow horizontally, but I was more after the traditional ivy look. So I made the following assumptions to spice it up:

In order to become infected, a point must:

  • be above (y) an infected point
  • the x-z distance between infected and candidate must not be greater than x

Large horizontal distance:

Small horizontal distance:

I store the original geo's normal in v@up (for the copy sop) and calculate the new normal to be the growth direction. This is just done by calculating the direction from the infected point to the chosen next infected point. That way, the normal always flows in the direction of growth.

I let it run over this fine model - there is no size or positional variance now for the leaves, but the growth looks promising already.
https://www.cgtrader.com/free-3d-models/architectural-exterior/house/old-house--18#

More variation: