Again, I never thank you and all the others who break this stuff down, enough. Always appreciated. Knowledge-givers are heroes.
@TechArtAlex4 ай бұрын
Thanks for the support!
@Stygmire4 ай бұрын
@@TechArtAlex And I saw you did take a nod to preserving-length of the blade. Thank you!
@TechArtAlex4 ай бұрын
@@Stygmire Definitely! I'm glad my idea worked and turned out reasonably simple to implement. I think the formula would need to change for higher order (ie cubic) curves but I was really happy with the results here. Since a lot of what I'm doing is just adapting great work that was already done by Sucker Punch, it's nice to be able to make a meaningful original contribution.
@mitchellhansen4 ай бұрын
Thanks for making these videos. The performance gain by making grass in the manner makes it viable for use in VR archviz.
@TechArtAlex4 ай бұрын
Thanks for watching! Yeah, often works a lot better than alpha masked grass these days.
@mimicry58134 ай бұрын
Thanks for these video series. Can't wait for another one. Looks wonderful.
@TechArtAlex4 ай бұрын
Thanks!
@haoyuwu59304 ай бұрын
Thank you for such great content. As a new tech artist, your stuff are really helpful!
@TechArtAlex4 ай бұрын
Thank you! Glad to hear it's been helpful.
@aryankissoondoyal12814 ай бұрын
You are awesome! Your videos are really well made in terms of proper explanation and this technique of creating grass is so much better and it even look better than the masked ones which can appear blurry and shimmery sometimes. I am really looking forward to this series!
@TechArtAlex4 ай бұрын
Thanks! Still lots of stuff to go over.
@BooneyTune4 ай бұрын
This looks great. Really liking the series and looking forward to the optimization
@TechArtAlex4 ай бұрын
Thanks!
@AaronFhd4 ай бұрын
Looking great
@TechArtAlex4 ай бұрын
Thanks!
@vaanidel21173 ай бұрын
This is insane. EDIT: ha my dumbass should've just watched the vid first. Nice stuff here!
@fania2k419 күн бұрын
Great info thank you. Lots to learn here, I was able to have each blade rotate via RotateAboutAxis, while keeping the blade shape intact. Similarly I tried to add a push away functionality. Instead of rotating, I want to move the blade a bit when the camera is passing, like a wiggle effect. Modifying the X and Y tends to bend and stretch too much, kind of like the Tilt function you made, but distorts it way too much. I'm passing the main WPO path and adding to the modification. I'm applying a sphere mask so I can use that to push away.
@QuickPixls4 ай бұрын
Man you are the absolute best! Like for real! Finally some Ghost Of Tsushima stuff man Been trying for ages to get it like yours Like I thought we do need to use the compute shaders, so I went on learning the rendering pipeline of unreal just for that! only if I gave it a 2nd thought Thank you so much for the videos
@TechArtAlex4 ай бұрын
Yeah, I wish Unreal made compute shaders easier to integrate. Niagara has kind of become a hacky alternative to compute shaders. But I think PCG will be able to deliver most of the functionality they were able to with their computer shaded. Not sure which will perform better, but at this point I'm already rendering 6x as many blades of grass as the original release, even without optimization so I think it's safe to say this can work well enough.
@christopherfrancique99124 ай бұрын
looks great
@TechArtAlex4 ай бұрын
Thanks!
@dudeok8457Ай бұрын
Thanks for this great tutorial, I have a question is it possible to rotate the grass facing the wind direction / or certain angle , if yes could you tell me how and thanks again for this great tutorial.
@TechArtAlexАй бұрын
Yes. After all other WPO is prepared, you can use the rotate about axis node. You will also need to rotate the normal vectors in the shader in a similar manner. Here is an example node setup: i.imgur.com/TlROHY1.png
@dudeok8457Ай бұрын
@@TechArtAlex Thanks dude this is exactly what i needed thank you
@TomDenny-s7n3 ай бұрын
Thank you so much for this series. I have been trying to implement the wind system shown in this video to my grass meshes (from videos before) and it just disappears and I think I may be missing something. Any ideas? Or maybe a screenshot of the wind shader that I could check mine against?
@TechArtAlex3 ай бұрын
A disappearing mesh may have something to do with the mesh bounds, or just displacing the mesh far away accidentally. Make sure you're only applying the wind to p1 and p2 and not p0.
@TomDenny-s7n3 ай бұрын
@@TechArtAlex Ah, Thank you so much for the quick reply. It turns out because of my messy code I was applying wind to P0 not p1. Once again thank you for this brilliant series.
@Vortex-jk7lbАй бұрын
Is it possible to dynamically change the grass facing direction based on wind and thanks for the tutorial.
@TechArtAlexАй бұрын
Yes, you can use the rotate about axis node to rotate the grass in the shader based on wind and/or an interaction system. You will need to apply this rotation after the bezier curve is constructed. Also don't forget to rotate the normal vectors too.
@Vortex-jk7lbАй бұрын
@@TechArtAlex Thanks for quick reply
@Vortex-jk7lbАй бұрын
@@TechArtAlex I tried it. it rotates the mesh but the shape of the grass doesn't stay the same it turns back to a plane any fixes if possible and thanks again.
@TechArtAlexАй бұрын
@@Vortex-jk7lb I made an example node setup i.imgur.com/TlROHY1.png Remember that you will also need to rotate the normal vectors in the shader when rotating a mesh in shader. See my video about how to rotate normals if you need help with this.
@Vortex-jk7lbАй бұрын
@@TechArtAlex Thanks man it works good stuff.
@Cloroqx4 ай бұрын
Does this approach play well with Nanite + VSM? With it being an opaque shader, I feel as it should work nicely.
@TechArtAlex4 ай бұрын
As of now I find it works a bit better with nanite disabled. VSMs would be invalidated every frame, which isn't ideal. One advantage of non-nanite geometry is that you can control shadow casting per LoD. This means you can set VSM up on just the close grass, but use contact shadows on the distant grass for much better performance with very little quality loss. Meanwhile nanite draws into VSM regardless of distance, and both the main nanite and VSM nanite passes will have lots of overdraw with so many small meshes. Being opaque, it does perform significantly better than a masked version would.
@Cloroqx4 ай бұрын
@@TechArtAlex It's probably slower due to overdraw or WPO. Contact shadows should be good enough regardless. Thanks!
@SpaceShrimp4 ай бұрын
nice ! but maybe controlling the blade curvature based on the intensity of the wind could create a better result?
@TechArtAlex4 ай бұрын
That is effectively what this is doing. The sine wave is moving the tip and midpoint up and down, which will increase and decrease the curvature of the blade depending on how intense of a wind swell it is hit by. This is most noticeable when I set the tip wind strength to 0, so only the curvature of the blade is changing and not the overall tilt. Naturally you can tweak the specifics of the implementation, but the core methodology is that the wind should be animated by shifting the control points, which is what defines the curvature at the end of the day.
@SpaceShrimp4 ай бұрын
ok cool ^^ good job, you are. great inspiration ! :)
@TechArtAlex4 ай бұрын
@@SpaceShrimp Thanks! Glad you're enjoying the videos
@israelanthony3129Ай бұрын
I keep getting an issue with swell values causing the grass to rotate/position itself beneath the ground. Do you know what might be causing that? It seems to also only output one color to the debug rather than the red/blue/green I expected. Maybe there has to be something with my noise texture?
@israelanthony3129Ай бұрын
I realized that I was sampling my nosie texture as a Color and not a Linear Color so that caused my swell values to go wrong. Still having the problem of my blade's tip being positioned beneath the ground making half of it glitch into my landscape.
@TechArtAlexАй бұрын
Is the wind pushing the tip beneath the ground or is it beneath the ground even when the wind is off? Keep in mind the wind is basically bobbing within a predetermined range of motion defined by the texture, so you will need to make sure that the rotation determined by the grass spawner doesn't place part of that range below the ground.
@israelanthony3129Ай бұрын
@@TechArtAlex When I turn the swell off, it flutters normally and stays above ground in the preview within the material editor. When I have it on, it sends the tip below the ground, and I'm not sure where my calculation goes wrong to make that happen. I keep wondering if my texture is the issue because the flutter works in isolation and the swell seems to be calculated as yours is, which leaves only my texture's data to be different?
@israelanthony3129Ай бұрын
At high values the swell flattens the blade, but my tip seems to be at (1, -1) instead of (1, 0)
@TechArtAlexАй бұрын
@@israelanthony3129 It's possible it could be the texture although that seems unlikely. You could test with the one I'm using, it is just part of the default engine content.