The Last Great Downtown Hotel in Bludhaven, at Sunset


Everything is procedurally generated with geometry nodes, except the color.

Pre-color render

Viewport views, with color-separated materials


The opening pages of the most recent Nightwing volume, featuring incredible art from Bruno Redondo, inspired me to try creating something in the same style in Blender.

Geometry nodes

The only hand-modeled assets are the air conditioner units and the balcony- everything else exclusively created by geometry nodes. I used a modular approach, combining multiple building blocks into a panel, then turning that panel into a grid. Here’s just one panel:

Note that the ground floor uses a different set of rules, to provide variety.
Instanced to one direction of the grid:

Building block closer look - molding

2023-01-15 07_25_50-Blender_ H__blender_projects_2023_bludhaven_streets_bbs.blend

I used a float curve node to generate the profile of the molding from a curve line, then simply extruded it to form the molding building block.

Air conditioner placement

I encountered an issue here- you can’t go “backward” in a geometry node tree; that is to say, you can’t randomize placement on instances after the instances have been instanced. (Say that ten times fast! :sweat_smile: ) To solve this, I used a hacky approach of setting a unique material to the window frames, converting each island into a reduced number of points, and using Boolean math to remove any instances of two AC units per window frame:

While this isn’t perhaps the best way to do this, it worked really well. And I’m not sure what the best way is :wink:

Window blinds randomization

Same as the AC units, I couldn’t naturally randomize this. Fortunately, a Select Material node and a Mesh Island node worked perfectly:

In an earlier screenshot, you can see that the window blinds move above the top of the window this way- I used a simple mesh boolean with a large cube to cut off any visible excess at the top of the building.

Complete geometry nodes tree

Line art

I used the grease pencil line art modifier to add line art. I also added an Edge Split modifier, set to 20 degrees, to increase the amounts of drawn lines to the desired amount. To get all the lines in high quality, I had to render at 17280x9720 and downscale.

Prep for painting

I used cryptomatte to prepare this work for coloring- I separated out each material into a unique matte:

Doing this gave me a bunch of images like this:

Unlike the line art, these didn’t need to be super high resolution (and when I tried rendering with this compositor tree at high resolution, my computer immediately ran out of RAM and crashed)- instead, each of these images is 3840x2160.

I took these images into Affinity Photo and made each of them a mask for a new pixel layer, thus allowing me to paint each material on a unique layer while maintaining sharp boundaries:

You can see in my layers that each layer has a mask.


I hand-painted each layer, using a quick color fill first and then adding details with watercolor brushes. I then mixed the lines back over the top. Some pixelation is visible if you zoom in:
2023-01-15 07_47_38-Affinity Photo
But even with this, I was still able to get the watercolor look I was going for from a reasonable zoom level.


Once the painting was done, I had this:

I then added in a slight warm Multiply layer, a slight grain overlay, a Curves adjustment, and painted some light effect to get the final result.

Thanks for looking! :slight_smile:


That is very, very cool!


Some great details on everything!

1 Like

You lost me somewhere between instancing and instancing- but the result looks great! :ok_hand:t2::sweat_smile:

1 Like

@piranha4D @Minamookevlar thanks, I’m super proud of it :grin:

@kaamura yeah, I tried to make a simple explanation but ultimately this was absurdly complicated. I’m still debating if the process is worth the result, I’ll probably try it again and see if I can get it faster :slight_smile:


Nice style, the final looks very nice! And those geo node groups are nice to have to more easily add buildings and details to other scenes, if the need arises.

1 Like

Thanks! Yeah, I have a graphic novel project in pre-production limbo (waiting on the writer) that will definitely need a lot of line-art/painted backgrounds, I’m going to be using these groups and others to make that process a lot faster. The cool thing about this method is that the style is entirely independent, so I could have for example painted this a lot grungier and made the lines sketchier, without making any modifications to the Blender file or having to re-render. I could also easily make a full street of buildings that all look unique with geometry nodes, which would for sure make up for the time it took to make these groups :slight_smile:


This is more of a proof of concept than anything, I decided to do a quick daylight pass to see how it would look. I changed the sky, lowered the shadow contrast and amount, and mixed in an ozone layer and a daylight air layer, using what I’ve learned from Nishita sky. I also turned the streetlights off. The whole process took about five minutes and gave decent results. I’m now going to do a sunrise version and a night version, and compile all of them into a Windows Dynamic Wallpaper (.ddw) file, which I’ll be using as a desktop background.

With these four files, you can make your own .ddw file / dynamic desktop background, if you want.


I featured you on BlenderNation, have a great weekend!

1 Like

You’re on the #featured row! :+1:

1 Like