HOUDINI TUTORIAL: Plant Growth Setup (Redshift & Quixel Megascans)

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 มิ.ย. 2020
  • 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

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

  • @mdhzq203
    @mdhzq203 4 ปีที่แล้ว +2

    Thank you for the tutorial! I appreciate the fact that u took the time to do this while explaining everything

  • @sbarry3036
    @sbarry3036 ปีที่แล้ว

    Verry great tutorial. Thank you so much👌🏾👌

  • @yeqinzhao2200
    @yeqinzhao2200 3 ปีที่แล้ว

    this tutorial is really helpful, thank you!

  • @HideDesignSnc
    @HideDesignSnc 3 ปีที่แล้ว

    Super Cool Tutorial.

  • @massimobaita7178
    @massimobaita7178 3 ปีที่แล้ว

    Thank You very much, Pascal!

  • @justdr7223
    @justdr7223 ปีที่แล้ว

    Woah keep going!

  • @MM-cn1wk
    @MM-cn1wk 3 ปีที่แล้ว

    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

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

    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

  • @deepikanegi_
    @deepikanegi_ ปีที่แล้ว

    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.

  • @freddybreed
    @freddybreed 2 ปีที่แล้ว

    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.

    • @PascalWiemers
      @PascalWiemers  2 ปีที่แล้ว

      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.

  • @kyozhan7172
    @kyozhan7172 ปีที่แล้ว

    it's an error after I got "attribute blur" @31:00, nothing showed up. why? houdini 19.0.383 used.

  • @lei.1.6
    @lei.1.6 4 ปีที่แล้ว +19

    this tutorial is longer than any relationship i had

  • @printlive7975
    @printlive7975 2 ปีที่แล้ว

    Yes ! Code is work !!!!

  • @antoniopepe
    @antoniopepe ปีที่แล้ว +1

    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.👍👍

    • @PascalWiemers
      @PascalWiemers  ปีที่แล้ว +1

      That can also work yeah! :)

    • @VISHNU.S_143
      @VISHNU.S_143 3 หลายเดือนก่อน

      @@PascalWiemers bro without vex these can do that

  • @aymenselmi8318
    @aymenselmi8318 4 ปีที่แล้ว +2

    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

    • @PascalWiemers
      @PascalWiemers  4 ปีที่แล้ว +2

      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 :)

  • @evmlionel
    @evmlionel 4 ปีที่แล้ว

    danke!

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

    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 ?

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

      Oh for sure! That’s what’s awesome about Houdini :) (the quixel node is also nothing more than a hda )

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

      @@PascalWiemers You 're awesome. Thank you

  • @strachanmedia5154
    @strachanmedia5154 ปีที่แล้ว +1

    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.

    • @deepikanegi_
      @deepikanegi_ ปีที่แล้ว +1

      my first attribute wrangle is set to group start but after that also growth is not happening,do you know any reason why

  • @LIdris17
    @LIdris17 3 ปีที่แล้ว

    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

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว +1

      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 :/

    • @LIdris17
      @LIdris17 3 ปีที่แล้ว

      @@PascalWiemers hey thanks it worked 🙏🏽

  • @Mulnader
    @Mulnader 3 ปีที่แล้ว

    General Kenobi?

  • @sinsterz3586
    @sinsterz3586 2 ปีที่แล้ว

    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.

    • @sinsterz3586
      @sinsterz3586 2 ปีที่แล้ว

      in short how could i adjust your infection solver to allow for the collision of pops onto things to begin spreading/infection

    • @PascalWiemers
      @PascalWiemers  2 ปีที่แล้ว +1

      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).

    • @sinsterz3586
      @sinsterz3586 2 ปีที่แล้ว

      @@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!

    • @sinsterz3586
      @sinsterz3586 2 ปีที่แล้ว

      as in they dont grow say on sides of walls and such

    • @sinsterz3586
      @sinsterz3586 2 ปีที่แล้ว

      never mind some tweaking in the quixel scatter node fixed it for me thanks again!

  • @matteocasotti2422
    @matteocasotti2422 4 ปีที่แล้ว +1

    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;
    }

    • @PascalWiemers
      @PascalWiemers  4 ปีที่แล้ว +3

      hmmm from just briefly looking at your code the Ps should be capitalized so "P" and @P

  • @pavanraju575
    @pavanraju575 3 ปีที่แล้ว +3

    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;
    }

  • @andrewleonardus7377
    @andrewleonardus7377 3 ปีที่แล้ว

    in the new update, the Attribute noise kinda changes where the Remap Noise is gone. Is there any alternative or changes that might help?

    • @andrewleonardus7377
      @andrewleonardus7377 3 ปีที่แล้ว

      How about if we want to add another plant?

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว

      I think there is a new node specifically made to edit attributes after the fact so look for one of those!

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว

      @@andrewleonardus7377 just use another plant! It really does not matter what u scatter. Should work with any geo

  • @lostshun
    @lostshun 3 ปีที่แล้ว +1

    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!

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว +1

      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 :)

    • @lostshun
      @lostshun 3 ปีที่แล้ว

      @@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!

    • @lostshun
      @lostshun 3 ปีที่แล้ว

      @@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!

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว

      @@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

    • @lostshun
      @lostshun 3 ปีที่แล้ว

      @@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!

  • @laetitiamorlie5853
    @laetitiamorlie5853 2 ปีที่แล้ว +2

    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!

    • @PascalWiemers
      @PascalWiemers  2 ปีที่แล้ว

      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

    • @joshchavez5504
      @joshchavez5504 2 ปีที่แล้ว

      @@PascalWiemers Same issue, double checked everything w/ no luck :\ Wonder what happened (19.0.561)

    • @PascalWiemers
      @PascalWiemers  2 ปีที่แล้ว

      @@joshchavez5504 as far as I know it should all still work

    • @strachanmedia5154
      @strachanmedia5154 ปีที่แล้ว

      ​@@joshchavez5504 Check the first Attribute Wrangle and make sure the group is set to "start". Missed this first time, had to go back!

    • @MSchimmer
      @MSchimmer ปีที่แล้ว

      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)

  • @Adenomamusic
    @Adenomamusic 3 ปีที่แล้ว

    Cool setup but can we rendering this in ue4 with alembic or another solution?

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว

      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.

    • @Adenomamusic
      @Adenomamusic 3 ปีที่แล้ว

      @@PascalWiemers Thank you for the reply. Im waiting more tutorial from you. Cheers!

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว

      @@AdenomamusicI'm currently quite busy with freelance work but hopefully will have some time again soon!

  • @mxgn0
    @mxgn0 3 ปีที่แล้ว

    i found it funny that ur banderole at the start contains the header "Plant Grwoth" :p

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว +1

      some easter eggs for you ^^

  • @tetsuooshima832
    @tetsuooshima832 4 ปีที่แล้ว +5

    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)

    • @PascalWiemers
      @PascalWiemers  4 ปีที่แล้ว +2

      In my next tutorials I will make sure that everything is clearly visible! Sorry for that

  • @saebr
    @saebr 4 ปีที่แล้ว

    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

    • @PascalWiemers
      @PascalWiemers  4 ปีที่แล้ว

      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

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

    where is "quixel_simple_scattering" "quixel_simple_motion" and another HDA!? i buy your patreon file but nothing at all what is this?

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

      I am legally not allowed to distribute those assets. You have to have quixel installed and setup...

  • @MaxChe
    @MaxChe ปีที่แล้ว

    10 minutes of coding scared me... Beyond my understanding...

  • @popcornfan78XD
    @popcornfan78XD 4 ปีที่แล้ว +3

    what a long tutorial

  • @arecs97
    @arecs97 3 ปีที่แล้ว

    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;
    }

    • @PascalWiemers
      @PascalWiemers  3 ปีที่แล้ว +2

      float MaxDist = chf("Max_01distance"), should be float MaxDist = chf("Max_01distance");

    • @arecs97
      @arecs97 3 ปีที่แล้ว

      @@PascalWiemers oh my bad, I've corrected this but the error still happen :c