HOUDINI TUTORIAL: Plant Growth Setup (Redshift & Quixel Megascans)
Вставка
- Опубліковано 21 сер 2024
- In this tutorial I am going to show you how to create a custom/controllable growth setup using Houdini, Redshift and Quixel Megascans.
This Tutorial was inspired by the work of MarkusGonser3D.
Check out his Channel if you want to make this in Cinema4D:
/ @3dbonfire
Consider supporting me on patreon if you want to see more of these and want to gain access to the scenefile created in this video:
/ pascalwiemers
Check out my instagram if you want to check out my work :)
/ pascalwiemers
Thank you for the tutorial! I appreciate the fact that u took the time to do this while explaining everything
this tutorial is longer than any relationship i had
haha :D
Great, if i can pointint out to something strange in your workflow, is when you offsetting and subtracting the infection, i thinks is better to remap by vex with chramp or vop with Ramp Parameter, so with this curve, you dont have to blur after and have better control over the shape of this crease multiplier.👍👍
That can also work yeah! :)
@@PascalWiemers bro without vex these can do that
Thank You very much, Pascal!
If anyone is getting stuck at 18:35 , go check and make sure your first Attribute Wrangle is set to group "start". Otherwise you may see a white grid and be very confused.
my first attribute wrangle is set to group start but after that also growth is not happening,do you know any reason why
Verry great tutorial. Thank you so much👌🏾👌
Super Cool Tutorial.
Woah keep going!
this tutorial is really helpful, thank you!
The tutorial is great year after :D. That's awesome. Can i somehow make on my own what the quixel scattering nodes does in order to use my own plant assets ?
Oh for sure! That’s what’s awesome about Houdini :) (the quixel node is also nothing more than a hda )
@@PascalWiemers You 're awesome. Thank you
here we go if any code issue
code:
if(f@infection < 1){
float MaxDist = chf("Max_Distance");
int MaxPoints = chi("Max_Points");
int Array[] = pcfind(0, "P", @P, MaxDist, MaxPoints);
float growth = 0;
foreach(int ArrayCounter; Array){
float infectionGrowth = point(0, "infection", ArrayCounter);
growth += infectionGrowth;
}
float div = growth/len(Array);
f@infection += div;
}
nice
genius
You know, it's interesting but everything you type is very difficult to read, everything on your UI is just as small as on my 4K TV screen (I regret so much buying that, it brought only problems with many programs)
In my next tutorials I will make sure that everything is clearly visible! Sorry for that
Yes ! Code is work !!!!
Thank you for this tutorial - it's gorgeous! I have some problem in the coded passage (I assume) as I cannot see any growth (the growth is happening around min18:35 in your video) . I've tried to follow the video until this point twice but no success.
Would you mind taking a look at the code and see if anything is wrong?
if(f@infection < 1){
float MaxDist = chf("Max_Distance");
int MaxPoints = chi("Max_Points");
int Array[] = pcfind(0, "P", @P, MaxDist, MaxPoints);
float growth = 0;
foreach(int ArrayCounter; Array){
float infectionGrowth = point(0, "infection", ArrayCounter);
growth += infectionGrowth;
}
float div = growth/len(Array);
f@infection += div;
}
Many many thanks!
It looks like the code is fine so there must be something wrong somewhere further up in the chain. Do you have enough points? Are the settings for PC find (max dist max points) reasonable etc
@@PascalWiemers Same issue, double checked everything w/ no luck :\ Wonder what happened (19.0.561)
@@joshchavez5504 as far as I know it should all still work
@@joshchavez5504 Check the first Attribute Wrangle and make sure the group is set to "start". Missed this first time, had to go back!
it's the attribute warangle in the solver, make sure you haven't set the group 'start' if you can only see a few red point as a circle.(not English native speaker, wish you know what i mean)
i found it funny that ur banderole at the start contains the header "Plant Grwoth" :p
some easter eggs for you ^^
I have a question, is possible to animate the growth of the plants and then apply all this ? because it feel like its just scale animated. good tutorial tho
Sure in Houdini everything is possible if you are creative enough and this basis should give you everything you need. You could trigger the growth animation with the infection attribute I suppose on the plant level. Definitely ways to get that done :)
this is a great tutorial! I am having one little issue, at frame 142 I am getting a secondary circular growth that seems much brighter than my attribute paint node when it is doing its growth thing, So it seems to grow fine until frame 142 then all of a sudden I get a second more noticeable growth but it is just a circular pattern that fills the grid. Got any ideas why this might be happening, thanks again btw
it's an error after I got "attribute blur" @31:00, nothing showed up. why? houdini 19.0.383 used.
danke!
Hey Pascal,Iloved how the end result is looking .I am following your video to make something similar however the point growth is not happening for me as it is growing in your video around 18:35.Can you please let me know if I'm missing any step.Code seems fine to me.
Hi, Very nice tutorial, thanks a lot !! Is there a way to do this on a deforming mesh. I want to do it on an eroding heightfield, and I'm quite struggling with it. hehe
Great tutorial but I have some problem in the coded passage inside the solver node,
it says there's an error.
but I don't know...this is what I wrote
if(f@infection < 1){
float MaxDist = chf("Max_Distance");
int MaxPoints = chf("Max_points");
int Array[] = pcfind(0,"p",@p,MaxDist, MaxPoints);
foreach(int ArrayCounter; Array){
float infectionGrowth = point(0,"infection", ArrayCounter);
growth += infectionGrowth;
}
float div = growth/len(Array);
f@infection += div;
}
hmmm from just briefly looking at your code the Ps should be capitalized so "P" and @P
Dear Pascal thank you for sharing your knowledge with us. Through following your guiding process, I stumbled upon rendering white spheres in Redshift when trying to motion blur the growing plants through enabling 'create as Particles' on the Redshift-OBJ in SOP-level, and enabling 'Particles/Instances Motion Blur' on the ROP-level. Would you know why this could be and how to possibly resolve this to motion the plants correctly? Thank you and all the best to you.
I am currently on holiday and far away from a pc I can use to check these settings. But render as particles should not be checked. I don’t think my tutorial mentions that at any point. For the right rendering settings check out my scatter other scatter tutorial for instancing.
thank you for the video! I am kind of stuck at 18:32. the grid stays white all along, and there is no expanding red zone.... what am I missing?
also, the attribwrangle2 @cd = set(f@infection, 0, 0); the = seems to not like it (implicit cast from vector to float..??) sorry to bother, I am really new to Houdini. thank you anyway for the nice video!
Well CD is a vector so it should be given 3 values. Set f@infection says that the infection value is a float not a vector. In this case houdini defaults to writing all the CD values with the same float value so it still works. If you want to be precise and not have that error message just specify @Cd.r for the red channel for example :)
@@PascalWiemers ahhhhhh! gotcha. ok, now all the points are black like in the video. the infection (the growth) still doesn't seem to work, I don't know why. I am going to do it again from the beginning... thank you millions!
@@PascalWiemers hello again Pascal. I am sorry to bother : I retried the tutorial over again, but I am stuck at the growth of the infection (basically at 18:41). any idea why? I really wanna make this to work!!! is it possible to download somewhere the original file so that I can compare with mine? or if I put mine somewhere, is it possible to have a look? please!! thank you!
@@lostshun well the file is available on patreon but u can send the file over and I can maybe take a look if I find some time. I am on vacation but will be back in front of a pc on Friday/weekend. info@pascalwiemers.com
@@PascalWiemers oh my god! really? thank you thank you thank you! I actually didnt know that I could download from Patreon. I am going to do that. and if I can't fix it, I will let you know! thank you loads!
Hey man tutorial is great just had one question that maybe you could shed light on. Is there anyway I could use a popsnetwork as the starting set of particles that begin the growth and these different particles sprinkle onto the plane to begin their own localized infection. I tried just grouping the stream of particles and pluggin right in but it seems the solver only initializes the very beginning first particles and doesn't update the group as the sim goes on even tho everything before that works as it should.
in short how could i adjust your infection solver to allow for the collision of pops onto things to begin spreading/infection
Yeah you should be able to get this going with a sop solver somehow (the sop solver takes geometry on every frame) but u might have to build the growth solver into a dop solver with the pop solver. Not sure what the best way here would be (would have to play around with it myself).
@@PascalWiemers one more question, is there way to make the plants grow according to direction of the normal as it stands right now they only grow upward sorry its a basic question thank you!
as in they dont grow say on sides of walls and such
never mind some tweaking in the quixel scatter node fixed it for me thanks again!
First of all, thanks for your efforts, it was a great tutorial.
Quick question please, more for Beginners like me.
Couldn't I just skip the whole solver and attribute wrangle setup, and just animate my group bounding box?
I know I will loose the procedural workflow and a few other things... But wouldn't that work??
Thanks again
Of course! There is also the group expand node which u can try out! :) There are so many ways to do things so go ahead and pick your poison
hey great tut..when i try to render the plants they dissapear. I have pack instances checked in copy node & Instance SOP level packed primitives. Any Ideas
So I had this thing that when I hide or unhide an object while having an ipr render running that the plants would just disappear. If that's what happening to you just restart houdini. Otherwise I'm not quite sure could be many things. Hard to tell without seeing the scene :/
@@PascalWiemers hey thanks it worked 🙏🏽
where is "quixel_simple_scattering" "quixel_simple_motion" and another HDA!? i buy your patreon file but nothing at all what is this?
I am legally not allowed to distribute those assets. You have to have quixel installed and setup...
Cool setup but can we rendering this in ue4 with alembic or another solution?
exporting an alembic of this whole animation would probably be way to large for unreal to handle. I am not an expert with unreal so I can not propose a method on how to translate this to unreal. You will have to do your on research on this :) But I will say however that the basics principles of using color data to drive scale might apply to unreal. So you could take the basic principles that I am using here and try to reverse engineer it in unreal.
@@PascalWiemers Thank you for the reply. Im waiting more tutorial from you. Cheers!
@@AdenomamusicI'm currently quite busy with freelance work but hopefully will have some time again soon!
General Kenobi?
in the new update, the Attribute noise kinda changes where the Remap Noise is gone. Is there any alternative or changes that might help?
How about if we want to add another plant?
I think there is a new node specifically made to edit attributes after the fact so look for one of those!
@@andrewleonardus7377 just use another plant! It really does not matter what u scatter. Should work with any geo
10 minutes of coding scared me... Beyond my understanding...
what a long tutorial
I'm stuck at 16:45 the wrangler node says that is an error but I really can't figure out what is it, everything looks like yours, idk what i'm doing wrong :c
Error
Invalid source /obj/grid1/solver1/d/s/pointwrangle1/attribvop1
Error: Error in VOP 'snippet1'.
Warning: Errors or warnings encountered during VEX compile:
/obj/grid1/solver1/d/s/pointwrangle1/attribvop1/snippet1: Syntax error, unexpected identifier, expecting ';'. (4,9)..
my code is like this:
if(f@infection < 1) {
float MaxDist = chf("Max_01distance"),
int MaxPoints = chi("Max_Points");
int array[] = pcfind(0, "P", @P, MaxDist, MaxPoints);
float growth = 0;
foreach(int ArrayCounter; Array){
float InfectionGrowth = point(0, "infection", ArrayCounter);
growth += InfectionGrowth;
}
float div = growth/len(Array);
f@infection += div;
}
float MaxDist = chf("Max_01distance"), should be float MaxDist = chf("Max_01distance");
@@PascalWiemers oh my bad, I've corrected this but the error still happen :c