Inspiration

  • As creative technologists interested in 3D graphics, we are intrigued by the rise of 2D stylistic effects in recent animated feature films such as Into the Spiderverse, The Wild Robot, and Puss in Boots. We wanted to create a tool to help 3D artists incorporate 2D stylistic effects into their animations easily, since this is a pain point that has been expressed to us by some of our 3D animator friends.

What it does

  • This is a tool that automatically generates a painterly texture for a given material, based on a given brush stroke texture and a given color texture
  • It allows you to control
    • the blending between a water color style effect and an acrylic paint style effect
    • the size of the brush strokes
    • the number of iterations for adding brush strokes

How we built it

  • We used Open Shading Language since it's an open source language that is supported by a lot of renderers commonly used by 3D artists.
  • We used our combined knowledge of 3D digital art, math, and programming to come up with the logic for generating and blending painterly effects, and then created a shader using OSL.
  • Our tool is software-independent and works on all major DCCs that support OSL such as Blender and Maya

Challenges we ran into

  • The initial setup for OSL and retrieving values from the scene (such as UV coordinates) took some time
  • We struggled with figuring out the math for manipulating the size, orientation, color etc. for the brush strokes
  • We struggled with figuring out the logic for blending different brush strokes

Accomplishments that we're proud of

  • Collaboration between a Computer Science/Graphics Programming Major and 3D Digital Design Major
  • Being able to come up with the logic for the brush stroke placement
  • Being able to come up with the logic for paint blending
  • Combining the artistic knowledge of what makes something look painterly with the computer science knowledge of how to make a computer produce that effect

What we learned

  • How to get an OSL script working with different DCCs/Renderers
  • How to implement and manipulate painterly effects procedurally
  • Limitations of existing solutions/workflows for adding painterly effects
  • Tech Artists and Graphics Programmers can make a great team

What's next for Painterly automation

  • We would like to create plugins that use this shader for some major DCCs such as Blender and Maya (for ease of use)
  • We would like to refine our logic for painterly texture generation, with more accurate blending
  • We would like to incorporate more control for the artists

Built With

  • open-shading-language
Share this project:

Updates