Canvas Tutorial Proposal

Aaron KentAaron Kent Posts: 66 ✭✭
edited May 2016 in Tutorials

Happy Sunday everyone. Below is my rough outline of a many step tutorial I think would be a great introduction to the power of Fabric Engine.

@malbrecht I figured it would better to propose the whole thing here so that any forum users and Fabric employees could weigh in and we can determine whether this is worth anyone's effort.
The part I'd like to stress is that if people were interested in helping refine the outline and do some videos to achieve this effect it would be best tailored to the artist community that's trying to dip it's feet into Canvas. By that I mean - there is no shallow end - it's tough software for the non TD community to learn and I envision this as many, many small tutorials whereby non program savy people could learn a lot of simple tasks that lead up to the effects outlined herein.
At the end of the day - people might not be interested in this at all - or peoples time might be better spent on training that is being created as we speak to lure the non TD Fabric crowd. Anyways - I think that this would be a great showcase to the non TD crowd (and particularly the medical animation community) about leveraging the power of Fabric.

Any and all comments and ideas are welcome!




  • Aaron KentAaron Kent Posts: 66 ✭✭


    PROJECT OVERVIEW: Create a network of neurons using instanced geometry from a DCC. Once created the matrix of instanced geometry would have a per instance user created attribute applied to it with an initial value of 0 on a per point basis. This value would then be used to adjust displacement and shading values within the DCC. Then, by creating a “trigger” system within Canvas the user can start a pulse through the network of geometry instances that displays the passage of electrical charges. The trigger could also possibly be started from various areas at various times. As the charge travels from the trigger point it floods the value on the user attribute across the instanced mesh before that value jumps the gap to the next mesh and triggers the process there. This effect would be tailored to decay over time with control added in to allow for some randomization of some of the decay times. Once the Canvas graphs and systems are built, we would move back to the DCC, importing our graph, driving the shading and displacement networks and rendering a simulation of charges flowing through a neural matrix.


    Initializing the array of positions for our matrix.

    This could comprise a number of simple Canvas tutorials about creating arrays of point positions.


    The resulting positions should take into account the size of the instanced meshes to prevent overlapping. As well, they should be close enough together to create a proper neural network.

    Tutorial ideas include:

    1) Generating random point clouds in Canvas
    2) Methods of using display attributes to visualize the point cloud
    3) Generating point clouds from a volume primitive in Canvas
    4) Generating point clouds from an imported mesh shape
    5) Maintaining a given distance between point positions and then randomizing those positions within a specified range
    6) Using the above tutorials to then create an array of point positions that has a defined structure. i.e. – the points adhere to the rules above, but tend to form in “pathways” kind of like 3D turbulent noise so that certain areas of the array are denser


    Instancing the meshes.

    These tutorials would show ways of importing geometry prebuilt in the DCC onto the point positions.

    Tutorial ideas include:

    1) Methods of drawing and displaying meshes within Canvas
    2) Creating sets of different meshes for instancing – in our case we would create several different neuron meshes to break up the look of the geometry once it is instanced
    3) An advanced tutorial series could show steps on querying the point positions of each mesh in the array so that it is oriented in the best possible way that it’s arms are as close as possible to its neighbors arms
    4) Tutorials to build a simple smoothing graph to smooth out the mesh geometry as opposed to using the sub-division surface model that the DCC offers. Perhaps it is even possible to allow for this smoothing to only occur at render time in the DCC to improve viewport redraw prior to render time
    5) UV tutorials about creating the discrete UV map per instanced mesh so the DCC has UV data to use the user created attribute within the DCC’s shading and displacement networks


    Building the per instance system which initializes each mesh with a user created attribute value of 0 on a per point basis.

    Tutorial ideas include:

    1) A starter tutorial which shows how to create a user attribute on a mesh primitive within Canvas
    2) How to initialize the values on that attribute
    3) How to begin a process by which a point in the array is incremented and this begins to flow through the nearest neighbors of the point
    4) How to modulate the speed that this “flooding” of the attribute occurs at
    5) How to decay the effect so that the point values all return to zero
    6) How to query whether the entire mesh has been flooded so that a trigger can be set to effect the nearest instanced meshes to repeat the process but avoid a “backflow” effect wherein neighboring meshes continue triggering each other on and off forever


    A step by step lesson in creating a simple push deformer within canvas that is driven by the user attribute. As a “charge” flows through the neuron this would cause the geometry to plump up a bit as the charge flows and then return to its initial shape as the point values return to zero


    Building a trigger system to activate the network from one or more locations either simultaneously or at various user defined moments in the animation.

    Tutorial ideas include:

    1) Creating a null / nulls system that would trigger a point array depending on distance
    2) A volume around the mesh where selected points in the array could be designated as the positions to start the trigger from
    3) A system by which the user can enter one or more positions in 3D space and an accompanying frame number to determine when and where the triggers occur


    Opening the Canvas graph within the DCC and driving the shading networks – setting up render settings and passes and creating the neural network animation. Basically render a base pass of our creation and then add passes like luminosity as the user attribute floods across the network to represent the passage of bio-chemical charges a cross the matrix. Also guild the lily a little with DOF, camera move etc etc.

    Advanced tutorial idea – play around with the push deformer we created modulating the displacement value within the DCC to further create a cool looking shading network as the charge crosses over the geometry.

    Advanced tutorial idea – create another Canvas network that returns information prior to triggers occurring so that neurons could shade slightly differently than the base shading model right before they are trigger in anticipation of whats going on in the network around them.



  • cormactioncormaction Posts: 4
    edited May 2016

    This pretty much covers a lot of the concepts I am personally interested in learning inside's like you read my mind! Would love to see this.

    EDIT - In particular the concept of exporting values to the DCC interests me as regards shading and deforming. Maya doesn't really have the same concept of empty weight maps that softimage has...all the weight maps are tied to various deformers/tools etc. Being able to have an editable property map on a piece of geo that can drive something would be so useful!

  • PoobyPooby Posts: 122

    I also think it would be great to see. Any tutorials are good to see, to be honest, but something thorough like this sounds brilliant.

    I'm primarily trying to help the visual programming development, in my own small way, through providing feedback on Canvas.

  • Paul DoylePaul Doyle Administrator, Fabric Employee Posts: 229 admin

    This looks pretty awesome. From our side we would give it plenty of air time so that lots of people get to see it. Please be sure to use Vimeo for hosting the videos as we have various hooks on our website that we can take advantage of. Please let me know if you need anything else from us.

    CEO at Fabric Software

Sign In or Register to comment.