top of page

Snowman

Maya Pattern Animation

For my planning of this animation snippet, I decided to base it on frosty the snow man. I wanted the patterns to change color and move as his hat floats in the wind until the hat lands on his head. Once the hat lands on his head the change of color and pattern stop.

Inspiration
Breakdown

For the model I decided to go for a simple snowman with characteristics of Frosty, also to add to the story I wanted it to be before that hat was on him and as soon as the magical hat lands on frosty the pattern stops.

Adding the custom pattern shaders on my model and adjusting them properly.

Modeling
Custom Shader Application
Reflections & Displacements

Adjust reflections and procedural noise displacement to areas needed.

The animation and notes on this page explains how I used my custom shader written in the RenderMan Shading Language in Maya in order to animate it. I decided to animate my shader as patterns in the snow, bowtie, and the pipe.

Adjusting lighting and testing pattern animation.

Lighting & Pattern Tests
Snippets of Code Examples:

 #include "cross_pattern.h"

 /* Shader description goes here */
surface
cross_pattern(float Kfb = 1.0;
             
float right = 0.6;
             
float top = 0.70;
             
float left = 0.8;
             
float bottom = 0.90;  
             
float Lside = 0.2;
             
float Rside = 0.6;
             
color pat = color(1.0,1.0,1.0);
             
color bg = color(0.0,0.8,0.8)
              )
{

color surfcolor;

cross_pattern(right,top,left,bottom,Lside,Rside,pat,bg,surfcolor);   


/* STEP 1 - set the apparent surface opacity */
Oi = Os;

/* STEP 2 - calculate the apparent surface color */
Ci = Oi * Cs * surfcolor * Kfb;
}

// pattern.h
// a place for storing functions that create patterns.
//      vsfx319/shader_src/pattern.h

// A barebones version of a typical function
void cross_pattern(float right; /* [default 1.0] */
                    float top;  /* [default 0.6] */
                    float left; /* [default 0.70] */
                    float bottom; /* [default 0.8] */
                    float Lside;  /* [default 0.90] */
                    float Rside;  /* [default 0.2] */
                    color pat;
                   
color bg;
output varying  color result)
{
result = bg;

 if(t <= top && t >= right)
     result = pat;

 if(s <= Lside && s >= Rside)
   result = pat;

 if(s <= bottom && s >= left)
    result = pat;
   
}


            

bottom of page