Tips on making my scene look and render better?


Blender file:
https://drive.google.com/file/d/1nvqxoL2Lf0skxwNdqy_mN2x3uZdhZznG/view?usp=sharing
Materials:
https://drive.google.com/file/d/1GbRB6P2m8W7Im0wEpE5ZoMr9KaEt8PMw/view?usp=sharing

Hello there everyone! I am making a game and have been working on the scenery background for a good while. The goal isn’t photorealism at all, it’s supposed to be a bit cartoony and I’ve made everything for this including the textures for materials. I don’t know what I’m doing wrong, I’ve spent a lot of time making the things for this and it just doesn’t look good at all. The shadows and lighting is bad, the grass is trash, and you can’t even see the materials really for the trunk of the trees. Worst of all it’s taking a huge amount of time to render this poor image with Cycles (28 minutes).

This will all be getting much better detail such as rocks and a better sky but I just can’t figure out what the heck is making the current thing look like a train wreck.

Thank you all in advance!

First of all, there’s way too much grass, you should leave more empty spots. The grass has no variation in color, shape or height. And the flowers are too repetitive. I think you should fix the topology before thinking about lighting.

I looked at your scene and image files. Your ZIP file didn’t include the SHORT_GRASS_BASE image, so I substituted a simple grass texture I had. I don’t think that makes a difference in my recommendations.

First of all, I would use HDRI lighting if you can. You can get free HDR images from HDRI HAVEN. If you go into the WORLD shader editor, you can create a simple HDRI lighting setup:

The next thing I would recommend is downloading Blender Guru’s Blender Guru’s Uber Mapping node. It will make your tiled textures look much less repetitive. I would also recommend not plugging your color information directly into a Mix Shader. Always go through the correct shader node. For example, your Short Grass shader looks like this:

and renders like this:

By converting to HDR lighting and converting your shader to look like this:

The render looks much better:

You may want to think of adding bump and roughness information to the shaders as well (but that depends on how cartoonish you want it to look).

Your Main Plane shader also plugs color information directly into a shader node.

I would recommend changing it to something like this:

Notice that I’ve used the Uber Mapping node to hide repeat textures and I’ve changed your dirt mask to use Non-color data since it is a mask and not color information.

As far as your grass particle systems go, you may want to modify their orientation so they stick up properly from the ground. There are lots of videos on YouTube for how to do this properly. Making the grass smaller and adding some randomness to the particle size will also improve the look.

Your tree and leaves have problems similar to your ground. Your bark texture uses a principled shader, but your Specular and Normal channels are set to sRGB and not non-color data. You also need a Normal Map node between your normal texture and the BSDF. I would also recommend using the Roughness channel instead of Specular.

This is what your tree looks like using your shaders:

Your shader setup:

Recommended setup:

This is your leaf shader:

And this is what I recommend changing it to:

You’ll notice that I used a color ramp to create an alpha channel to isolate the leaves.

The resulting tree looks like this:

Let me know if this helps or if you need more information.

6 Likes

Hi. If you plan to use the scene in a game you want to focus on the Eevee renderer. It’s similar to game engines and a realtime renderer while Cycles is a ray tracing renderer, photorealistic accurate but slow.
A skybox is equivalent to the HDRI in Blender. They are used in Unity (for example) to have a sky background.
Materials that use the Principled BSDF shader should work in game engines.
Hope that helps :slight_smile:

2 Likes

Thank you so much for going through in that much detail! Here is what my render looks like now:

I followed your advice as best as I could but some of it I just couldn’t do. For example I actually did know about Blender Guru’s node for reducing the repeated look of tiled materials but that node is specifically made for Blender, we can’t use it in the game’s engine so there’s no point in trying it out here if it won’t even look that way in-game.

I kept one of the sun lights since I like how it looked but did download an HDR from the link you sent.

For some reason the foliage wasn’t working the same as yours but I got a pretty similar effect with this setting:
https://drive.google.com/file/d/1uhvJ2dv_7zeUvgAoT037Zinz6pYPDvg6/view?usp=sharing

I couldn’t find the multiply node you used for the tree trunk but I copied everything else. My result was a little janky but not too bad:
https://drive.google.com/file/d/1k3MwFPYb_nT3aYGYFXqLNy0H26mQU3FW/view?usp=sharing

The closest plot of land to the camera you can tell looks way better but the other two hills you can see how it looked as I was working on it at first. I increased the grass length to absurd heights like 30 feet just to cover the areas.
I’m very certain the main thing I need to do is just not use grass particles for those and just make a tiled material. The problem there is how to do it without Blender Guru’s node.

Thank you very much again for helping me!
[edit: new users can only post one bit of media so I needed to upload the other pictures to google drive]

Thank you! Yeah I was trying to do it with Eevee but for some reason blender wasn’t recognizing the alpha channels on my leaves when I did that. Thanks to Mark’s advice on nodes I was actually able to switch to Eevee and keep the alpha channels working. I’m not sure what the reason is but it worked!

It does look much better. I’m sorry I don’t know much about game requirements. Otherwise, I would be more helpful.

I noticed in your leaf shader that you have the color ramp set to “EASE”. “EASE” is a gentle gradient. If you set the color ramp to “CONSTANT” you will get a hard black/white contrast. That may be why you leaf shader didn’t quite work.

The MULTIPLY is a MATH node set to the Multiply function. The MATH node can be found under the CONVERTER group. I only used the MULTIPLY node to cut down on the glossiness of the tree bark.

One thing I noticed that may be affecting your particles is the scale of your objects. Many of your objects are not scaled to 1.0 This can cause all kinds of problems. I would recommend selecting everything in your scene (press the A-key while in object mode), Press CTRL/A to activate the APPLY pop-up menu and select SCALE. This will rescale all of your objects to 1.0. You may also want to apply Rotation to you objects (but that can affect particle systems, so be careful setting rotation for all objects.)

Since you can’t use the Blender Guru add-on to blend your tiles within the game engine, have you thought about using the add-on to bake a color map and then using the baked texture in your game?

The reason I used EASE is because CONSTANT wasn’t working as it did with you but the problem seemed to resolve itself strangely. I just need to bring the white slider close to the black one so it doesn’t key out the stick part of the leaves but it’s basically the desired output.

And I found the math node, thank you^^

Applying the scale is actually something that I’m not really sure what it does. I’ve heard of it but it doesn’t really make sense to me on what it does. I’ve applied it but it made no difference to the particles except for messing with the rotation of the weeds. I was able to correct this with the Phase of it though.

But yeah, the whole picture looks about the same as before, applying the scale didn’t seem to do anything.

Applying scale sometimes makes a difference and is generally a good idea since it avoids UV stretching and some other operations. Imagine starting with a cube and stretching it upwards (in object mode) to twice its original height. The Z-scale is now 2 while the X and Y-scales are still 1 (since the cube wasn’t stretched in those directions). Some operations are based on the scale. If the scale is not 1 some operations may be distorted since they are multiplying by something other than 1.

The rotation of the weeds is due to the local XYZ axis of the weed particle. Particles like grass and trees often work better if they are rotated (in edit mode) onto their side. Like I said, there are good tutorials on this. Blender Guru is always a good place to start.

Oh okay, it sounds like I need to apply scaling basically every time I change it. Or maybe just when I’m in object mode?
This set me on the right path for sure though. Mind if I ping you again in the end for feedback?

Scale only changes when you stretch in OBJECT mode. It doesn’t change when you change the size in EDIT mode.

I would be happy to help at any point. Good luck. Let us know how your project turns out.

1 Like

Ummm, if your game engine is different than Blender, all shaders presented here may be useless, just so you know. Unity and Unreal Engine don’t really import Blender shaders.

A lot of things are 1 for 1 between blender and unreal engine. We’ve already been through some of the early development, now we’re making it look aesthetically pleasing. Basically the only limitation is custom blender add-ons like Blender Guru’s stuff.

If you were to “pop a histogram” on this image, you’d see that it’s got a lot of too-dark areas … and it’s basically impossible for sunlight to fall this way. I’m perfectly fine with how you’ve modeled this, but the lighting is unrealistic. You show us that the sun is high in the sky and at the upper right hand corner of the frame. The position (and, temperature) of your lights needs to be consistent with that.