Moving Meditation Community Render Challenge by Pwnisher

This is my entry for the Moving Meditation community render challenge held by YouTuber Pwisher during the summer of 2022. He provided the artists with different motion capture data to choose from and the camera setup. The artists were challenged to create a scene with the provided assets. The scene I created was a samurai turning the moon into a blood moon.

I used KineFX to import and clean up the motion capture because there was a lot of clipping and simulated the cloths with vellum. Additionally, I created the buildings and the bridges procedurally, so I quickly create different looks of the buildings by just changing different parameters. Also gave me the flexibility to adjust how the buildings and the bridges look at any point I want. Moreover, I used OSL to create the brick shader for the buildings and the lamp. Finally, the scene was rendered with Redshift and composited in Natron.

Here are my way of creating bricks with OSL:

shader brickwall
(
    // create parameters
    color brick = 1,
    color mortar = 0,
    float layer = 20            [[ float min = 0,   float max = 100 ]],
    float offsetH = 1.5         [[ float min = -10, float max = 10  ]],
    float brick_height = 0.9    [[ float min = 0,   float max = 1   ]],
    float brick_width = 0.9     [[ float min = 0,   float max = 1   ]],
    float gapH = 0              [[ float min = 0,   float max = 1   ]],
    float gapV = 0              [[ float min = 0,   float max = 1   ]],
    float num_bricks = 5        [[ float min = 0,   float max = 10  ]],
    float layer_offsetO = 0     [[ float min = 0,   float max = 10  ]],
    float layer_offsetE = 0     [[ float min = 0,   float max = 10  ]],
    output color dif_color = 0,
    
    output color pattern_mask = 0
)
{
    // space    
    point uv = point(u,v,0);
    point obj_pnt = transform("object",P);
    
    // change height and width value for smoothstep
    float height = 1 - brick_height;
    float width = 1 - brick_width;
    
    // create horizontal pattern
    float patternH = sin(obj_pnt[0] * layer + offsetH);
    patternH = patternH/2 + 0.5;    // normalize
    // smoothstep the pattern
    patternH = smoothstep(gapH, height, patternH);
    
    // create mask for odd and even vertical layers
    float mask = sin((obj_pnt[0] * layer + offsetH)/2 + 1);
    if (mask < 0)
        mask = 0;
    else
        mask = 1;
        
    // ------------------------------------------------ //
    
    // create vertical patterns odd and even
    float patternVO = sin(obj_pnt[2] * num_bricks + layer_offsetO);
    float patternVE = sin(obj_pnt[2] * num_bricks + layer_offsetE);
    // normalize the patterns
    patternVO = patternVO/2 + 0.5;
    patternVE = patternVE/2 + 0.5;
    // smoothstep the patterns
    patternVO = smoothstep(gapV, width, patternVO);
    patternVE = smoothstep(gapV, width, patternVE);
    // block out odd and even layers
    patternVO = patternVO * mask;
    patternVE = patternVE * (1 - mask);
    float pattern = (patternVO + patternVE) * patternH;
    
    // ------------------------------------------------ //
    // outputs
    dif_color = mix(mortar, brick, pattern);
    pattern_mask = pattern;
}