Groundworks

TL;DR: Want to fix series of mistakes in a big project.

What I’m going to share with you is a thing that started as a quick test of Blender features when I started learning it around two years ago. The project evolved into something much bigger than what I expected. During the process, due to my lack of experience I’ve made series of bad decisions about the technical side of it. I want to finish the thing, but recently I hit couple of walls, so any form of constructive criticism and help is greatly appreciated. Abandoning the project is out of the question.

The final goal of the project is to render it in a large resolution – around 21000px in width and print it. I know what I’m doing regarding that part.

The biggest challenge right now is focused around one mesh sculpted in Dyntopo and shaded with pretty heavy shader. The mesh is relatively big – around 6mil poly. The shader is designed in a way that can detect mesh height, pointiness and AO – so basically with sculpt brushes you also painting shaders. The more you sculpt – the better it looks:



It was all cool until I decided to throw displacement in. Due to the nature of Dyntopo its impossible to use displacement on flat surfaces with good result without massively increasing the size of the mesh. This makes Dyntopo practically irrelevant at this point:

Green – dense, red – sparse mesh.
This is number one problem – how to keep the sculpted detail, remesh the whole thing, be able to sculpt the final details at the end, and finally for render - use adaptive subdivision and displacement.
I want to save as much work that is already done and maintain as much flexibility as possible.

But that’s just the tip of the iceberg.

The use of displacement is dictated by the vegetation that I want to scatter on the ground. So the second challenge that is keeping me awake at night is the shader design. Or more like the lack of it. For the quick illustration here is the tweaked version of it on a different, simplified mesh:


The mesh underneath is pretty basic:

In that part the biggest issue is the control over general moss distribution. Thanks to the feedback from this thread:

I was able to achieve partial control, but it’s far from what I want. The solution I’m after is the ability to interpolate between different shapes and kinds of textures fluently, so the blobiness of the moss is gradually changing into the shape of the dark patches of terrain. I hope this picture illustrate it better:


In blue – hypothethical terrain line, pink – interpolated layers in between.

And it kinda works:


The problem is that on original mesh it doesn’t look so good due to Dyntopo. The plan is to fix the mesh first and then tweak the shader when the displacement has the proper resolution to work with.

Render below is a half-assed solution when the moss is applied on a second mesh beneath the main one. The displacement on second mesh is pushing moss through the ground above. I’m not happy with the result at all, but many things could potentially be fixed that way:

The last thing begging for attention is the rock shader. It’s the oldest part of the project, so the quality isn’t there.

That’s basically it for now. Feel free to leave your feedback.

3 Likes

First off, I just wanna say your project is looking amazing!

Have you considered using the multi resolution modifier? It’s similar to the subdivision surface modifier, except it allows you to sculpt. If you want the sides to have a different displacement than the tops, then you can use this node setup to mask out the sides. In the mix shader, plug in your two displacement maps, one for the vertical surfaces and one for the horizontal surfaces. You can use the color ramp to adjust the falloff.

While the displacement moss looks awesome, you might have an easier time using a particle system because it’d require less geometry. In the particle tab, you can assign a vertex group to the density & length of the moss, which creates a blend between the moss and floor texture. Another option is to put a texture mask in the factor input of a mix rgb (for displacement) & mix shader node (for mixing the moss and floor texture).

1 Like

Thank you, much appreciation.

Not until now. At the begining multires seemed to me to complicated, then after some research turned out it’s not working properly. Don’t remember what exactly was the issue. So I avoided it. But you might be right. Especially that seemingly it was recently fixed.

About diplacement masking, yep I know. Mistake was disregarding displacement for too long when making whole shader and now it will take some work to make it look good. The shader when you simplify the layout is managable, and I’ve seen bigger and more complicated ones posted here. Nevertheless adding another pipe for displace that is playing nicely with the color will be a challange. Here is ungrouped version:


The section dedicated to ground is at the bottom. The main ground pattern is generated by the series of Muskgrave textures with different offset applied to every one - big frame in the middle. Thing I found is that this section is driven by AO input that is not very firendly with displacement by some reason. AO is clipping large parts of Muskgrave. It looks like bad quality gradient with stepping - that destroys nice outline of the moss displacement.

Well you are reading my mind, because I had that plan long time ago. Here is why it won’t work:

TL;DR: particle distribution cannot be driven by shader data.

Detailed:

  1. Particles are driven by either: vertex data or textures from legacy Texture Editor which has nothing to do with Shader Editor.
  2. Moss overall shape must play nicely with the shape of existing terrain/shader.
  3. Moss detailed shape (outlined on the ground) better be procedural - for control, flexibility and detail.
  4. Procedural approach does not play nicely with hand painted weights.
  5. Hand painting weights on 6 mil mesh that you are in the middle of sculpting?
  6. When you change even one simple shader parameter you need to paint weights all over!
  7. Same goes for baking.
  8. Vertex Paint on 6 mil mesh is A JOKE. Try it. (and remember you still didn’t finish sculpting! :^) )
  9. Straight NO.

I’d seriously consider using hand painting masks in this project if the performance was there. Those are my biggest mistakes in this project. Not knowing how the existing pipeline works and where are Blender’s limitations.

That’s what you can see on next-to-last render. If the MutiRes, or anything else can fix the mesh this will be the direction I’ll go with it. I can deal with mesh size, and final render will probably be done on renderfarm. Thank you for the MultiRes tip. That might potentially save a lot of work.

In ideal world I’d use particles to scatter grass-like strands across larger moss blobs made out of much simpler procedural displacement. That would save mesh size, troubleshooting and render time.
Right now, without vertex groups you can do it only if the moss mesh is detached from ground/rock.

1 Like

Quick update.
MultiRes worked! Thanks again @BlenderSplendor!

Had some trouble with finding right polycount, but finally it’s done.
After figuring that out I spend almost two days fixing the mask and displacement for moss. Unfortunately that battle is lost. I’m giving up the idea of having rock+ground+moss in one shader.
I’ll model moss separately and place it by hand. That way I can use particles and displacement at the same time.

But on the bright side there is some progress in rock department:


The displacement is pretty crude, so the next step is to breake the uniformity of the detail and give it more dynamic look.

1 Like

Big update.
For the first time I’m showing the whole composition. There is still A LOT of things to do. Basically the only somewhat-finished thing is the rock shader.


2 Likes

Making some progress with the smoke: