My workflow to create grass assets for realtime apps using Blender

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 พ.ย. 2024

ความคิดเห็น • 40

  • @BitRotStudios
    @BitRotStudios หลายเดือนก่อน +1

    Note that I was able to find a free substance designer node for the texture dilation step, in case that's helpful for anyone. Thanks for the tutorial, Ghislain - fantastic work as always!

    • @ghislaingirardot
      @ghislaingirardot  หลายเดือนก่อน

      Neat! Is it Hauke Thießen's artstation post? Thanks for watching!

  • @DannyArtNL
    @DannyArtNL 3 หลายเดือนก่อน

    Thanks for explaining everything step by step, really nice to see how things are made from nothing to a stunning field :).

  • @Dhieen
    @Dhieen 3 หลายเดือนก่อน +6

    "first delete everything, then add a camera" i wanted to hear "and add a cube, and a light" hahaha

  • @tashkas
    @tashkas 3 หลายเดือนก่อน

    Interesting, gonna give a shot for my foliage with this AOV technique, I usually just bake maps from HP to plane. looks like this way can save some time :) good stuff friend!

  • @chaosordeal294
    @chaosordeal294 3 หลายเดือนก่อน +2

    Watching this video made me very happy with that I have chosen to use a much simpler system to make much simpler grass.

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      You do you :D Happy for you

  • @bentzge
    @bentzge 3 หลายเดือนก่อน +1

    If anyone wants to skip the mip flooding and just do some simple flooding the easiest way I found was to use the inpaint node in the compositor in blender which will apply directly to the render so you don't have to adjust anything manually in another software. Also you can do your channel packing there.

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน

      I originally tried this but it's not working for me :( It does flood the image but creates an horrible black outline around the edges.

    • @bentzge
      @bentzge 3 หลายเดือนก่อน +1

      @@ghislaingirardot I believe this could be because you first have to unpremultiply the alpha and then apply it again after the inpaint. At least that's the setup that worked for me.

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน

      @@bentzge Roger that, I'll try. Ty for the suggestion :)

  • @LEHtJong
    @LEHtJong 3 หลายเดือนก่อน

    You could output the nodes directly in the Material Output -> Surface for easy previewing. Node wrangler has this automated with a hotkey

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      Oh, indeed! A little bit easier :) ty

  • @Emi-ok3ec
    @Emi-ok3ec 3 หลายเดือนก่อน +2

    Damn dude. You HAVE to get into Houdini. Watching you do this manually is quite painful, you could build quite the procedural setup to do all of this automatically. With your advanced knowledge of visual scripting and geometry you’d pick it up in no time. Thanks for the amazing video still, picked up quite a few cool tips. Keep it up!!

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +2

      Everything looks more tedious in a step by step tutorial :D It's not that bad. Do the steps once, save it in a template file and voilà. I can just get straight to business whenever I need to, and things can be improved/sped up with scripts. Blender's Geometry nodes can also offer a great procedural workflow, I just tend to stick to manual workflow for greater artistic controls. Houdini is great tho, for sure :)

    • @Emi-ok3ec
      @Emi-ok3ec 3 หลายเดือนก่อน +1

      @@ghislaingirardot Totally! And I've definitely been a victim of over-engineering procedural setups too many times. Crafting everything by hand feels really good too and some manual tweaks following your intuition just can't be replicated by noises and randomness :)

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      @@1famekouby yup geonodes is simply awesome.

  • @benjamhar
    @benjamhar 3 หลายเดือนก่อน

    Thanks a lot for this, all of your grass videos are amazing and it's clearly taken a lot of work/practice to learn all this. I tried using Houdini to make grass blades faster using curves and randomizing the bending and tapering of the blades. I'm sure you could do the same with geometry nodes in blender using curves or even using some of the hair grooming tools. Worth a look if you want to make some of the earlier steps less tedious.

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      Yup, definitely a solution. Depends on the artistic direction. For stylized rendering, many of my colleagues are not willing to give up the artistic control that a 100% manual approach gives you. For semi realistic/realistic, precise controls, emphasis on details & exageration isn't as important and a procedural approach can be great. Both methods have their pros & cons. Use the one you're most comfortable with.

  • @tkitart2200
    @tkitart2200 หลายเดือนก่อน

    can you explain morr kn the uv for LOD? It looks so abstract because there are just line.
    Also, how would Unreal link their material to LOD? Because the lod 3 is just a card so how would it read the opacity map?

  • @UltrasHQ
    @UltrasHQ 3 หลายเดือนก่อน +1

    Good video, I would love it to be in Spanish ❤

  • @Raphaël_Alegria
    @Raphaël_Alegria 3 หลายเดือนก่อน +1

    I buy the addon on sight

  • @9thCrusade
    @9thCrusade 3 หลายเดือนก่อน +1

    im just getting started with ue5 and in particular c++ in ue5 and when i look at ur stuff im like maaan fuk it no way i will one day be good enough to do that on my own hahaha

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      It really is within everyone's reach imho.

  • @DamienRamirez
    @DamienRamirez 3 หลายเดือนก่อน

    I was using "Real/Realistic" Grass & yeah you change the colour slightly & it turns into stylized, there is little difference. But Opinions: Do we need LOD's for grass, not saying use nanite, I'm saying if we WPO lower grass towards the ground at distance in theory & with distance culling on top it should stop rendering in Unreal Engine at a unnoticeable height? Meaning we could just use LOD0 & LOD1 for grass (Keep in mind I'm asking for opinions not stating a fact in anyway) & still get decent performance as they are instanced meshes? Asking as I'm noting a lot of issues with LOD-2/3 billboard meshes people use for grass & this seems like a easier solution because we can literally remove the bad/poor LODS Rather than re-making high triangle HQ grass in nanite?

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +3

      It really depends on a lot of factors... Grass culling distance/view distance/vertex count/targeted plateform/amount of instructions in the vertex shader etc etc. There's no right answer, grass is a fricking pain in the butt and every project has unique requirements and there are millions different tricks you can use to meet your targeted performance budget.
      Keep in mind instancing 'only' helps with drawcalls. It's great but doesn't help with the GPU potentially having to render literally millions if not dozens of millions vertices just to draw grass and that can become a huge bottleneck quite quickly. It is my understanding that even today's GPUs can be easily bottlenecked by vertex processing, possibly because the emphasis is put on pixel/compute shaders & tensor cores, not so much on vertex processing units.
      In all my testing, reducing vertex count and being super agressive with LODs (meaning lots of LODs & simple billboard at a distance) was the key to performant grass, plus limiting masked opacity overdraw & quad overdraw (see my stylized grass course for some example). Nanite is obviously a solution to not care as much about geometry, but you need a whole different mind set when it comes to foliage to account for the technical limitations Nanite comes with, geometry overdraw being the °1 concern. It's plenty doable but it's just a totally different way to do grass, and foliage for that matter. Fortnite is a good example. Working with a new technology often requires working with new constraints. Nanite is no different :)

    • @DamienRamirez
      @DamienRamirez 3 หลายเดือนก่อน

      @@ghislaingirardot Thanks for reply, I guess the straightforward way of more LOD's & adjust range for them is how I'm going to move forward with my issue.

  • @Dhieen
    @Dhieen 3 หลายเดือนก่อน

    why dont you use nanite? and no transparency with a mid poly grass mesh?

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +3

      Reasons I don't use nanite are explained in the video but you may go for it. You're mistaken if you think this is an easy-solution for grass. For the mid poly mesh, it's a solution I explored in previous videos. Here, I chose to explain the basics. Up to you to add a bit more vertices and get rid of the opacity map :) (which is often worth doing, yep)

    • @Dhieen
      @Dhieen 3 หลายเดือนก่อน +1

      @@ghislaingirardot ok good! thats what i tried for an open world like scene, detailed grass mesh (nanite) without opacity, spawned on the grass layer of the landscape, everywhere, and wind disabled in a distance (15000 for me) , but im curious to know what is the best method and if it can be optimized
      Id love to see you do videos on open world settings for grass + plants and trees if possible! inside ue5, and you explain why or why not nanite

  • @Dhieen
    @Dhieen 3 หลายเดือนก่อน

    For the height you can just create a gradient in the shader lol

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน

      In what shader? If you're talking about UE, you're mistaken. The height information I baked into a texture is gone once exported in the engine and can't be re-created. It's not the card 'Z height', it's the hi-poly depth data. Kinda useless in this video but as I said, it's an example of what can be done.

    • @Dhieen
      @Dhieen 3 หลายเดือนก่อน

      @@ghislaingirardot No in blender for the first steps! when you are doign the texturing of the grass blades
      You used a cube with a weird technique, but you can just do a gradient on an axis, where close to the camera is white and the limit of the grass blade (far from the camera) is black
      Thats how i render a height map from like a tiling material inside blender

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      @@Dhieen How so? With a Texture Gradient node? Afaik, you still need to use a Texture Coordinate node to get the position data to generate the gradient from, no? And using a second object is great for visualization and ensuring all objects share the same [0:1] range (or have a different one), imho. But I could be missing something here, lemme know.

    • @Dhieen
      @Dhieen 3 หลายเดือนก่อน

      @@ghislaingirardot Ok i see, did you try texture coordinate Generated > mapping (rotate 90 on Y axis) then you scale on the Z axis, plug that to a gradient texture?

    • @ghislaingirardot
      @ghislaingirardot  3 หลายเดือนก่อน +1

      @@Dhieen The Generated pin creates a bounding box per object so that obviously has issues when you want to create a unified [0:1] height gradient for multiple objects that all have different bounding boxes. Hence why I'm using a separate Object.