top of page

My experiments in 2D/3D art using procedural tools and color theory.

After Effects
AeGoldfish_inspo.png

procedural fish

effects I want to try

sketch and reference

print inspiration

After Effects breakdown from my Summer Loop project

final animation

skittish fish

When you realize hand animating ten of ANYTHING is very challenging, it makes you reach for procedural tools! These fish need to swim independent paths, move with naturalistic timing and spacing, and create a nice composition every frame. 

AeGoldfish_01_path.png
  • Use vector paths as shapes

    • A stroke path is a vector line, but you can trim both ends of the line and taper one end to make a tear drop shape. I followed Matthias Lynge’s Stroke Animation tutorial; he really knows how to squeeze so much out of Ae’s vector tools!!!

    • The stroke line itself is not animated since it serves as a path. Instead, the trimming points are animated, expressed as a % of line. Yes, it would be easier to animate the location of the the tear drop over time, but with this method you have to key the % of the path. If your fish starts at the 15% mark, your loop will have to be 15% → 100% → 0% → 14.9%. Thankfully, fish movement is jerky and non-linear, so it’s easy to hide the seamless loop in the middle of the animation without needing to perfectly calculate where and when to place these keys.

AeGoldfish_01_anim.gif

each fish is a section of a vector line

AeGoldfish_01_shade.png
  • How to extrude 2D fish shapes?

    • Since we’re viewing the scene at an angle, I wanted the fish to have 3D form. I considered duplicating a smaller version of the fish that could merge with the original layer, but that was unwieldy. The best way to cheat 3D in Ae is usually Bevel by introducing fake lit edges, but the built-in effect didn’t extrude the form enough.

    • In the end, I chose to add roundness by adding Inner Shadow with a huge width, high distance, and high angle — recreating a spotlight sitting right over the fish. It makes them look really good when they swerve. Layer styles on small shapes is powerful and being able to tweak color, noise, and shape using several controls is a huge plus!

AeGoldfish_01_ripple.gif

+ a subtle wobbly distortion filter

environment

AeGoldfish_02_BGRipple.gif
  • ​Looping ripples

    • I used the built-in Ripple effect. The ripple generator starts at 0 and it would take forever to produce 10+ ripples. Ae doesn't give a control for offsetting time on this effect, so I just duplicated the ripple layer to get the number of rings I wanted.

    • The ripples are distorted with a Turbulent Displace effect aka a dynamic noise pattern. Looping noise is very convenient in Ae because the pattern repeats every 360 degrees.
      ​​​

  • Cast shadow

    • The shadow pass combines the ripple comp and fish comp, merged together and smoothed (using Blur + Threshold as a very blunt edge smoothing technique). In real light, both shadows would be distorted based on the shadow caster’s distance from the floor, with bottom feeders casting the darkest, sharpest, least distorted shadows. Thus, the pink ripple layer is slightly distorted using Corner Pin because it floats above the fish.​​​​

    • Everything here is parented to a global skew value so they sway back and forth on loop.

  • ​Bokeh background

    • A simple Lens Blur over animated noise.

AeGoldfish_02_BGBokeh.gif

analog looks for 2D animation

Compositing in After Effects for our 3 PBS commercials

processing line art

PBS_Leah_FX01.gif

​Here, I took Ella Louise Khan's pencil tests from our last project and tried out some inky effects.

​

  • Efficient pipeline​

    • After finishing Commercial #1, our animators needed a less labor-intensive style to endure #2 (and save their energy for #3). We hoped that drawing fewer key frames and simpler character designs a la UPA style would make their job easier.

    • We needed to save budget on clean-up, which is the most drawing-intensive stage of 2D. I hoped that applying an edge smoothing technique like this would 1. Give us the old-school ink lined look and 2. Allow us to skip clean-up. HOWEVER...

It turns out that EVERY STAGE OF ANIMATION MATTERS! There are no shortcuts to this craft, and in this case, coloring could only happen after cleaning up the outlines.

PBS_Leah_line.gif

1. rough

2. clean line

3. blur line

4. threshold

5. outer glow on line

In order to color the frames with a paint bucket tool, you need clean lines. So, we decided not to skip the clean-up stage. 

referencing traditional fx

Screenshot 2026-08-23 at 15.54.19.png
  • Tracing paper effect

    • When Leah has the spark of an idea, she jumps up and glows. I wanted to find out how the original UPA artists handled transparency effects, and found Robert Cannon's film, The Miner's Daughter (1950). I think they used a pane of frosted glass or acrylic for this effect. They also use transparent paintings and dry brush paint strokes for smoke and smear frames -- such a nice way to use textures against flat, graphic, background design.

Leah_fx_paper.png

generate mask from color pass

add noise and distortion to edge

use as a mask for blur and texture

If you know me, you know I love a

Screenshot 2026-08-18 at 22.51.22.png

post processing effects

  • Fake CMYK treatment

    • At the very end, I took each RGB pass of the video and blurred the B pass (yellow ink) and recombined the layers. As a result, every frame has a slightly warmer, yellowish look, and there are some colorful artifacts on the edges of shapes.​​

    • This is an additive process (RGB) mimicking the look of subtractive printing (CMYK) and doesn't really have anything to do with the UPA animation process. There's probably a lot more to the photography stage of cel animation and how they handle the film colors, which I am very curious about.

  • Procedural texture in Ps

    • This is a gorgeous technique from Texturelabs that uses layer styles to apply grunge texture to the inside of a shape.​

  • Can every effect be transferred from Ps to Ae?

    • No! I have a suspicion that both applications use slightly different algorithms for blend modes. Is there an Adobe expert out there who can explain this to me???

    • Ps uses sRGB while Ae uses Rec 709 and linear space since it's optimized for motion. I learned this the hard way while exporting a rainbow-themed project for MAKE -- the values came out looking janky, especially the jumps from red > orange > yellow. My technical director then explained encoding to me but I still selfishly wish we artists didn't have to worry about that.

Leah_fx_cmyk.png
PBS_Leah_01.gif
3DS Max

looping smoke sim

& particle croissants

3DS Max / Phoenix breakdown for MAKE

I created this project as an intern at the commercial animation studio MAKE.

  • The challenge is to develop a 10 second looping animation within a month to learn the studio 3D pipeline.

  • For this project, I learned how the studio handles texturing on the fly, bypassing Substance and manipulating procedural textures directly in 3DS Max. For example, the seamless crescent floor tiles are placed procedurally.

  • I learned tyFlow (developed by one of the OG employees at MAKE!) for particle simulation, Phoenix for smoke simulation, and Nuke for compositing.

looping randomized croissants

NCD_croissant_02.gif

The particles are birthed from inside the oven. They collide with the conveyor belt (also made procedurally to get the infinite rotation) and have a realistic sense of weight and bounce. However, I forgot to reset the transformations on the original croissant mesh so all of the instances are huge.

NCD_croissant_01.gif

The croissants are the correct size but their starting rotation is too random, so they look very silly.

NCD_croissant_03.gif

I added a step in the simulation that instructs it to skip croissant #8, so now there is a blank space in the assembly line.

simplified smoke approach

NCD_smoke01.png

actually... they need to be more realistic

  • It turns out the blobby smoke was not the house style, so I needed to redo it. My director encouraged me to use a realistic smoke sim, but I thought that would clash with the miniature look I had going for the rest of the scene. To make us both happy, I combined both approaches.

  • Keeping the original sphere particles, I used Phoenix to birth realistic smoke from the sphere's vertices.

NCD_smoke02.png

how do you loop a simulation?

  • This was the big question that had me stumped! It was easier to loop the stylized smoke because the smoke bubbles were a bit spaced apart. Just copy + paste after 10 seconds!

  • A physically based simulation like Phoenix smoke is harder to loop... because the little dust specks can't be guided to create the same random shapes again.

  • The solution my mentor, Joe Kim, came up with was to bake out the smoke simulation and hide the loop in the middle of the animation.

  • Unlike the croissants, which could be converted to vertex data, the smoke is rendered straight to camera and stored as pixel data. 

Photoshop

emulating hand-colored photos

Manipulating RGB channels in Photoshop

haori_spread_02.png
haori_spread_03.png
  • While volunteering at the amazing Remainders shop in Pasadena, I made a small sewing project using scrap fabric. Because my work was inspired by traditional Japanese clothing silhouettes, I wanted to style the photos to fit the theme.

​

hand-colored-photographs-japan-1870s (11).jpg

Hand-colored photography from 1870s. Source​

Screenshot 2026-08-18 at 23.54.00.png
Screenshot 2026-09-18 at 10.49.24.png
photoshoot_printlook_001b.jpg
  • This post is a work in progress!​

bottom of page