Growing with Fabric


I thought I'd share my little experiment in MODO.

I have been wanting to get better control over OBJ sequences(merged in to an alembic) of trees generated with The Grove and decided to try and get something up and running in Fabric.

Having a small problem though...

Turbulize Deformer timefrequency activated:

Turbulize Deformer timefrequency not activated:

Is it not possible to animate the turbulize defromer without the leafs switching position? (I get the same results in canvas standalone)

And one question is it possible to assigning materials in fabric and bringing that over to MODO or do I have to freeze or export an alembic to get the ability assign that?

You can get the MODO scene attached and the Alembic(126M) you can download Here


  • malbrechtmalbrecht Fabric for Houdini Posts: 752 ✭✭✭

    Moin, Aslak,

    that's looking quite nice! Did you export the Alembic from Blender or did you port Grove over to Fabric?

    Right now you can not get materials from Fabric to modo without doing Alembic trickery - or writing your own wavefront obj or any other kind of external "caching". That works, but requires some scripting on the modo side.
    What you can do is assign an item mask to the CanvasPI and use (limited) shading on that mask. Not all shader features work that way, though.

    In my "vine growing system" I exported an Alembic file from Fabric and assigned item tags to leaves and branches, then in modo the import script automatically assigned material tags to those two imported item layers. That way I had my materials "through the backdoor".

    As for the turbulence: If nobody else responds, I'll have a look at the file tomorrow!


    Marc Albrecht - - does things.

  • Hi Marc,

    I have no idea where to even start to port Grove over to Fabric (would be fun to try though) what I did was modify the plugin to export an obj for every year generated and then I load them into MODO to save out an Alembic.

    I guess for now i'll just export out an Alembic file when I need more control over materials.

    The turbulence "bug" is probably an user error as i have no idea what i'm doing.

    (fabric is great fun)

  • malbrechtmalbrecht Fabric for Houdini Posts: 752 ✭✭✭


    (fabric is great fun)

    That, my dear Jeeves, it is indeed :smiley:

    My guess is that you are overcalculating the turbulence time input. You seem to expect 2.x frames per second, yet the scene is set to 24fps. Then you are multiplying the time input by some small number.
    Since I did not have the additional objects (leaves), I put in cube placeholder to actually see an output - and I think that by piping in the time fraction from a 24fps based channel modifier ("time node" in modo), bypassing your "time from frames" node, you might get closer to the kind of turbulence you are after. (Note: "thinking" does not necessarily mean "knowing" - but I still guess it is a far too high time component that you are using for the turbulence)

    BTW ... your setup is a good example for urging the Fabric guys to allow for relative paths instead of absolute paths :-)


    Marc Albrecht - - does things.

  • ~Good morning,
    (totally forgot about the leaf obj)

    I was trying to control the speed of the growth by changing the FPS. But I guess I should have better luck doing that with some math node.

    Thanks for looking in to the problem :)

    I'll try to get it working as later to day and post back here with the results.


  • Ok i think i found the root of the problem, its the AlignToSurface node that does something to the rotation of some seemingly random leafs at every frame.

    AlignToSurface amount value at 0:

    AlignToSurface amount value set to 1:

    any idea whats happening and why?
    What I want is to have leafs point in the direction of the normals of the Polygons.

  • malbrechtmalbrecht Fabric for Houdini Posts: 752 ✭✭✭

    Hmm ... the only idea I can come up with is that the normals actually are messed up - I don't have the graph open (doing some of my own stuff atm), how do you calculate the normals?

    Marc Albrecht - - does things.

  • Aslak Kjølås-SæverudAslak Kjølås-Sæverud Posts: 19
    edited March 2016

    I tried to do a quick RecomputeNormals but it did not seem to make any difference. hmmm
    I think you are right though when I import OBJs form Blender the normals are always messed up in modo, I'll try and export a new Tree mesh with out the normals form Blender.

  • Ok so I deleted the Normals that I get when exporting from Blender and it seems to fix the problem... until I change the Cubes out for the Leaf OBJ.

    With cubes

    With an Leaf OBJ mesh

  • malbrechtmalbrecht Fabric for Houdini Posts: 752 ✭✭✭

    do the leaves have their own (messed up) normals?

    You could try recreating the leaves' normals in Fabric ... just to see if that helps.

    Marc Albrecht - - does things.

  • Aslak Kjølås-SæverudAslak Kjølås-Sæverud Posts: 19
    edited March 2016

    I have tired to use other meshes to be scattered and find the same problem of them being rotated circa 90 degrees at "random".
    I think it might be that the polygons I use as positions/normals are so small that when the turbulence deforms the polygons the normals flip or get distorted. I'll look in to making the polygons larger tomorrow.

  • HelgeHelge Moderator, Fabric Employee Posts: 314 Fabric Employee

    Hey Aslak,

    let me know of your findings. If you get stuck maybe we can help.

    Looking good so far!

    Research Engineer @ Fabric Software

  • Aslak Kjølås-SæverudAslak Kjølås-Sæverud Posts: 19
    edited April 2016

    Hi Helge,

    This took way to long to get back too this.

    Ok, so it seems that if there are two polygons that share the exact same polygon center position there is some confusion in the AlignToSurface node as to what polygon to use.

    Screen of the Polygons double but separated:

    Here is an short GIF of a tree with the out most polygons (Apical Twigs):

    And here with the (Lateral (dual poly) Twigs):

    Attached is the canvas file and the tree sequence used

  • borjaborja Administrator, Fabric Employee Posts: 480 admin

    Hi @Aslak Kjølås-Sæverud

    Nice setup. You are right with your hypothesis.
    AlignToSurface is using spatialquery methods to get the closest triangle to a certain point (used to define the output direction in conjunction with the up vector). With your setup (two perpendicular planes), getclosest gets confused between the two planes, and can popup between frames. The solution, therefore, is simple: push a bit the perpendicular quads from each other. The fastest way to do this in this case is using a deform push node to the base geometry. See the canvas attached

    Borja Morales
    Technical Product Manager
    Fabric Software Inc.

  • Thanks for the help! This works nicely now!

  • malbrechtmalbrecht Fabric for Houdini Posts: 752 ✭✭✭


    Marc Albrecht - - does things.

  • dobermunkdobermunk Posts: 7

    Fantastic watching this unfold. Very nice trees, Aslak!

Sign In or Register to comment.