This was an attempt to create background scenery without expending a lot of effort on each part. It was a mostly straightforward process but it was nice project that brought together some of the things I’ve been learning. About 98% of the effort on display here is in the material. I feel like I could reuse the same material or at least the same process for other projects with only minor tweaks.

The objects were created with standard modeling techniques like extruding, insetting and beveling various faces. Some of the buildings are roughly based on famous landmarks around the world.

The material:

Mapping the brick texture around the objects was tricky. I followed a StackExchange post(linked below) and I’m not sure I understand even half of it but the result is that bricks will properly wrap around an object without having to use the UV editor to unwrap it. You can add and manipulate vertices and the bricks will still map correctly. I did modify the node setup slightly to remove the bricks from the tops of the structures.

I wanted to add a bunch of variation to the buildings without much effort so I plugged the random output socket from the object info node into as many of the options as I could. I ran it through various Map Range nodes to dial in the effect.

The brick texture has many options which can be manipulated with the random variable but Offset and Squash don’t have input sockets. They probably need to properly repeat and thus can’t change their properties on the fly. I tried using a driver but could not make it work. In the end I made a few duplicate materials and put them on random buildings. Not very elegant but it works for now.

I followed Ian Hubert’s warbles tutorial to give the glass some variations. It’s pretty subtle at the distance these will be seen at but it adds a lot of life when viewed closer and especially if the camera is moving.

I wanted a few windows to be lit up. I set the brick texture colors to be white and black, this let me use the bias option to control how many windows were lit and gave some variation in the intensity. I fed that result into a color ramp. I added some red and green stops to the ramp to simulate the kinds of lights that might stay on in a building, like exit signs. I fed this into the emissive socket on the Principled BSDF. I mixed in a noisy wave texture to make the windows look like there are actual sources of light inside them.

I was a little confused about emission. I thought maybe since I didn’t care about the actual light coming from the windows I could just plug it into the base color but that makes them too dark. I think parts of the mesh that are emissive will always be brighter than whatever light is hitting them.

The Red Airplane Warning Lights:

I always struggle with particles. There are a lot of default settings that cause them to not show up where and when you think they should. For example, the default start and end frame are 1 and 200 respectively. That means if I am at frame 0, the particles don’t appear. Likewise, the default physics will cause the particles to fall out of view if I am at say, frame 400.

Another important thing to note is that as far as I can tell, the Halo renderer material for particles doesn’t exist anymore. The white spheres you see in the viewport are just for previewing and will not render. If you want to change the look of the particles you have to use one of the other options in the render tab. I used a very simple object with a red emission texture on it. Placement is controlled by a vertex group. It was easy enough to go into edit mode and select only vertices above a certain height to be in the vertex group.

The Background:

The background haze was made by using a simple node setup on the world shader. I separated the generated coordinates and used the Z component to feed into a color ramp. A trick I learned by accident is that color ramps can have multiple stops in the same position and they will be evaluated according to their stop number. I used this for the haze so that the output would start at black on the horizon. Now that I think about it, I don’t like this trick since it is almost impossible to see this setting when looking at the node map. It should be avoided to minimize confusion. I ended up just cutting off the horizon with a plane because it looked better.

I added some stars using a Voronoi texture set to Minkowski with a color ramp to make them smaller and a mix node to merge them with the haze. I mixed the stars with the Z coordinate to make them a little dimmer closer to the horizon.

I did a fisheye render just for the fun of it. It’s easy to do, but only Cycles can do fisheye style.

Improvements:

  • Find a way to make the Offset and Squash options random per object instance without resorting to separate materials.
  • More variation in the emission map would be good. I’d like to see if I could make some more structure in the windows, like vertical lines for walls. I imagine that most office lighting is long fluorescent tubes, so maybe I could have the lines fade and shrink as they go down, like looking at a row of lights from below.
  • It would be cool to see if I could do some automatic geometry building. I know geometry nodes allow this, but I have not even begun to explore them.
  • It would also be cool if I could automatically place the airplane warning beacons without having to assign vertices. It’s not much of a struggle but every little bit helps.
  • Figure out an easy way to bake the different objects and materials for uploading to SketchFab.

Credits:

https://blender.stackexchange.com/questions/112843/how-can-i-make-my-procedural-brick-texture-map-correctly-to-both-a-cube-and-cyli