2
$\begingroup$

I am trying to get grass that look like the one in Dauntless - Fortnite - the Witness - Zelda:botw and many other stylized games. It is flatshaded, but cast no shadows and recieves shadows from other objects. And it also gets brighter when the light shines from above.

Here are some examples:

from the Indiegame woodbound (gif)

from the Witness stylized grassshader in the Witness

I managed to reproduce it in Blender internal render: No texture, only planes, lightsource is a sunlamp. The Vertexnormals of the planes are looking straight up (blend4web addon helped me there). achieved this style in Blender Internal, but not in Cycles

In Cycles I tried mixing up a diffuse + translucent shader, edited the vertexnormals aswell, but it doesnt get the flatshaded look.

It only looks good, when all the planes face the same direction, or the light source is mainly hitting the Front. If the camera is looking at the plane at an angel, the color gets darker. If the camera looks at the backside of a plane its dark.

I searched the web for a view weeks now, the only thing that helped (and let me recreate this effect in blender-internal) was, to let the vertex-normals of the plane face straight up.

Maybe you guys have some Ideas for this stylized shader in Cycles :)

$\endgroup$
  • 3
    $\begingroup$ You have better chances of getting answers if all of the information is visible in this page, instead of having users go through many links just to understand what you want to do. Please use the edit link at the bottom of your post (i.stack.imgur.com/lXFuK.png) and use the tools from this site to upload images so that they are displayed as part of your question. See How to upload an image to a post? $\endgroup$ – cegaton Jun 18 at 7:07
  • 1
    $\begingroup$ if your only problem is that the grass goes to black when you rotate the sun it sounds like you just need to fix your normals (if the grass blades are not single sided) or add a solidify modifier (if the grass blades are single sided) $\endgroup$ – Steve Jun 18 at 7:13
  • 1
    $\begingroup$ Try mixing in an emission shader, that should work. $\endgroup$ – Ferdar Jun 18 at 15:50
1
$\begingroup$

Since the suggetions are not working (still getting darker colors of some grassbillboards) :( , I managed to build a workaround.

The downside is:

  • it doesnt work for moving light/objects, because the shadows are baked. ( or is there a way to bake a texture for every single Frame).
  • it also inst an accurate shadow, because the color stays the same on the Z axis. (So it works best if the grass inst tall)
  • for large scaled scenes you need huge textures to bake on (10k*10k pixels and up).

How its done:

Bake shadows on a white plane, were your grass is emitted from. Take the baked texture as an factor between a bright color (light) and a dark color (shadow). Instead of using the hair particle system, use the emitter system, because it let you project the texture of the emitterplane onto the particles.

But its easier to explain the idea and technik behind this workflow with a picture:

flatshaded grass with shadows workaround

So this question is half solved, thanks so far :D. I am also happy to see further ideas to solve it completely.

$\endgroup$
  • $\begingroup$ Better be using hair shader $\endgroup$ – Yvain Jul 20 at 11:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.