Passivestar on Creating Custom Tools in Blender

3D artist and game developer passivestar talked about their YouTube channel, working in Blender 4, and making powerful Geometry Node tools.

Introduction

Hi, my name is Tim Greenberg, I'm a self-taught 3D artist and game developer.

Online I'm mostly known as passivestar, and my internet friends just call me passive. It doesn't have any deep meaning to it, I was just trying to come up with a nametag back in 2008, and at the time I was reading a book on computer networking. Passive star is a type of network topology. I liked it, and it stuck with me!

I started dabbling in 3D modeling and rendering early. In the late 90s, my father was using 3ds Max 3 for work, so I got interested in that and picked up all of the basics from him. Roughly at the same time I also became comfortable with Maya and Rhino, a popular NURBS modeling software at the time. Surface modeling seems to be having a comeback today, Plasticity is gaining popularity on Twitter!

In 2011, I made a switch from Maya to Blender and never looked back. Blender was not the most user-friendly 3D modeling software back then and perhaps the biggest influence for the switch was Andrew Price's tutorials that made it much easier for me to get into it. The main reason I found Blender appealing was how fast and lightweight it was compared to Maya and 3ds Max.

Here are some of my renders from the 2008-2011 time period:

The BMW was modeled in 3ds Max 8 and rendered with MentalRay, the Reventon was modeled in Rhinoceros and rendered in 3ds Max 9 with V-Ray, and both of the objects on the right were modeled in Blender and rendered with LuxRender (Cycles didn't exist back then).

I started learning programming at the age of 14. My first programming language was Delphi, and I believe the first app that I made was a calculator with GUI. I tried learning several different programming languages back then, including C++, but around 2010 web dev caught my attention so I learned JavaScript and I spent quite a few years of my life working as a full-stack web programmer, both freelance and full-time.

I went on a lot of different tangents in my life and even tried to learn digital painting. But in the end, I realized that what I really want to make is games. I've been gaming since we got our first Pentium when I believe I was 4 or 5. I took part in a local Quake championship when I was 6. Of course, I got rolled by older kids, but they still gave me a Sony cassette player as a prize. It was nice. So I gamed through the entirety of my childhood. And I was always curious about how games are made. I always loved the first-person genre for its immersiveness, and Valve was one of the biggest inspirations in that regard.

Several years ago, I decided that it was time to follow my passion and got serious about learning game engines. I learned Unreal Engine for some time and made a couple of small tutorial videos like these for fun:

I also learned Unity, which is currently the engine I'm most comfortable with and the engine that I use at work. There's a short tutorial series on making a first-person controller in Unity on my channel:

I'm a big fan of learning by teaching, so I like making videos about things that I just learned myself to better memorize them.

Shortly before doing all that game engine learning, I decided to pick up Blender again after a long time of not touching it to solidify my modeling skills. Since I focus mostly on 3D games, I need to be able to make 3D assets quickly for quick prototyping. So I focused on coming up with a workflow that doesn't waste time. I did a series of speed modeling livestreams on Twitch, where I tried to make 1 scene in 1 stream (~5-6 hours). Back when I was interested in digital painting, I loved spending time watching speed painting time-lapses on YouTube. I found it mesmerizing how artists can create something out of nothing so quickly!

Here are some of my results from those streams:

I went with a stylized look for most of them because I think this is really good for practicing speed. Besides, I like such art.

Most of those speed modeling streams were then converted into time-lapses for my YouTube channel. One of the time-lapses, to my surprise, surpassed 1 million views and single-handedly brought the biggest chunk of my audience to my channel:

YouTube Channel

Because of that one viral video, a big part of my audience is 3D artists. And because of that, when I got more active on Twitter this year, I decided to lean more into making Blender content rather than gamedev content. People loved my short Blender tip posts, and thanks to them I managed to quickly grow my Twitter account from 200 followers to over 20K. A lot of people also came because of my recent interest in the Godot engine, but that's a whole other story. Godot is a super promising game engine, and I believe it has a great future ahead of it.

I'm somewhat of a workflow optimization junkie. My interest in making tools started as soon as I learned programming. Back when I was working in Maya, I was writing scripts in MEL to make it easier for me to model. When I was working in After Effects, I remember writing a REPL console in JavaScript among some other tools.

So I guess it's no surprise that when I got comfortable with Blender I didn't hesitate to get into Blender's Python API. Blender makes it really easy to write add-ons because it has an interactive console that makes it easy to explore the API. When it comes to scriptability, Blender is one of the best software out of anything that I have ever worked with

While I was doing those speed modeling exercises, I was paying close attention to what took the most amount of time. I even spent time analyzing my own Twitch VODs minute by minute. And to help me get faster, I was working on tools that improve my workflow. One of my biggest efforts in that regard was my quick menu addon:

Blender 4.0

Most of the Blender 4 node tools that I recently showed on my Twitter (Bounding Box, Edge Curve, Connect, Randomize) have already existed in my quick menu addon in the form of Python code. However, ever since Geometry Nodes were introduced in Blender, I always found them super powerful and was thinking of a way to utilize them in my workflow. Node trees can be easier to maintain and some things just take much less effort to do with nodes than it is with Python. The only problem was Geometry Nodes worked as modifiers only. And while I like the non-destructive workflow and think that it has a lot of good uses, when I quickly sketch something out in 3D, I prefer to do everything in edit mode. There's something about not having to worry about the modifier stack that helps me get into the flow easier. It also makes it easier to use regular Blender tools alongside Geometry Nodes.

So to leverage the power of Geometry Nodes in my tools, earlier this year I started working on a way to make it possible to use them in edit mode in my addon. Here are some tweets from that period:

And of course, just a couple of weeks later, I learned to my surprise that the Blender team is already working on the exact same thing natively! Continuing to work on it myself would be a waste of time, so I stopped and waited for Blender 4 beta to drop.

Giving people without any programming background the ability to make any tool they want by connecting nodes is a huge step forward for Blender. It's still missing some features, like modal operators and a node for getting camera position and rotation, but those are on the roadmap and will likely come in later versions of Blender.

To make a node tool in Blender all you need to do is switch Geometry Node type from Modifier to Tool. Your tool will then be available from the dropdown menu on top of the viewport. You can add your tools to quick favorites or assign keyboard shortcuts to them. Here's a short demonstration:

Here are some tools that I made and their node trees:

Bounding Box

Connect

Randomise Islands

I'm currently working on some more tools, for example, this experiment got a lot of attention recently:

Node tools made it more exciting than ever to play with Geometry Nodes, and I'm looking forward to porting all of my favorite tools from Python to Geometry Nodes when all of the missing functionality gets implemented in the later versions of Blender. When I'm done with those tools, I'm planning to make them all available for download!

Conclusion

My advice to people who want to get into 3D modeling is to just download Blender and follow any popular YouTube tutorial you can find. They are all good. Today it's easier than ever to get into 3D modeling, so just getting yourself to start is the hardest part!

Passivestar, 3D Artist & Game Developer

Interview conducted by Theodore McKenzie

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more