In the above video you can see a screen-capture of the real time system being played back in Blender's view port. The pins are extended wherever the webcam detects changes frame by frame.
Inspired by a music video, I wanted to recreate the effect of an animated 'pin art board' desk toy that shows a person moving behind the pins. I also wanted to make a system to create the effect in real time using my webcam. I built this project using the OpenCV2 Python library, using a built in background subtraction algorithm. I then wrote a short plugin for Blender that interpreted the footage from my webcam as height data for Blender's geometry nodes, that drove the position for the individual pins.
This project was written in Python 3 in 2024 using the OpenCV2 library.
This is a screen recording of the character rig being manipulated in real time by my facial expressions I was making to my webcam. Below is a video that shows the raw capture from my webcam, along with the landmark data that is being applied to the character.
I thought it might be a fun project to try and build a system that allows for real-time facial capture applied to a cg character within Blender. I utilized dlib for python for their facial recognition model. Then, using OpenCV2, I did several operations to gather animation data from my live webcam to pass into Blender. Blender then interpreted this data as constraints on a character rig. There is certainly room for improvement, but as a proof of concept I'm quite pleased with the expressiveness I was able to get out of my rig.
This project was written in Python 3 in 2024 using the OpenCV2 and dlib libraries.
In this short video when I activate the plugin, the billboards that are facing away from the camera lock to the same rotation as the camera.
While Blender is incredibly versatile, there are instances where I've found it necessary to write some code to alleviate certain problems I've encountered while working with Blender.
I wrote this plugin to replace the 'Track To" or "Copy Attribute" constraints so that I could instantly align any new billboards (2D assets) to face the camera.
This project was written in Python 3 in 2023
Here you can see in the active object identifier (the yellow text) that the name changes from the Mixamo format (mixamorig:LeftArm) to the Blender format (Arm.L) when the add-on is activated.
In certain cases, I've used Adobe's fantastic auto-rigging software Mixamo for posing characters. Mixamo is excellent, but one of the downsides to Mixamo is that the naming conventions that they assign to the bones are incompatible with Blender's auto pose flipping feature.
I wrote this add-on that renames every bone that was incompatible with Blender to a format that Blender can interpret. I was really proud of this particular add-on because of how much utility I got out of it.
There are some other plugins that do this process already on the internet, but I wanted to take the challenge of writing this myself, and customizing it to function exactly how I wanted.
This was written in Python3 in 2023
This is a small program I wrote for fun to solve a small creative problem. I wanted to create a myriad of characters with randomly assigned attributes. I couldn't find software online that did this so I wrote this little program.
I drew several variations of a character's attributes, and then the script compiles the attributes into a composite image.
I really enjoyed seeing the random variations it generated, and I definitely spent too much time just clicking the button to generate new composites.
This was written in Python3 in 2022