Skip to content

Commit 994dfc2

Browse files
committed
Add milling machine breakdown
1 parent 42617bd commit 994dfc2

18 files changed

Lines changed: 96 additions & 1 deletion
Binary file not shown.
134 KB
Loading
83.7 KB
Loading
6.25 KB
Loading
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
---
2+
title: Blender - Milling Machine Breakdown
3+
description: ""
4+
date: 2025-11-01
5+
slug: blender-milling-machine-breakdown
6+
taxonomies:
7+
tags:
8+
- Blender
9+
- Breakdown
10+
extra:
11+
jszoom: true
12+
cover_image: "render.webp"
13+
---
14+
15+
A breakdown for my stylized milling machine render.
16+
{{ img(src="render.webp", alt="3d render of a milling machine") }}
17+
18+
<!-- more -->
19+
20+
{{ video(src="render_animation.mp4", autoplay="true" ) }}
21+
22+
{{ img(src="mill_clay.webp", alt="clay render for milling machine") }}
23+
24+
## Software
25+
- Rendered in Blender 4.5 using EEVEE
26+
- Line art is rendered using [Malt](https://github.com/bnpr/Malt)/[Cider](https://github.com/gamingrobot/Cider)
27+
- Grain was generated using [Grainy](https://superhivemarket.com/products/grainy)
28+
29+
## Light and Shadow
30+
To get sharp shadows, I set the **Shadow Step Count** to 1 in **Render -> Shadows**. Then set these settings on lights in **Light Settings -> Shadows**:
31+
- Enable Jitter with 10% Overblur
32+
- Filter to 0.0
33+
- Resolution Limit to 0.0001m
34+
35+
To disable background light emission, I disconnected the **Background** from the output in the **World** shader (or by setting the **Strength** to 0.0). This allows control of the exact color of the objects and shadows in the material shader.
36+
37+
### Spot Lamp
38+
There is a spot lamp inside the mill's lamp illuminating the mill and the volumetric.
39+
{{ img(src="light_spot.webp", alt="spot lamp settings") }}
40+
41+
### Sun Lamp
42+
The low-power sun lamp has a copy rotation constraint targeting the camera and has shadows disabled. This light also uses light linking to exclude some items from the light due to weird shading.
43+
{{ img(src="light_sun.webp", alt="sun lamp settings") }}
44+
45+
Since it is a low-powered light, it only gives highlights to areas outside the main spot lamp.
46+
{{ img(src="light_sun_split.webp", alt="showing highlights added by the sun lamp") }}
47+
48+
## Materials
49+
I set the **Color Management** to **Standard** and added a **Shader AOV** for **Bloom (Color)** in the **View Layer** settings. The bloom is a separate AOV because everything in the scene is emissive, and I only want bloom on specific objects. A Cryptomatte Object pass would also work for this.
50+
{{ img(src="shader_nodes.webp", alt="shader node graph") }}
51+
52+
These are the nodes for the **DiffuseColor** node group. The **ColorOffset** value changes how dark the shadows/diffuse shading are (faking the background illumination without changing the main shader color).
53+
{{ img(src="custom_diffuse_nodes.webp", alt="node group graph for DiffuseColor") }}
54+
55+
## Volumetrics
56+
The lamp volumetrics are set up on a separate view layer with the spot lamp so I could tweak it in compositing if I needed to. The mill was set to **Holdout**, so it didn't render the volumetric where the mill was.
57+
{{ img(src="volume_node.webp", alt="volumetrics shader settings") }}
58+
59+
## Particles
60+
These are the settings I used for the [swarf](https://en.wikipedia.org/wiki/Metal_swarf) particle system. The swarf models were in a collection that was randomly selected. I had difficulty with getting the physics to be stable, so I set the scene gravity to half, set collision on the metal block, and baked the simulation before rendering.
61+
62+
{{ img(src="particle.webp", alt="particle settings") }}
63+
64+
## Line Art
65+
I tried a couple of different approaches for the line art.
66+
67+
{{ img(src="render_lineart.webp", alt="grease pencil line art render", text="[LineArt Modifier](https://docs.blender.org/manual/en/4.5/grease_pencil/modifiers/generate/line_art.html)") }}
68+
<br/>
69+
{{ img(src="render_freestyle.webp", alt="freestyle line art render", text="[FreeStyle](https://docs.blender.org/manual/en/4.5/render/freestyle/introduction.html)") }}
70+
<br/>
71+
{{ img(src="render.webp", alt="malt line art render", text="[Malt](https://github.com/bnpr/Malt)") }}
72+
73+
Since I really liked how Malt's line art looked, I decided to go with that one. Malt is a custom render engine, so I had to use a linked scene since each scene can only have one render engine selected.
74+
75+
I used the default line width settings and set the **Color** to transparent. In the main **Default Render** node tree, I also set the background to transparent.
76+
{{ img(src="malt_lineart_nodes.webp", alt="malt line art node settings") }}
77+
78+
After this project I created [Cider](https://github.com/gamingrobot/Cider), which uses Malt but renders the line art alongside the main render so it can be used in compositing. It also makes it easier to set line art styles directly in the material settings and has support for a viewport preview. Cider is meant for just line art on top of an EEVEE or Cycles render, so Malt should still be used for more complex line art.
79+
80+
## Compositing
81+
82+
{{ video(src="composite_layers.mp4", autoplay="true") }}
83+
84+
For compositing, I enabled additional passes in the View Layer settings:
85+
- Z/Depth (for Vector Blur)
86+
- Vector (for Vector Blur)
87+
- Cryptomatte Object (to mask out specific objects for Vector Blur)
88+
89+
I had a weird issue with one frame in the middle of the render having a large vector change to one object in the vector pass but not in the combined pass. So I used the Cryptomatte Object pass to mask out just the cutter to apply the Vector Blur.
90+
{{ img(src="compositor_nodes.webp", alt="compositor nodes") }}
91+
92+
The settings I used for generating the grain with the Grainy addon:
93+
{{ img(src="grainy_settings.webp", alt="grainy settings") }}
94+
95+
If you liked this, you can find more of my art at [gamingrobot.art](https://gamingrobot.art).
8.45 KB
Loading
41.2 KB
Loading
55.5 KB
Loading
16.6 KB
Loading
175 KB
Loading

0 commit comments

Comments
 (0)