Simple custom node to get started with functions into Substance Designer part 2

General / 30 December 2023

Distribution map

With this simple node we will see the "if... else" node

First step create a float value


now you can reproduce this, we will replace the "shape" node by "input" node at the end to have ours custom node


now enter in the pixel processe

first create a get float 2 : "$pos" with sample gray to recup the position of pixels, you need to definite "input image 0" because we want use this one like distribution map. Then create a get float to call the float "value" that you have created.

now we need to call the both images same idea:  "$pos" with sample gray and definite the input image

you can see the node If else, if I translate the graph:

If the pixel of Input 0 is greater or equal at the "value" so use pixel of Image 1 else use pixel of Image 2

Simple !

Now you can try and change the "Shape" nodes into "input" nodes


Cheers


Substance animated and Unreal

Tutorial / 10 February 2022

Hello ! 

I searched long time how to make a cool render with my animated material create with Substance Designer. Substance Player is really cool and simple but the render are not very sexy.
Fortunaly I have two friends who taught me  how did that with Unreal :)
So big thank you Romain Tavenard and Daniel Olondriz ! Please check their protfolios here and here :)


First Step

Your material animated work very well on Substance Player and you to want make a super sexy render on Unreal ?
The first step is to replace all your $time node by a float variable ( because Unreal doesn't recognize $time ) 

To visualize your animation also on Substance Player I suggest you to create a boolean button so you can switch between $time and your variable for Unreal. In my example this variable is called " TimeKelly" 

So If I activate my boolean " Switch_Unreal" the variable "TimeKelly" is active and my animation doesn't work on Substance Player , If I disable it's $time witch is active and the animation work on Substance Player. Check on Substance Player to be sure that you haven't forgotten to replace one or more $time :)


Go to Unreal now :)

Of course you need to install Substance Plugin in your project.  Romain recommande this settings for the plugin (make sure to have GPU engine and not CPU ) 

  • Import your .sbsar and assign the material to a mesh
  • create blueprint actor and put it your scene

BluePrintActor

That is the graph to make work your animate substance in real time in play mode :) 

follow the steps on this video.


  • Create the node Set input float
  • Promote the variable Target
  • Define your variable wich remplace $time in the identifier
  • Create Get Times Seconds node and plug in Input value
  • Create Graph Instance Output size search your graph instance, and define the size of the maps
  • COMPILE
  • Return on Target and put your graph instance ( you can do before the compile ) 
  • Create the Async Rendering and plug in the output of Set input Float and plug Target on Async Rendering 
  • Compile

Now your animated substance works in real time , but if you want to render  with the sequencer it doesn't work yet. Let see how to do that.

Sequencer

  • Add your blueprint to the sequencer 
  • Add an event Repeater track
  • Create a New endpoint
  • Come back on your blueprint, and create the variable Sequencer Time and check expose to cinematic
  • Create a custom event called: sequencer ticks ( it will be call in the blueprint of the sequencer )
  • Copy past the first graph and remplace Get time seconds by your new variable Sequencer Time and replace also Async Rendering by Sync Rendering

  • On your Sequencer Events link your endpoint with your custom event SequencerTicks
  • Return to your Sequencer and add the variable Sequencer Time
  • add key at the begin and end of your animation ( your key need to be Linear )

  • In your track Event check : call to editor

Done ! you can export your render ! :D


I hope see more animated substance ! 

kisses  !!

Happy New Year 2022 !

General / 31 December 2021

Happy new year 2022!


2021 was incredible with the news of Substance ! I created this card for say thank you at Substance for this incredible year I hope play with news toys in 2022  !

This card is also for you reader ! if you are here because you follow me or just because your are curious. I wish you an happy new year 2022. That it is fulfilled of fun, creativities, love and  most important good healt !  

Pace e Salute ! (as they say where I come from)


*********************************************************************************************************************************************************************

I also wanted to take the opportunity to say all my love at the incredible discord community The Weekend Projects. You are incredibles guys, fullyfull love, and respect. I'm really lucky to have you at my side. I wish you a happy new year my family !

 ********************************************************************************************************************************************************************


The card: Procedural model and materials create on Substance 3d designer

Graph:

Paper

On Stager :


WeekendProjects - Victorian Challenge

Making Of / 04 October 2021

Hello

In the Septembre month I interested about victorian theme. Not really a subject that I like, I don't want do a tile or wallspapers for personal projects... 

After reflexion I found some interesting references:

I began to play with the sky, I wanted a slider to switch day at night:

And after ( my error ) I was thinked about the dome...  I had to cut in the uv's to have enough resolution ...

That is my Aldebo map, with uv's and my mesh

With this my animation was wrong so I changed the animation to rotate the sky from the top right corner.

And rotate uv's

The probleme was the tiling of my sky, because the texture didn't tile if I rotate the uv's but fortunally I had already make a custom node for that here:  custom node rotate


After that I modelised quickly a scene on Houdini and did render in Marmoset




Creating Custom Dynamics Stroke for Substance Painter

Tutorial / 23 August 2021

Hello,

I searched  how  to understand how work the Stiches Straight dynamics stroke on Substance Designer for Substance Painter. 


The only official documentation we have is this: Substance Documentation really cool for create gradient but It was not my goal :) but that helped me to understand what I need.

So first step we need to create two integer variable :

stampIndex  and stampCycleCount. 

the Substance documentation is clearly about this two parameter : 

The StampIndex is the ID of an individual stamp inside a brush stroke. By default it starts at 0 and increase by 1 for each new stamp. The StampCycleCount is a way to limit the amount of unique indexes and tells Substance 3D Painter to recycle/re-use the already generated Substance graphs. When the current ID reaches the limit Substance 3D Painter will start again from 0, creating a loop.

stampIndex just need to be create, value min/ max / default are not importante 


stampCycleCount is important in this case I don't want to loop too fast, so 20 it's good value for me.


Now If I observe the Stiches Straight dynamics stroke on Substance Painter I see two important thing : the patern is not center, and when I draw the complet patern appears gradually. I conclued that the pattern has an transform when I draw


I created simple rope material ( base color, normal, height ect ... )



at the end I used transformationation 2D node with function for scroll thepattern on the -Y axe:



 copy and past the transformationation 2D node for all maps ( normal, height ect ... )

Important thing to know : the height map is neutre if the color are grey 128


  and in my case I need to add alpha on the diffuse.


I exposed some parameter of my materials and done :



  


  Don't hesitate if you have question  :)

Simple custom node to get started with functions into Substance Designer

Tutorial / 09 August 2021

Hi !

Very simple tutorial to get started with functions in Substance designer ( Substance  3D designer )

The idea is to create a custom node  which can always select one element of Flood Fill same if we change the input before.

Without the custom node we will have difficulty to select with precision one elements what  we need

exemple:



The custom node use the number of elements to select precisely the one you want.


How to do this custom node ?

Final graph : 

You see very simple :)


Start:

Create an empty graph a give a name :)


  1. Now we need to create tile generator, it will be our map for test the node.  (When the custom node works we will replace by Input node )
  2. Add a flood fill after the tile generator and use the option "display advanced parameters and output"

  3.  Add the node Flood Fill to Index, and link. You see now we have the information about number of elements

  4. Add Distance node with maximum distance at 256

  5. Add the node Histogram select and add one input value on it.
  6. Link shape count of flood fill to index to your input, we can rename the input for "Number_shapes"
     

  7. We need to create an other  input to drive the selection .  The selection  will be a real number like, 1, 2 ,3 4 ,5 ...  so the type is "integer" on Substance Designer the color for the integer type is Yellow. The decimal number are the type "float" the color are Green.
  8. Double click on the background and add an input of type "integer"


      

  9. Now we have all ingredient for enter in the function part  :)
    Begin with the position of Histogram  Select, chose Empty function to open function graph


      

  10.  So, the idea is to divide number of shape with the number we want to select.
     use "Get Integer" to recuperate the integer value that we created / exposed

    and " Get float" to recuperate the float value of the input value


    /!\ We can't do operation between two differente type : float and integrer

  11. if we look at the bottom left of your graph window, we see that this graph ask Float1. Float 1 means it's only one of  number decimal value. (Float 2 need two number decimal, Float 3 need three number decimal and Float 4 four number decimal ). So we need to transform the Integrer to Float for can do the division.
  12. Use the node "to Float"

  13. We can do the division and set it as output node


      

  14.  We need to reduce the range of the histogram select.  if we play with our "Selection" exposed, we see the position change.


  15. If we change the tiling we see that the range are not good, so we need an other function to fixe that :)

     
    Excepte if you have more than 100 shapes, in this case you can do this like it, and you will be so SMART ;D

  16.  Enter in the Function graph of Range. 


     

  17.  The idea is simply to divide one by the number of elements. Use "Float " for add a Float value


      

  18. Our functions work correctly. 


      

  19. add a Blend node at multiply 


  20. we need to replace the tile generator with the "Grayscale input", so that the user uses his own.

     

  21. Add an "Output" node at the end, so that the user retrieves the selection and another "Output" so that he knows how many elements there are.



     

  22. We can save the graph and publish the .sbsar and use our node ! :)


How to create an animated little dragon in an egg ?

Tutorial / 25 April 2021


First step we need an eggs ! :)

Simple mesh with perfect uv's. I like nodes so I use Houdini, but free to use your favorite ;)

Ok now, need to import this one in Substance Designer and use it in 3D view :)

That is my final graph. I have 6 Output, basecolor, normal, roughness, height, ambiente occlusion and emissive. The idea is to use a slider for have a nice transition when I past of my Egg into at my Dragon. So Slider is my driver for magic transition.


What's happens in maps when I move my sliders ?


  

starts with the egg :

The scale shape : just played with directional warp,  warp, bevel and curve :)



I duplicated tile generator for have an other scales. I used it  for roughness and color detail


Flatten the contrast of the top of the egg  and add some variations before to add dirt.


  simple dirt


Color Map: I pass quickly this part ( but if you want detail tell me :) )


After this part of color, I use the World Spaces Normal (obtained with baked the model) for light the front, because my egg will be lighted with backlight only.


Ok now let's talk about the magic transition.  Remember you the magic transition is driving by my Slider. Expose "opacity" of Blend node for have your driver ( default value 1).


So for the color I want to darken when my cursor approaches zero and replace the front of the egg with the color black


Last blend node use the same variable "opacity" that I exposed before. /!\ /!\ It's very import to use the same variable /!\ /!\ 


For the height map, it's similar except that I just want to replace the height on the front of the egg (I would keep the scale for the silhouette). I refine the output of the Slider by a level node and a blur HQ

 

for others maps it's same process except I replace by the maps of Dragon and not by the uniform color


  roughness


 Ambiente occlusion


Ok let's see the dragon and veins :)

The idea is to separate the members to be able to animate them  3 animations: legs and tail, arms and head. The crosses into the gif correspond at pivots we need for joint


Let's draw tail and legs ! I use super node of Daniel Olondriz ( thank you for your incredible node https://gumroad.com/l/gGuCU?  )

Yes I know it's boring ( or not) but necessary if I want animate :)

Aniimmmmationnnn !

Fist step is to place correctly the pivot ( I'm sure there exist a best way for move pivot but that work and it's understandable). My rotation turn around my center of image so I need to move my tail and legs for place correctly the pivot I use safe transform for that and Transformation 2D help me to visualize the pivot. Pixel procesor is for animation, and the last Transform 2D move the draw in the correct place.


open the pixels processor now. 

Tips : if you want see what do the result before try into Substance Players, you can replace $time by a Float and move the slider

And if you want learning more about Pixels processor I suggest to joint the group: Inside the node (Substance Designer)  on Facebook, super cool community.            <3 <3 Thank you Andrei Zelenco and Marco Vitale  for this iniative. <3 <3


Let's continue with the body, just Blend ( Max light ) with the legs, the body don't move so don't need pixels processor.

next step it's a head same process that legs/tail ( move a pivot with Safe Transform, check the pivot with Transform 2d, put it in pixel processor for animation and replace in the good place with the last Transformation 2D )

I use same Pixels Processor for all animation part ( legs/ tail, head and arm). So same process for the arm, I mofidy the float value for make variation in the animation

breakdown

Dragon it's finish, let's see the veins. I use Craks Generator node

for create the blood effect animation I blend  the same texture with level more contrasted, (multiply blend)

Animation is in Transform 2D in the offset

Let's open the Edit function graph. Here is  my function for the animation


and for finish the emissive maps :)



I wish say thank you at #Weekend Projects for this challenge I really had fun to make this :)

let me know if you have question on this projet :)



My Nodevember 2020

Making Of / 02 November 2020

D:1 cookie

Let's not be too greedy !


D:2 candy



D:3 Fruit

D:4 grain



D:5 Pastry


D:7 Draw


D:7 Print


D:8 Layered





D:9 Fluffy


D:10 Paint


D:11 Prehistoric 


J:14 Art Deco

J:15 CyberPunk




D:16 Forest


D:18 Growth

D:19 fluid



D:21 Architecture



D:22 City



D:23 Sign


D:24 Game


D:25 Instruments


D:26 Geometric


D:27 Glitch

D:28 Branching


D 29 : Fractal

D:30 illusion



Stylised Fur Material

Tutorial / 15 October 2020

Hi,

In this article I broke down my graph where I created a stylized fur Material with Substance Designer

it's very simple graph.

First I creat 3 patern by adjusting the parameters of this graph



I use the Tile Sampler node to create the base and I use mask compositing with a gaussian noise and directional warp to add depth in my base, then I adjust it with a level node



    

Next step the  color :)


Don't panic it's very simple :) 

  • The first node is the auto level to have different ranges of gray
  • I like to use the light node, first for topdown light and a second one for underlight 


  • I use curvature to add highlights on the tips of the fur (blend in screen mode)


  • I use two ambient occlusion nodes, the first one is linked to the Autolevel and the second one on my last Level node
  • I duplicate the nodes of basecolor frame, and change colors to have something lighter and enhance the topdown lighting 
     
  • For mix base color and light color, I use same idea that I use for the depth but only on the lighter parts
  • and after the mix, I add light color with curvature node with the blend node in max mode
  • Finally I add a last occlusion

      Color passe


Nothing complicated, if you have any question don't hesitate :)