Here is my low poly dino scene (rendered in cycles, Blender 4.2):
I definitely over designed the scene for what it is, but it was good to practice a few techniques.
Overall, I would say that I am pretty happy with how the t-rex turned out.
Also, while the goal was a low-poly look, the shade-smooth version is actually pretty good. Moderate Rex from Toy Story vibes.
Strictly speaking, shading the trees uniquely was probably the least bang-for-my-buck in terms of time spent versus the outcome of shading them all identically, but it was a good reminder of how to add random shading variation to different instances of an object.
We’ll see how quickly I get around to the next portion, and to what extent I “stay on the path.”
Below, I break down the shading and geometry nodes work I did for each component of the scene.
If you would like to look into the details, look here.
I went into some extra modeling for the hands, teeth and eyes.
the t-rex
I had 9 textures for the t-rex
The body was shaded to have some scales
I added a stripe down the side of a different set of colors but the same underlying texture for bump and roughness
The claws and feet got their own texture
For the mouth, I made separate shaders for the inside of the mouth, the tongue, and the teeth.
The mouth and tongue shaders are fairly simple
I used some ambient occlusion to get nice shading along the teeth
Finally, the eyes were split into three regions for shading, the whites, the pupils, and the iris
The iris was my first time using a magic texture
The tricky part about the eyes was that I wanted a consistent roughness map across all three regions, so I made a separate group node for the eye roughness
The ground/mountain shading is closest to what Grant did, but mixing in some extra detail.
The ground
Instead of breaking the ground into 2 parts, I used height as a filter for some subtle shading variation.
With regards to the trees, Grant said that one could scatter them with geometry nodes, so that’s what I did. They are also all uniquely colored with slightly different gradients for some variation.
The trees
The geonodes were a little subtle, mainly because I wanted to weight paint the vertices as a mask for an input for the scattering, but the ground had been decimated and had very little topology. So instead, I made the underlying object for the scatter node a grid with the same xy dimensions and the ground but with more subdivisions.
The challenge with that, in turn, is that the grid is flat at height 0, so the trees would need to be moved to match with the surface of the ground, which was achieved via a raycast node.
Also, for purposes of randomly shading each instance, I needed to capture the index of each scattered point for later use.
Putting it together, the scattering looks like
The shading was also complicated, because I wanted each tree to be individually gradiented with slightly different tones.
It took me a while to figure out how to randomly pick a color for an instance. There might be a better way to go about it but capturing an index attribute for the tree and plugging that into a whitenoise texture, then scaling it down and adding it to a base rbg tone seems to work okay.